Insertion donnée base access

Triptek Messages postés 17 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 15 septembre 2008 - 15 sept. 2008 à 13:07
Triptek Messages postés 17 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 15 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.

Merci d'avance

9 réponses

Triptek Messages postés 17 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 15 septembre 2008
15 sept. 2008 à 13:08
Excusez la mise en page, le copier coller à foutu un peu le bordel et je ne peux pas éditer ^^
0
JPGVB Messages postés 96 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 10 mars 2011 2
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"

je n'ai pas lu tout le reste, essaie déjà ça.
0
Triptek Messages postés 17 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 15 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 ^^

Merci de ton aide
0
JPGVB Messages postés 96 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 10 mars 2011 2
15 sept. 2008 à 15:28




0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Triptek Messages postés 17 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 15 septembre 2008
15 sept. 2008 à 15:35
Bon ben je continue à chercher en attendant mais c'est pas gagner! Personne n'as d'autres idées?
0
JPGVB Messages postés 96 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 10 mars 2011 2
15 sept. 2008 à 15:37




0
JPGVB Messages postés 96 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 10 mars 2011 2
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.
0
Triptek Messages postés 17 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 15 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...
0
Triptek Messages postés 17 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 15 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!
0
Rejoignez-nous