Salut,
Je suis en train de générer des numéros dans une table pour des données importées depuis une ancienne base.
J'utilise une requête INSERT INTO passée en Docmd.runSQL pour insérer le numéro une fois qu'il est calculé.
Mais bizarrement, j'ai un message d'erreur indiquant qu'il manque un point-virgule à la fin de la requête (alors qu'il y en a bien un).
Voici le code:
Le débogueur s'arrête sur l'instruction docmd.runsql strsql2 en indiquant qu'il manque un point-virgule.
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
23
24
25
26
27 ublic Sub creerNumInscription() 'Créé un numéro d'inscription à partir de la date de première candidature Dim strsql As String, strSQL2 As String, tmpNumInscription As String, rst As DAO.Recordset, bd As DAO.Database, rst2 As DAO.Recordset Set bd = CurrentDb strsql = "SELECT P.numPErsonne,C.dateCandidature FROM tPErsonne P INNER JOIN tCandidature C ON P.numPErsonne=C.numPersonne ORDER BY C.dateCandidature ASC" Set rst = bd.OpenRecordset(strsql) rst.MoveFirst While Not rst.EOF tmpNumInscription = Year(rst("datecandidature")) Set rst2 = bd.OpenRecordset("SELECT numInscription FROM tPersonne WHERE INSTR(numInscription," & tmpNumInscription & ")>0;") If rst2.RecordCount > 0 Then rst2.MoveLast tmpNumInscription = CStr(rst2("numInscription") + 1) Else tmpNumInscription = tmpNumInscription & "0001" End If Debug.Print tmpNumInscription strSQL2 = "INSERT INTO tPersonne(numInscription) VALUES('" & tmpNumInscription & "') WHERE numPersonne=" & rst("numPersonne") & ";" Debug.Print strSQL2 DoCmd.RunSQL strSQL2 rst.MoveNext Wend Set rst2 = Nothing Set rst = Nothing Set bd = Nothing End Sub
Pourtant, ce point-virgule existe, j'ai vérifié avec un debug.print.
Voici le résultat de la trace :
Que faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 call creernuminscription 19870001 INSERT INTO tPersonne(numInscription) VALUES('19870001') WHERE numPersonne=195;
Partager