Remplir une table a travers les données de datareader
saadouli7
Messages postés36Date d'inscriptionmardi 26 avril 2011StatutMembreDernière intervention18 novembre 2011
-
19 mai 2011 à 10:26
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 2013
-
20 mai 2011 à 15:17
bonjour
j'ai le probleme suivant:
j'ai une table "table1" access dont je veut le remplir à travers des données extraits d'une autre table "enseignement" . j'ai ecris le code suivant:
cnxstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\compaq\Desktop\Emploi.mdb;"
cnx = New OleDb.OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()
sql2 = " select jour_,salle_,HD from Enseignements where CycleAnnée_=" & ComboBox2.SelectedItem & " and filière_='" & ComboBox1.SelectedItem & "' and Groupe=" & ListBox1.SelectedItem
cmd2 = New OleDb.OleDbCommand
cmd2.CommandText = sql2
cmd2.Connection() = cnx
Dim Reader2 As OleDb.OleDbDataReader = cmd2.ExecuteReader
If (Reader2.HasRows) Then
While Reader2.Read()
sql3 = "insert into Table1 (jour_,salle_,HD) values(myReader2.GetInt16(0) , myReader2.GetString(1) , myReader2.GetInt16(2)) "
cmd3.CommandText = sql3
cmd3.Connection() = cnx
Dim dr As OleDb.OleDbDataReader = cmd.ExecuteReader
End While
End If
Reader2.Close()
l'execution passe sans message d'erreur. et j'ai bien verifier que ma datareader"reader2" contient des données, mais la table "Table1" reste vide je sais pas où le probleme. est ce que quelq'un peut m'aider
merci
A voir également:
Remplir une table a travers les données de datareader
saadouli7
Messages postés36Date d'inscriptionmardi 26 avril 2011StatutMembreDernière intervention18 novembre 2011 20 mai 2011 à 12:20
bonjours
oui tu as raison j'ai corrigé cette faute.
mon nouveau code est:
While Reader2.Read()
sql3 = "insert into Table1 (jour_,salle_,HD) values('" & Reader2.GetValue(0) & "' ,'" & Reader2.GetValue(1) & "' ,'" & Reader2.GetValue(2) & "')"
cmd3 = New OleDb.OleDbCommand
cmd3.CommandText = sql3
cmd3.Connection() = cnx
cmd3.ExecuteNonQuery()
End While
mais il reste encore un probleme à l'execution la table table1 se remplit correctement avec les données selectionés mais j'ai toujours un msg d'erreur
au niveau de cmd.ExecuteNonquerry: "Type de données incompatible dans l'expression du critère".
je crois que cet erreur concerne la partie & Reader2.GetValue(2) & qui correspont à la valeur de HD qui est declaré de type réel simple.j'ai essayé de remplacé getvalue par getFloat mais ça resta la meme chose
remarque: jour_ et salle sont respectivement declarés de type entier est texte
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 20 mai 2011 à 14:29
Re,
à vue de nez il y a un souci pour certains enregistrements uniquement, du fait que ta table est bien remplie (ou du moins remplie jusqu'à ce que l'exception soit levée).
La valeur du champ HD dans ta table Enseignements est nullable ?
Si oui, il faut tester si la valeur est différentes de DBNull.Value, dans le cas contraire utiliser une valeur par défaut. Ou alors le remplacer par null (valeur directe, pas de quote autour) si ton champ est également nullable sur ta Table1.
saadouli7
Messages postés36Date d'inscriptionmardi 26 avril 2011StatutMembreDernière intervention18 novembre 2011 20 mai 2011 à 14:51
salut,
concernant HD j'ai indiqué qu'il est de type réel simple il n'est pas nullablle.
à chaque apparition de l'exeption je consulte ma table table1 je remarque qu'elle est bien remplit et sans aucun manque de données . mon probleme reste toujour concernant ce message d'erreur .j'arrive pas à determiner d'où le problème
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 20 mai 2011 à 15:17
Avi, j'avais zappé que tu avais donné le typage de HD ;)
Essaie alors de faire sauter les quotes autour de cette valeur dans ta requête.
Je sais que l'écriture normale pour une valeur numérique c'est sans quote, mais que certains SGBD l'acceptent quand même, donc ça se tente (fais attention au séparateur décimal par contre, le '.' (point) est fortement recommandé pour ne pas dire obligatoire. Or VB risque d'appliquer celui de ta culture soit le ',' (virgule)).