Triptek
Messages postés17Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention15 septembre 2008
-
15 sept. 2008 à 13:07
Triptek
Messages postés17Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention15 septembre 2008
-
15 sept. 2008 à 16:06
Bonjour,
J'ai un petit problème quant à l'insertion de donnée dans ma base access. Il me donne une erreur du type "point virgule absent dans la requête SQL.
' Declaration de la variable pour la connection
Private cnx
As OleDbConnection
' Declaration de la variable pour la commande
Private cmd
As OleDbCommand
' Declaration de la variable pour le dataadapter
Private dta
As OleDbDataAdapter
' Decalaration de la variable pour le dataset
Private dts
As
New DataSet
' Declaration de la variable pour la requˆte
Private sql
As
String
' Declaration de la variable pour le datatable
Private dtt
As
New DataTable
' Declaration de la variable pour le datarow
Private dtr
As DataRow
' Declaration de la variable pour le nø d'enregistrement
Private rownum
As
Integer
' Declaration de la variable pour la connectionstring
Private cnxstr
As
String
' Declaration de la variable pour le commandbuilder
Private cmdb
As OleDbCommandBuilder
' Ouverture de la connectioncnxstr "provider microsoft.jet.oledb.4.0 ; data source = mabase.mdb"
cnx =
New OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()
Dim serv
As
String
serv =
"SRVAPPS"FileOpen(1,
".\temp.txt", OpenMode.Input)
sql =
"INSERT INTO " & serv &
"('Lecteur C') VALUES(10) WHERE No semaine=1"
' Cr‚ation de la commande et on l'instancie (sql)
cmd =
New OleDbCommand(sql)
' Cr‚ation du dataadapter (dta) et on l'instancie (cmd)
dta =
New OleDbDataAdapter(cmd)
' On instancie la commande (cmd) … la connection (cnx)
cmd.Connection() = cnx
' On charge le dataset (dts) grƒce … la propri‚t‚ fill du dataadapter (dta)
dta.Fill(dts, serv)
' On charge la table datatable (dtt) grƒce … la propri‚t‚ dataset (dts)
dtt = dts.Tables(serv)
Bizarement avec le même code et uène requête "SELECT ..." sa marche, aucun erreur. Quelqu'un aurait-il une idée? L'erreur se met au niveau du "dta.Fill(dts,serv)" J'utilise Visual Basic Express 2008 pour info.
JPGVB
Messages postés96Date d'inscriptionmardi 29 mars 2005StatutMembreDernière intervention10 mars 20112 15 sept. 2008 à 14:44
Salut,
le point-virgule se met à la fin d'une chaine sql (mais en vb6+access, ça fonctionne sans), par contre ton champ No semaine ne doit pas être écrit comme ça à cause de l'espace, il faut des crochets:
sql = "INSERT INTO " & serv & "('Lecteur C') VALUES(10) WHERE [No semaine]=1"
Triptek
Messages postés17Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention15 septembre 2008 15 sept. 2008 à 15:05
Effectivement, y'a jamais de point virgule, j'en ai jamais mis et sa marche, en mettant les crochet comme tu m'as dit sa ne marche pas! Toujours cette erreur de point virgule. Je fais que de tourner en rond ^^
JPGVB
Messages postés96Date d'inscriptionmardi 29 mars 2005StatutMembreDernière intervention10 mars 20112 15 sept. 2008 à 15:41
Désolé pour les messages vides mais mon texte n'a pas suivi ???
Tente de metttre Lecteur C entre crochets plutot que apostrophes.
Verifie que serv ne contienne pas un point virgule ou autre signe qui pose pb.
Si ça marche toujours pas fais copier/coller sur la chaine sql générée et poste la ds le forum.
Triptek
Messages postés17Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention15 septembre 2008 15 sept. 2008 à 15:50
Même avec les crochet sa marche pas, je vais me pencher sur une autre solution. Quand j'envoi la requête SELECT pour lire mes ligne, j'accède à la valeur avec database.Rows().Item(), p't'être qu'il y a un moyen d'écrire et non de lire...
Triptek
Messages postés17Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention15 septembre 2008 15 sept. 2008 à 16:06
Sa y'est! Houra! Alors j'ai changer mon INSERT en UPDATE pour commencer puisque j'ai déjà une valeur dans mon champs, c'est en fait une modification et non une insertion que je voulais faire ^^
sql = "UPDATE " & serv &
" SET [Lecteur C]=(10) WHERE [No semaine]=(1)"
Ensuite j'ajoute mon oledbConnection a la commande :
cmd = New OleDbCommand(sql, cnx)
3 longues heures pour un ridicule UPDATE, y'en à qui vont pas être content... Merci quand même!