Imbriquer deux requêtes odbc et deux DataReader ?

Résolu
chris_brabant Messages postés 64 Date d'inscription dimanche 24 juillet 2005 Statut Membre Dernière intervention 29 septembre 2014 - 13 sept. 2005 à 14:08
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 - 13 sept. 2005 à 16:09
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

cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
13 sept. 2005 à 16:09
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
Rejoignez-nous