Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insertion d'une variable dans une requête SQL

12 réponses
Avatar
Eric
Bonjour,
Je souhaite ajouter une variable dans une requête d'insertion. LE problème
est que j'ai toujours une erreur de syntaxe si je mets des ' ou " autour de
la variable (avec des esperluètes évidemment pour concaténer), ou la
variable est prise pour un champ si je ne mets rien.

If (Len([Commentaire compte]) = "") Then
commentaire_archivage = [Commentaire compte] & "Compte supprimé (1)
le " & Date
Else
commentaire_archivage = [Commentaire compte] & Chr(13) & Chr(10) &
"Compte supprimé (2) le " & Date
End If

DoCmd.SetWarnings False 'désactive la demande de confirmation pour
l'exécution de la requête SQL
DoCmd.RunSQL "INSERT INTO [Comptes effacés] ( Compte, [Compte test],
client, serveur, [Mot de passe], [option vérification], [Adresse e-mail],
Offre, etat, ' & commentaire_archivage & ', [date expiration] ) SELECT
Comptes.Compte, Comptes.[Compte test], Comptes.client, Comptes.serveur,
Comptes.[Mot de passe], Comptes.[option vérification], Comptes.[Adresse
e-mail], Comptes.Offre, Comptes.etat, [Commentaire compte], Comptes.[date
expiration] FROM Comptes WHERE (((Comptes.compte)='" & [Compte] & "'));"
DoCmd.SetWarnings True 'réactive la demande de confirmation

Je précise que j'ai bien défini ma variable par Dim commentaire_archivage As
String.

Je voudrais que la varaible commentaire_archivage remplace la valeur du
champ [Commentaire compte] lors de l'insertion.

2 réponses

1 2
Avatar
Eric F
Je crois que je vais devoir le faire en plusieurs fois comme le suggère Eric
(un autre !). Car normalement, pour insérer des données, il faut rajouter un
VALUES après l'INSERT INTO. Pour l'instant, je vais le mettre à la main
avant copie des données
Avatar
Gelos64
L'anomalie provient de l'inversion entre le champ et sa valeur

en première partie derriere INSERT INTO on met les noms de champs
En deuxième partie derriere SELECT on met les valeurs (même nombre de
champs)

Dans ton cas:

INSERT INTO [Comptes effacés] ( Compte, ... ,
[Commentaire compte], Comptes.[date expiration] )
SELECT Comptes.Compte, ... , '" & commentaire_archivage & "',
Comptes.[date expiration] FROM Comptes WHERE (((Comptes.compte)='" &
[Compte]& "'));

(Attention au guillemet)


"Eric" a écrit dans le message de
news:OPr5$
Avec un msgbox, la requête semble bonne.





1 2