Ptichnours
Messages postés5Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention 5 avril 2006
-
5 avril 2006 à 14:03
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDerniè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
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 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.
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 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és5Date d'inscriptionsamedi 30 avril 2005StatutMembreDerniè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 ?
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 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
Tuning Max
Messages postés314Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention31 août 20061 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és5Date d'inscriptionsamedi 30 avril 2005StatutMembreDerniè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és5Date d'inscriptionsamedi 30 avril 2005StatutMembreDerniè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