Erreur de requete insert

Ptichnours Messages postés 5 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 5 avril 2006 - 5 avril 2006 à 14:03
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 - 5 avril 2006 à 17:19
Salut, voila je suis sur un petit programme pour envoyer en insertion des données d'un fichier excel à une base de données access j'ai reussi mais il me marque juste une erreur lors de l'execution de la requete. Il me signale qu'il y a une erreur dans ma requete malheureusement je ne la trouve et c'est pour cela que je m'en remet à vous.
Merci d avance.

'Déclaration des variables Générales
Dim i = 1
Dim iRef = "a"
Dim iQte = 0
Dim iDate = Date.Today


'Déclaration des variable ACCESS
Dim MyConnection As New System.Data.OleDb.OleDbConnection()
Dim nombd = "C:\Base.mdb"
Dim SQLString = "INSERT INTO Stock (Compteur,Type,CodeArticle,CodeDepot,Date,Quantite,Valorisation,StockPermanent,QteUtilisee,Soldee,TypeIdentifiant,Identifiant,NumSerie,CodeFseur,CompteurArticle,CodeDevise) Values (' ', 'E','" & iRef & "',' DP ','" & iDate & "','" & iQte & "',' ','" & iQte & "',' ',' ','E',' ',' ',' ',' ','E')"
Dim Comd As New OleDb.OleDbCommand(SQLString)


'Déclaration des variables EXCEL
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel


'Connexion à la base local ACCESS
Try
MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & nombd
MyConnection.Open()
'MessageBox.Show("Connexion OK")
Catch ex As Exception
MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
End Try


'Connexion à EXCEL
'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
wbExcel = appExcel.Workbooks.Open("C:\INVENTAIRE" & nomfic.Text & ".xls")
'wsExcel correspond à la première feuille du fichier
wsExcel = wbExcel.Worksheets(1)


'Boucle de la requete INSERT
While iRef <> ""
iRef = wsExcel.Cells(i, 1).Value
iQte = wsExcel.Cells(i, 2).Value
MsgBox(iRef & iQte)
If iRef <> "" Then
Comd.Connection = MyConnection
Comd.ExecuteNonQuery()
Comd.Dispose()
i = i + 1
End If
End While

9 réponses

cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
5 avril 2006 à 14:17
J'ai remarqué que les requêtes "INSERT INTO..." échouaient systématiquement lorsque l'on tentait d'ajouter des chaînes vides comme celà semble être le cas ici. Je conseillerais le code SQL suivant :
"INSERT INTO Stock(Type,CodeArticle,CodeDepot,Date,Quantite,StockPermanent,QteUtilisee,TypeIdentifiant,Identifiant,NumSerie,CodeFseur,CompteurArticle,CodeDevise) Values ('E','" & iRef & "',' DP ','" & iDate & "','" & iQte & "','" & iQte & "','E','E')"

De façon à n'insérer que les valeurs que l'on est en mesure de fournir dans les champs que l'on peut renseigner.
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
5 avril 2006 à 14:24
pourrais tu nous donner le messagfe d'erreur retourné ?

Rollerman
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
5 avril 2006 à 14:30
Dans mon cas, j'utilisais des requêtes "INSERT INTO..." sur des fichiers ASP d'un serveur Web IIS5. Il n'y avait pas de message d'erreur, mais les requêtes ne s'exécutaient pas (la table n'était pas mise à jour). On connaît le défaut d'ASP pour le débogage (très souvant pas de messges d'erreur).
Ptichnours Messages postés 5 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 5 avril 2006
5 avril 2006 à 14:37
Voila le message d erreur
Une exception non gérée s'est produite dans votre application. Si vous clquez continuer, l'application ignore cette erreur et essaie de continuer.

erreur de syntaxe dans l'instruction INSERT INTO

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

Posez votre question
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
5 avril 2006 à 15:05
essayes de remplacer la fin de ton code par ca:

Comd.Connection = MyConnection
'Boucle de la requete INSERT
While iRef <> ""
iRef = wsExcel.Cells(i, 1).Value
iQte = wsExcel.Cells(i, 2).Value
MsgBox(iRef & iQte)
If iRef <> "" Then
try
Comd.ExecuteNonQuery()
catch ex as exception
msgbox (ex.message)
end try
i = i + 1
End If
End While

Rollerman
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
5 avril 2006 à 15:18
Testé rapidement ça fonctionne. Attention avec les champs nommé date, souvent reconnu à tors comme fonction par Access
par ailleurs je te conseillerais de passer par Chr(32) pour exprimer une valeur nulle. Enfin la requête n'est valable que si tes variable sont définis comme les miennes en string car comme tu peu le constater, j'ai rajouté des guillemets un peu partout. Si jamais par exemple la variable "idate" et de type date, alors tu enlève simplement les guillemets.
Voilà j'espère avoir été assez clair et précis.
Tien moi au courant

Dim iRef As String
Dim iQte As String
Dim idate As String


iRef = "a28"
iQte = "32"
idate = Now
SQL = ""
SQL = " INSERT INTO Stock ( Compteur, Type, CodeArticle, CodeDepot, Datest, Quantite, Valorisation, StockPermanent, " & _
" QteUtilisee, Soldee, TypeIdentifiant, Identifiant, NumSerie, CodeFseur, CompteurArticle, CodeDevise ) " & _
" SELECT '" & Chr(32) & "' AS Expr1, '" & Chr(69) & "' AS Expr2, '" & iRef & "' AS Expr3, '" & Chr(68) & Chr(80) & "' AS Expr4, '" & idate & "' AS Expr5, '" & _
iQte & "' AS Expr6, '" & Chr(32) & "' AS Expr7, '" & iQte & "' AS Expr8, '" & Chr(32) & "' AS Expr9, '" & Chr(32) & "' AS Expr10, '" & _
Chr(32) & "' AS Expr11, '" & Chr(32) & "' AS Expr12, '" & Chr(32) & "' AS Expr13, '" & Chr(32) & "' AS Expr14, '" & _
Chr(32) & "' AS Expr15, '" & Chr(69) & "' AS Expr16;"
Ptichnours Messages postés 5 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 5 avril 2006
5 avril 2006 à 16:09
J ai essayé vos propositions mais malheuresement ca ne marche pas,
Avec ta proposition Tuning max le probleme qui se pose c'est qu'il ne me reconnait pas ma colonne compteur (la colonne est en numérotation automatique directement dans acces). Grace à la solution de olixelle il ne met plus d'erreur brutale mais met un textbox me metant la meme erreur.
Je vois dans acces qu'il y a une ligne qui existe constament blanche ne serait pas possible de faire en update sur celle ci. la aussi j'ai essayer mais ca ne marche pas la aussi erreur de syntaxe, ...
Ptichnours Messages postés 5 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 5 avril 2006
5 avril 2006 à 17:03
Voila suite a une tentative de la requete dans access il m a signaler une erreur aussi il semblerait que c le champs date qui bloque, Merci beaucoup pour votre aide ca m'a beaucoup servit pour ameliorer mon code et mes connaissances.


Dans ma base la colonne gere des date de format jj/mm/aaaa
Mais le probleme et si je fait ma requete en y mettant une date de ce format la ca bloque erreur il me met qu'il y a une erreur de syntaxe au niveau de la declaration de la colonne date. et si je choisit de ne pas inserer date il refuse car ce champs et obligatoire
Si vous avez une idée pour mon probleme de date, je suis tout Ouie car la aussi je seche
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
5 avril 2006 à 17:19
entoures ta date par des # au lieu de '
(dans un insert values)

Rollerman
Rejoignez-nous