[Access] Problème de requête SQL
Résolu
LiMpi
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
LiMpi -
LiMpi -
Bonjour à tous :) ,
Voilà j'ai du apprendre Access et le VB sur le tas vite fait, et je me trouve maintenant confronté à un problème !
J'ai une requête SQL :
If tbl = "Accessories" Then
tbl = tblAccessories
DoCmd.RunSQL ("INSERT INTO '" & tbl & "' ID, Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments VALUES('', '" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
End If
Pour moi, elle est tout à fait bonne ! :p
Pourtant, j'obtiens à chaque coup cette erreur :
Runtime Error '3450'
Syntax error in query. Incomplete query clause.
J'ai essayé aussi normalement :
If tbl = "Accessories" Then
tbl = tblAccessories
DoCmd.RunSQL ("INSERT INTO '" & tbl & "' VALUES('', '" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
End If
Mais toujours le même problème.
Une idée ?
Merci;
LiMpi :]
Voilà j'ai du apprendre Access et le VB sur le tas vite fait, et je me trouve maintenant confronté à un problème !
J'ai une requête SQL :
If tbl = "Accessories" Then
tbl = tblAccessories
DoCmd.RunSQL ("INSERT INTO '" & tbl & "' ID, Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments VALUES('', '" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
End If
Pour moi, elle est tout à fait bonne ! :p
Pourtant, j'obtiens à chaque coup cette erreur :
Runtime Error '3450'
Syntax error in query. Incomplete query clause.
J'ai essayé aussi normalement :
If tbl = "Accessories" Then
tbl = tblAccessories
DoCmd.RunSQL ("INSERT INTO '" & tbl & "' VALUES('', '" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
End If
Mais toujours le même problème.
Une idée ?
Merci;
LiMpi :]
A voir également:
- [Access] Problème de requête SQL
- Acer quick access - Forum logiciel systeme
- Quick Access service ✓ - Forum PC portable
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
12 réponses
Bonjour,
je ne m'y connais pas du tout en Acces, mais en SQL oui.
Je pense que ton erreur vient d'un problème de cote.
En effet tu lui mets comme code SQL : "INSERT INTO '" & tbl & "' VALUES(...
Je pense qu'il le prends comme : "INSERT INTO " et la suite il ne le voit pas à cause des cotes.
Enfin c'est une piste.
Autre piste : le point virgule à la fin, ne devrais pas être après la cote sous cette forme : "')";) ?
A voir !
Bonne chance !
je ne m'y connais pas du tout en Acces, mais en SQL oui.
Je pense que ton erreur vient d'un problème de cote.
En effet tu lui mets comme code SQL : "INSERT INTO '" & tbl & "' VALUES(...
Je pense qu'il le prends comme : "INSERT INTO " et la suite il ne le voit pas à cause des cotes.
Enfin c'est une piste.
Autre piste : le point virgule à la fin, ne devrais pas être après la cote sous cette forme : "')";) ?
A voir !
Bonne chance !
Re toi !
Désolé j'étais parti en week end :P
Bon si ça vient de tes variables, as tu vérifié l'appel d'un variable en Acces ? Est-ce que c'est bien ' & Me.txtSerialnumber & ' ?
Avant même d'y faire appel, sont-elles créées ? contiennent-elles des informations ?
Désolé j'étais parti en week end :P
Bon si ça vient de tes variables, as tu vérifié l'appel d'un variable en Acces ? Est-ce que c'est bien ' & Me.txtSerialnumber & ' ?
Avant même d'y faire appel, sont-elles créées ? contiennent-elles des informations ?
Salut :)
Ayant des notions de SQL tout comme toi, j'ai fait les mêmes réflexions.
Je ne sais pas si tu t'y connais en PHP, mais pour moi cette requête marche un peu comme la concaténation :
echo 'Salut ' . $nom . ', Ca va ?';
La requête s'arrête après le INSERT INTO, et récupère la valeure de la variable, reprend, jusqu'au prochaine arrêt, etc...
Pour le point-virgule, j'y ai aussi pensé. Mais si je le place autre part il m'attribue un belle grosse syntax error :p
Ayant des notions de SQL tout comme toi, j'ai fait les mêmes réflexions.
Je ne sais pas si tu t'y connais en PHP, mais pour moi cette requête marche un peu comme la concaténation :
echo 'Salut ' . $nom . ', Ca va ?';
La requête s'arrête après le INSERT INTO, et récupère la valeure de la variable, reprend, jusqu'au prochaine arrêt, etc...
Pour le point-virgule, j'y ai aussi pensé. Mais si je le place autre part il m'attribue un belle grosse syntax error :p
Je pense que c'est une erreur de syntaxe pour l'insert. Si tu prends le choix de définir les champs que tu veux renseignés, il te faut des parenthèses.
Syntaxe :
INSERT INTO nom_table (Numéro Client , Nom Client , Prénom Client , Remise ) VALUES ( "160017" , "Inisan" , "Hervé" , 1 )
En gros il te manque des parenthèses pour tes champs ID, Shortname, Hardware_category ...
Test avec ça !
Syntaxe :
INSERT INTO nom_table (Numéro Client , Nom Client , Prénom Client , Remise ) VALUES ( "160017" , "Inisan" , "Hervé" , 1 )
En gros il te manque des parenthèses pour tes champs ID, Shortname, Hardware_category ...
Test avec ça !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
:(
Toujours pas !
DoCmd.RunSQL ("INSERT INTO '" & tbl & "' ( ID, Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('', '" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
Cette requête m'indique toujours "Syntax error in query. Incomplete query clause."
C'est donc bien une erreur de syntaxe ... Mais ou ?
Toujours pas !
DoCmd.RunSQL ("INSERT INTO '" & tbl & "' ( ID, Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('', '" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
Cette requête m'indique toujours "Syntax error in query. Incomplete query clause."
C'est donc bien une erreur de syntaxe ... Mais ou ?
Essai de mettre des valeurs en dur au lieu des variables .
du genre :
DoCmd.RunSQL ("INSERT INTO 'personnel' ( ID, Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('test', 'shortname', 'Hardware ', 'Screensize', 'Serialnumber', 'Brand ', 'Model ', 'Localisation', 'Hostname ', 'Comments');")
Si ca fonctionne, c'est que ce sont tes variables que tu ne récupères pas ou que la syntaxe de récupération n'est pas bonne.
Si ca fonctionne pas c'est qu'il y a un problème de cote .
du genre :
DoCmd.RunSQL ("INSERT INTO 'personnel' ( ID, Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('test', 'shortname', 'Hardware ', 'Screensize', 'Serialnumber', 'Brand ', 'Model ', 'Localisation', 'Hostname ', 'Comments');")
Si ca fonctionne, c'est que ce sont tes variables que tu ne récupères pas ou que la syntaxe de récupération n'est pas bonne.
Si ca fonctionne pas c'est qu'il y a un problème de cote .
...
Je viens de trouver une partie l'erreur (grace a toi :) )
Mais ce n'était pas ce que tu m'avais proposé.
Cette erreur là ne se trouvait ni dans la syntaxe, ni dans les variables.
En fait, l'auto incrémentation n'est apparemment pas gérée automatiquement par Access. Dans l'Insert, si je définis un nombre fixe, la requête marche parfaitement :(
Du coup j'ai remodifié ma requête de cette façon :
DoCmd.RunSQL ("INSERT INTO '" & tbl & "' (Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
Avec et sans les parenthèses qui suivent '"& tbl & "'.
Je retombe sur la même erreur. On en déduis donc que ca vient de mes variables :p
Je précise que cette requête :
DoCmd.RunSQL ("INSERT INTO tblAccessories (Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('test', 'test', 'test', 'test', 'test', 'test', 'test', 'test', 'test');")
Marche parfaitement.
Je viens de trouver une partie l'erreur (grace a toi :) )
Mais ce n'était pas ce que tu m'avais proposé.
Cette erreur là ne se trouvait ni dans la syntaxe, ni dans les variables.
En fait, l'auto incrémentation n'est apparemment pas gérée automatiquement par Access. Dans l'Insert, si je définis un nombre fixe, la requête marche parfaitement :(
Du coup j'ai remodifié ma requête de cette façon :
DoCmd.RunSQL ("INSERT INTO '" & tbl & "' (Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
Avec et sans les parenthèses qui suivent '"& tbl & "'.
Je retombe sur la même erreur. On en déduis donc que ca vient de mes variables :p
Je précise que cette requête :
DoCmd.RunSQL ("INSERT INTO tblAccessories (Shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('test', 'test', 'test', 'test', 'test', 'test', 'test', 'test', 'test');")
Marche parfaitement.
Je t'excuse, parce que j'ai résolu le problème :p
Voilà la bonne requête :
DoCmd.RunSQL ("INSERT INTO tblAccessories(shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
Donc voilà. C'est comme tu m'avais dit en fait, mais je n'utilise plus de variable pour sélectionner la table. Enfin voilà, je sais pas si c'est ca, mais maintenant ca marche :)
Par contre j'ai un autre problème :p
Voilà ma requête d'édition :
DoCmd.RunSQL "UPDATE tblAccessories SET Shortname='" & Me.Shortname & "', Hardware_category = '" & Me.Hardware_category & "', Screen_size = '" & Me.Screen_size & "', Serial_number = '" & Me.Serial_Number & "', Marque = '" & Me.Marque & "', Model = '" & Me.Model & "', Localisation = '" & Me.Localisation & "', Hostname = '" & Me.Hostname & "', Comments = '" & Me.Comments & "' WHERE ID='" & Me![ID] & "';"
Cette fois, il m'indique que le type de donnée est mauvais :/
Merci, en tout cas ! (Je mets le sujet en résolu mais bon ... voilà :p)
Voilà la bonne requête :
DoCmd.RunSQL ("INSERT INTO tblAccessories(shortname, Hardware_category, Screen_size, Serial_Number, Marque, Model, Localisation, Hostname, Comments) VALUES('" & Me.txtShortname & "', '" & Me.txtHardware & "', '" & Me.txtScreensize & "', '" & Me.txtSerialnumber & "', '" & Me.txtBrand & "', '" & Me.txtModel & "', '" & Me.txtLocalisation & "', '" & Me.txtHostname & "', '" & Me.txtComments & "');")
Donc voilà. C'est comme tu m'avais dit en fait, mais je n'utilise plus de variable pour sélectionner la table. Enfin voilà, je sais pas si c'est ca, mais maintenant ca marche :)
Par contre j'ai un autre problème :p
Voilà ma requête d'édition :
DoCmd.RunSQL "UPDATE tblAccessories SET Shortname='" & Me.Shortname & "', Hardware_category = '" & Me.Hardware_category & "', Screen_size = '" & Me.Screen_size & "', Serial_number = '" & Me.Serial_Number & "', Marque = '" & Me.Marque & "', Model = '" & Me.Model & "', Localisation = '" & Me.Localisation & "', Hostname = '" & Me.Hostname & "', Comments = '" & Me.Comments & "' WHERE ID='" & Me![ID] & "';"
Cette fois, il m'indique que le type de donnée est mauvais :/
Merci, en tout cas ! (Je mets le sujet en résolu mais bon ... voilà :p)