Bonjour,
je rencontre un problème avec une requête sql insert to.
Le but de cette requête est d'ajouter une ligne dans un tableau d'un classeur fermé. Après avoir consulter le tutos sur les classeurs fermés, j'ai écrit mon code.
voici mon problème:
cas n°1:
Lorsque je fait ma requête comme ceci:
texte_SQL = "INSERT INTO [" & NomFeuille & "$] " & "VALUES ('" & numdemande & "', '" & date1 & "', '" & nom1 & "', '" & etbls & "', '" & lieu & "', " & "'" & domaine & "', '" & typeprob & "', '" & descrip & "', '', '', '', '')"
j'obtiens ceci :
INSERT INTO [Bd$] VALUES ('2011-0120', '19/09/2011', 'Sélection du nom...', 'Etablissement...', 'Pièces...', 'Catégorie...', 'Type de problème...', '', '', '', '', '')
ici la date est un string et la variable est déclaré en tant que string, les derniers champs sont vides. Au moment de l'éxécution ceci provoque une erreur.
cas n°2:
Maintenant lorsque je fais ceci:
texte_SQL = "INSERT INTO [" & NomFeuille & "$] " & "VALUES ('" & numdemande & "', #" & date1 & "#, '" & nom1 & "', '" & etbls & "', '" & lieu & "', " & "'" & domaine & "', '" & typeprob & "', '" & descrip & "', '', '', '', '')"
j'obtiens ceci :
INSERT INTO [Bd$] VALUES ('2011-0120', #19/09/2011#, 'Sélection du nom...', 'Etablissement...', 'Pièces...', 'Catégorie...', 'Type de problème...', '', '', '', '', '')
ici la date est une Date et la variable est déclaré en tant que Date, les derniers champs sont vides. Au moment de l'éxécution ceci provoque toujours une erreur.
Pour les 2 cas l'erreur est la même :
"Erreur d'éxécution '-2147217913(8004e07)':
Type de données incompatible dans l'expression du critère."
J'ai mis les champs vides à la fin pour respecter le nombre de champ. Dans ma table j'ai 12 champs les quatres derniers seront remplis par une requête update par un autre utilisateur.
Est-ce que j'ai loupé quelques choses? Est-ce une erreur de syntaxe?
Merci de votre aide
EDIT: Il me semble utile de mettre le code complet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| Sub MAJ_Bd_2()
Dim Cn As ADODB.Connection, Fichier As String, NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
Dim numdemande As String, date1 As Date, nom1 As String
Dim etbls As String, lieu As String, domaine As String, typeprob As String
Dim descrip As String
'Définit le classeur fermé servant de base de données
Fichier = "G:\Atelier\DEMANDE INTERVENTION\DATA Intervention.xlsm"
'Nom de la feuille dans le classeur fermé
NomFeuille = "Bd"
Set Cn = New ADODB.Connection
'Les données à insérer:
With UserForm1
numdemande = numserie
'date1 = Format(.MonthView1, "dd/mm/yyyy")
date1 = CDate(Format(.MonthView1, "dd/mm/yyyy"))
nom1 = .ComboBox1.Value
etbls = .Label3.Caption
lieu = .Label4.Caption
domaine = .ComboBox2.Value
typeprob = .ComboBox3.Value
descrip = Replace(.TextBox1.Value, "'", "''")
End With
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'-----------------
'Les données doivent être indiquées dans le même ordre que les champs dans la base de données.
texte_SQL = "INSERT INTO [" & NomFeuille & "$] " & "VALUES ('" & numdemande & "', #" & date1 & "#, '" & nom1 & "', '" & etbls & "', '" & lieu & "', '" & domaine & "', '" & typeprob & "', '" & descrip & "', '', '', '', '')"
Debug.Print texte_SQL
Cn.Execute texte_SQL
Cn.Close
Set Cn = Nothing
End Sub |
Partager