Problème avec les requetes "insert into ..." en vba

cs_hasen Messages postés 246 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 29 décembre 2008 - 22 avril 2004 à 11:38
cs_hasen Messages postés 246 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 29 décembre 2008 - 22 avril 2004 à 15:27
Je ne comprend pas du tout ce qui arrive.
J'ai deux enormes erreurs, et je ne comprend pas pourquoi ca ne marche pas!
Voici la premiere avec le code :

Set db = CurrentDb()
Set rs = db.OpenRecordset("bddavid", dbOpenDynaset)
rs.MoveFirst
While Not rs.EOF
If Not IsNull(rs("Activite")) Then
If ExistePasActivite(rs("Activite")) Then 'si l activité n est pas dans la table Activité
If IsNull(rs("APENAF")) Then
APENAF = ""
Else
APENAF = rs("APENAF")
End If
Activite = rs("Activite")
MsgBox "L activité est : " + Activite
DoCmd.RunSQL "insert into Activité (NomActivite, APENAF) values (Activite, APENAF)"
End If
End If
If ExistePasAdresse(rs("Adr1Part"), rs("VillePart")) Then 'si l adresse n existe pas encore dans la table Adresse
If IsNull(rs("Adr1Part")) Then
adr1 = ""
Else
adr1 = rs("Adr1Part")
'MsgBox "adr1 = " + adr1
End If
If IsNull(rs("Adr2Part")) Then
adr2 = "rien"
Else
adr2 = rs("Adr2Part")
'MsgBox "adr2 = " + adr2
End If
If IsNull(rs("Adr3Part")) Then
adr3 = ""
Else
adr3 = rs("Adr3Part")
End If
If IsNull(rs("CPPart")) Then
cp = 0
Else
cp = rs("CPPart")
End If
ville = rs("VillePart")
If IsNull(rs("Dep")) Then
departement = 0
Else
departement = rs("Dep")
End If
If IsNull(rs("Pays")) Then
Pays = "FRANCE"
Else
Pays = rs("Pays")
End If
DoCmd.RunSQL "insert into Adresse (AdressePartie1, AdressePartie2, AdressePartie3, CodePostal, Ville, Pays, Departement) values (adr1, adr2, adr3, cp, ville, Pays, departement)"
End If
rs.MoveNext
Wend

En gros, je regarde dans une table de base les valeurs de l'activité de l'entreprise, puis je crée, s'elle n'existe pas, l'activité dans la table Activité. Puis je fait la meme chose pour l'adresse, en vérifiant a chaque fois si le champs n'est pas vide.
Mais le problème est que pour le premier passage dans l'activité, tout marche très bien, il me crée une ligne dans la table, bref tout va bien, mais au deuxième passage, lorsqu'il devrait m recréer une activité avec un nom différent, il me recrée la meme activité!
Mais ce n'est pas tout : en ce qui concerne la requete "insert into ...", ca marche a peu pres pour l'activité, mais pour l'adresse, il me demande a chaque fois la valeur des variables (comme adr1, adr2, adr3, etc...), alors que je leur ai assigné une valeur juste avant.
Si vous voyez qq chose a faire, a changer, n'importe quoi n'hésiter aps, car c'est vraiment à en devenir fou!
Merci de m'eviter la folie...
Hasen

2 réponses

yami_no_ookami Messages postés 165 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 16 octobre 2005 2
22 avril 2004 à 14:50
n'oublie pas que SQL est une chaine de caracteres
si tu mets "values(a,b,c)" il enregistrera les chaines "a","b" et "c" dans les champs.

si a,b et c sont des variables fais plutot

"values(" + a + "," + b + "," + c + ")"
0
cs_hasen Messages postés 246 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 29 décembre 2008 2
22 avril 2004 à 15:27
Je ne comprend pas ca ne marche pas, pour la requete de Activité, dès la première activité il me met une erreur "Erreur de synthaxe (operateur absent dans l'expression 'Ingénierie bois'." (ca correspond au nom de l'activité evidement).
Donc j'ai essayé l'autre requete pour Adresse, mais encore une erreur, erreur de type. Pourtant, j'ai bien vérifier avec ma table, les données sont bien du même type, alors je commence un peu a perdre espoir.
En tout cas merci pour l'idée, si tu en a encore, n'hesite pas...
0
Rejoignez-nous