Requete vb

Fermé
NYC - 26 juin 2008 à 16:01
 NYC - 26 juin 2008 à 16:56
Bonjour,
Je suis sous access 2003, j'ai réalisé un code vb qui me permet d'effectuer différente requet SQL, aprés avoir sélectionnée un enregistrement je souhaite l'inserer dans une autre table, j'ai pour cela appeller une requete INSERT, mais quand j'execute le programme un message me dissant qu'il ya a une erreur de syntaxe sur ma requete SQL; je ne vois pas ou est le probléme alos si vous pouviez m'aider...

voici le bout de code (requete selection +insert) :

Dim db As Database
Dim Rs As Recordset
Dim sql, sql2, sql3, sql4 As String
Dim n, No, ct, cD, S, A, CP, V, Sec, Imput, AC, Com, Ré, Date_D As String
Dim dde, Tel_dde, Dos, EBL, Interlo, Tel_Interlo, Date_M As String



'Récupération du numero de tel dans formulaire
N_D = Forms!FrmPrincipal!No


'Execution de la requete de sélection
Set db = CurrentDb
sql = "Select Tel_Archive.[No],* from Tel_Archive where Tel_Archive.No = " & Chr(34) & N_D & Chr(34)
Set Rs = db.OpenRecordset(sql)


'Récuperation du résultats de la requête


Rs.MoveFirst
While Not Rs.EOF

n = Rs.Fields("Numéro")
No = Rs.Fields("No")
ct = Rs.Fields("Cpt")
cD = Rs.Fields("Code D")
A = Rs.Fields("Adresse")
CP = Rs.Fields("CP")
V = Rs.Fields("Ville")
Sec = Rs.Fields("Secteur")
Imput = Rs.Fields("Imputation")
Com = Rs.Fields("Commentaires")
Ré = Rs.Fields("Résiliation")
Date_D = Rs.Fields("Date demande")
dde = Rs.Fields("demandeur")
Tel_dde = Rs.Fields("Tel Demandeur")
Dos = Rs.Fields("Dossier")
EBL = Rs.Fields("EBL")
Interlo = Rs.Fields("Interlocuteur")
Tel_Interlo = Rs.Fields("Tel Inerlocuteur")
Date_M = Now


'Création des données dans la table PDA
sql2 = "INSERT INTO Tel (Numéro, No, Cpt, Code_D, Site, Adresse, CP, Ville, Secteur, Imputation, Autre_Code, Commentaires, Résiliation, Date demande, Demandeur, Tel_Demandeur, Dossier, EBL, Interlocuteur, Tel_Inerlocuteur, Date_creation) VALUES ('" & n & "','" & No & "','" & ct & "','" & cD & "','" & S & "','" & A & "','" & CP & "','" & V & "','" & Sec & "','" & Imput & "','" & AC & "','" & Com & "','" & Ré & "','" & Date_D & "','" & dde & "','" & Tel_dde & "','" & Dos & "','" & EBL & "','" & Interlo & "','" & Tel_Interlo & "','" & Date_M & "')"
db.Execute (sql2)

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 juin 2008 à 16:31
Bonjour,

1/Tu as un espace dans ton SQL et il n'aime pas du tout!
INSERT INTO Tel (Numéro, No, Cpt, Code_D, Site, Adresse, CP, Ville, Secteur, Imputation, Autre_Code, Commentaires, Résiliation, Date demande, Demandeur, Tel_Demandeur...

2/ces espaces dans le nom de champs sont à supprimer et à remplacer par des underscores dans la structure de ta base
(de m^me que les accents, caractères spéciaux, apostrophes, guillemets, points...)

Tel_dde = Rs.Fields("Tel Demandeur")
Dos = Rs.Fields("Dossier")
EBL = Rs.Fields("EBL")
Interlo = Rs.Fields("Interlocuteur")
Tel_Interlo = Rs.Fields("Tel Interlocuteur")
etc.

3/ Tu as des dates issues de variables? attention, il estt souvent nécessaire (j'ai pas regardé de trop le code) de les encadrer par des #

4/Tes déclarations: par ex
Dim sql, sql2, sql3, sql4 As String
seul sql4 est déclaré string, les autres sont considérées comme variant
il faut écrire
dim sql1 as string, sql2 as string....

Michel
0
Merci pour ces explications
ça marche
0