Imbriquer deux requêtes odbc et deux DataReader ?

Résolu
Signaler
Messages postés
64
Date d'inscription
dimanche 24 juillet 2005
Statut
Membre
Dernière intervention
29 septembre 2014
-
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
-
Bonjour

quelqu'un peut-il me dire pourquoi la ligne "odbc_command1.CommandText =......." provoque une exception InvalidOperationException ?

Merci d'avance

Dim odbc_command, odbc_command1 As OdbcCommand
Dim myreader, myreader1 As OdbcDataReader
Dim valeur_table1 as String


Try
Select Case odbc_conn.State
Case ConnectionState.Broken, ConnectionState.Connecting, ConnectionState.Executing, ConnectionState.Fetching ' non utilisé
Case ConnectionState.Closed
odbc_conn.Open()
Case ConnectionState.Open ' on utilise la connection telle quelle
End Select


odbc_command = odbc_conn.CreateCommand()
odbc_command1 = odbc_conn.CreateCommand()


odbc_command.CommandText "SELECT col1 FROM Table1 aa WHERE aa.Col2 " + comboColonne2.Text + " ;"
myreader = odbc_command.ExecuteReader()


' on peut avoir aucun ou plusieurs résultats
While myreader.Read()
valeur_table1 = myreader.GetInt32(0).ToString() ' car la colonne col1 de Table1 est de type Numérique


' deuxième requête dépendant du résultat de la première odbc_command1.CommandText "SELECT col1 FROM Table2 bb WHERE bb.col2 " + valeur_table1 + " ;"


myreader1 = odbc_command1.ExecuteReader()


While myreader1.Read()
Msgbox(myreader1.GetInt32(0).ToString()) ' car la colonne col1 de Table2 est de type Numérique
End While


myreader1.Close()


End While


myreader.Close()


Catch ex As Exception


Finally
odbc_conn.Close()
End Try

1 réponse

Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
1
Salut,



La réponse est simple, la connection dans l'ADO.NET ne support pas
plusieurs commandes simultannées (contrairement aux connection VB6 et
RecordSet). Il faut créer une seconde connection ou stocker le résultat
de la première requête dans une "structure" temporaire (DataTable ou
autre ensemble de données à ta convenance).



Je crois que cette limitation doit être levée dans .NET 2



Chris

N'oubliez pas de cloturer votre post.
3