Bonjour,
Je me casse la tête à essayer de trouver pourquoi je reçois ce message à l'exécution d'une requête SQL.
J'utilise cette méthode couramment, je n'ai jamais eu ce problème !
voici le code VBA qui construit la requête:
Si l'une ou l'autre des 2 premières conditions est "true" (ou les 2), l'ordre SQL s'exécute bien, mais je reçois systématiquement le message d'erreur si la condition 3 est "true" avec ou sans les 2 autres conditions.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 Private Sub cboRech_Click() On Error GoTo cboRech_Click_err 'but: selection Participants activités à partir des critères choisis Dim sqlWhere As String, sqlCond As String, sql As String, w As String, sqlselect As String, stLinkCriteria As String sqlselect = "INSERT INTO TTempParticip SELECT * from Tparticipant " w = " WHERE " sqlWhere = "" sqlCond = "" 'vidage table TTempParticip EmptyList DoCmd.Close acForm, "FReportEvent", True ' ************ contrôle présence critères ********************* ' Critère 1 If cboAP = True Then sqlCond = "(MtPayé < 1)" If sqlWhere <> "" Then sqlWhere = sqlWhere & " AND " & sqlCond Else sqlWhere = sqlCond End If End If ' Critère 2 If cboNP = True Then sqlCond = "(A_Participé = false)" If sqlWhere <> "" Then sqlWhere = sqlWhere & " AND " & sqlCond Else sqlWhere = sqlCond End If End If ' Critère 3 If cbocode > 0 Then sqlCond = "(Code = cboCode)" If sqlWhere <> "" Then sqlWhere = sqlWhere & " AND " & sqlCond Else sqlWhere = sqlCond End If End If BuildSql: ' Build SQL Statement- si aucun argument, selection de toutes les lignes sql = sqlselect If sqlWhere <> "" Then sql = sql + w + "(" + sqlWhere + ");" End If 'Get Info to this point, based on above criteria Me.Tag = RunSql(sql) DoCmd.OpenForm "FReportEvent", , , stLinkCriteria cboRech_Click_Exit: Exit Sub cboRech_Click_err: MsgBox Error$, 64, "cboRech_Click" End Sub
Je précise que cboRech est le nom du bouton dans mon formulaire et cbocode est le nom du paramètre dans ce formulaire (au même titre que cboAP et cboNP.
Voici le contenu de mon module BasSQL:
J'espère que l'un de vous pourra trouver l'explication.....
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
28
29
30
31
32
33 Option Compare Database Option Explicit Function RunSql(strSQL As String) As Integer On Error GoTo RunSQL_TSB_ERR ' Comments : Runs a SQL string on any database ' (the SQL string must be an non-row-returning action query) ' Parameters: strSQL - SQL string to execute ' Returns : True if successful, False otherwise ' Stolen from FMS TSB Dim dbsTSchd As Database Set dbsTSchd = CurrentDb() 'DoCmd SetWarnings False MsgBox "strSQL = " & strSQL dbsTSchd.Execute strSQL dbsTSchd.Close RunSql = True RunSQL_TSB_EXIT: Exit Function RunSQL_TSB_ERR: MsgBox Error$, 64, "RunSQL()" RunSql = False Resume RunSQL_TSB_EXIT End Function
Avec mes remerciements.
Partager