Bonjour à tous,
J'ai un problème de syntaxe dans l'utilisation de la fonction FindFirst (ou FindLast ou autre Find...).
J'ai une table [T_CHECK-LIST], avec deux champs [C-L_CHAMP1] et [CL_CHAMP2] identiques. Lorsque j'utilise la fonction FindFirst pour trouver un enregistrement dans le champ C-L_CHAMP1, le code suivant me renvoie une erreur
Le message d'erreur est sur la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Sub testRecordExist() Dim dbThisDB As DAO.Database 'Cette base de données Dim tblTCL As DAO.Recordset 'Table T_CHECK-LIST Dim strEnr As String 'Enr1 Dim strCritere As String 'On Error GoTo errHandler strEnr = "EnregistrementTest" Set dbThisDB = CodeDb 'Définition de cette BDD Set tblTCL = dbThisDB.OpenRecordset("T_CHECK-LIST", dbOpenDynaset) 'Définition de la table "T_CHECK-LIST" strCritere = "C-L_CHAMP1 LIKE " & Chr(34) & strEnr & Chr(34) tblTCL.FindFirst strCritere MsgBox tblTCL.NoMatch errHandler: tblTCL.Close dbThisDB.Close Set tblTCL = Nothing Set dbThisDB = Nothing End Subet dit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part tblTCL.FindFirst strCritere
Je me suis pas mal pris la tête sur ce problème, j'ai cherché dans le forum, notammentErreur d'exécution '3070' :
Le moteur de la base de données Microsoft Access ne reconnaît pas
« C » en tant que nom de champ ou expression correcte.
https://www.developpez.net/forums/d1...070-findfirst/
https://www.developpez.net/forums/d5...axe-findfirst/
ainsi que dans la cours sur DAO, et ailleurs sur le net, mais sans succès.
Je me suis rendu compte que le problème vient du " - " ("tiret du 6" ou "moins") entre le "C" et le "L" du nom du champ [C-L_CHAMP1], mais je n'ai pas trouvé comment le résoudre. J'ai essayé avec des chr(34) pour ", chr(45) pour -, mais rien n'y a fait.
Finalement, j'ai changé le nom du champ pour retirer le "-", et le code suivant fonctionne très bien :
Donc le problème vient bien de la syntaxe et du "-", mais je ne comprends pas comment l'éviter sans supprimer ce "-" du nom de mon champ.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Sub testRecordExist() Dim dbThisDB As DAO.Database 'Cette base de données Dim tblTCL As DAO.Recordset 'Table T_CHECK-LIST Dim strEnr As String 'Enr1 Dim strCritere As String 'On Error GoTo errHandler strEnr = "EnregistrementTest" Set dbThisDB = CodeDb 'Définition de cette BDD Set tblTCL = dbThisDB.OpenRecordset("T_CHECK-LIST", dbOpenDynaset) 'Définition de la table "T_CHECK-LIST" strCritere = "CL_CHAMP2 LIKE " & Chr(34) & strEnr & Chr(34) tblTCL.FindFirst strCritere MsgBox tblTCL.NoMatch errHandler: tblTCL.Close dbThisDB.Close Set tblTCL = Nothing Set dbThisDB = Nothing End Sub
Quelqu'un a-t-il une idée s'il vous plaît ? Quel est le problème avec le "-" ? et comment l'éviter ?
Partager