Bonjour à tous,
Je vous explique le contexte : je souhaite, lors de la consultation de données dans un formulaire, avoir la possibilité d'insérer dans ma table l'enregistrement actif, mais seulement les champs non null, à la suite de l'appuie sur un bouton.
Ce qui marche : je crée une variable qui va contenir la liste des champs non null et une variable qui va contenir la liste des valeurs associées aux champs.
Voici le code qui me permet de créer ces variables :
Ensuite je crée la requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim Champs As String, Valeur As String, requete As String If Not IsNull([champs]) Then Champs = "champs" Valeur = "'" & Me![champs] & "'" End If If Not IsNull([champs2]) Then Champs = Champs & ", champs2" Valeur = Valeur & ", '" & Me![champs2] & "'" End If
Ce qui ne marche pas : evidemment l'execution de la requête avec le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part requete = "INSERT INTO maTable (" & Champs & ") VALUES (" & Valeur & ");"
Voici l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.RunSQL (requete)et l'expression en question est le contenu de la variable ValeurErreur d'execution '3075'
Erreur de syntaxe (opérateur absent) dans l'expression :
Bien sur avant de poster sur le forum, j'ai fait les tests evident à savoir afficher les différentes variables dans une MsgBox pour vérifier la syntaxe et tout me parait clair...
Je vous joins une copie d'écran des différentes variables au cas ou je ne serais pas bien réveillé :p
Merci d'avance
Edit : je viens de tester sur différents enregistrements et le résultat est plutôt surprenant : sur certains enregistrements aucun problème, mon "insert" marche nikel alors que sur d'autres pas moyen...
J'ai alors pensé que cela pouvait provenir de la taille des variables mais mes tests me prouvent le contraire... Je suis vraiment perdu![]()
Partager