Problème d'intégration de fonction dans expression SQL
Bonjour,
J'ai lu dans un bouquin que l'on pouvait intégrer des fonctions dans une expression SQL pour éviter les empilages de Iff.
J'essaye de le faire mais cela ne marche pas. J'ai un message d'erreur qui me dit que "Type de donnée incompatible dans l'expression du critère.
Le code de construction de l'expression SQL :
Code:
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
| 'Sélection et conditions principales
SQl = "INSERT INTO " & Table_REP & " ( REP_Num_Bis, REP_Select_2 )" & _
" SELECT REPertoire.REP_Num, True AS Expr1" & _
" FROM (" & Table_MET & " INNER JOIN REPertoire ON " & Table_MET & ".MET_Num_Bis = REPertoire.REP_Actprinc) INNER JOIN " & Table_COD & " ON REPertoire.REP_Codepostal = " & Table_COD & ".COD_Code" & _
" WHERE (((" & Table_MET & ".MET_Select)=True) AND ((" & Table_COD & ".COD_Select)=True) AND ((REPertoire.REP_Effectif)>=" & Me.Ef_mini & ") AND ((REPertoire.REP_Effectif)<=" & Me.Ef_Maxi & ")" & _
" AND ((REPertoire.REP_Actif)=True) AND ((REPertoire.REP_Client)=True)" & _
" AND ((IIf(IsNull(REPertoire.REP_Datecrea)=True,'" & Me.Date_mini & "',REPertoire.REP_Datecrea))>=#" & Me.Date_mini & "# And (IIf(IsNull(REPertoire.REP_Datecrea)=True,'" & Me.Date_mini & "',REPertoire.REP_Datecrea))<=#" & Me.Date_maxi & "#)"
'Conditions "type de relance"
Select Case Me.S_Relance
Case 1
SQl = SQl & " AND ((REPertoire.REP_Relance_Fax)=False) AND ((Verif_Numero(REPertoire.REP_Fax))=True)"
Case 2
SQl = SQl & " AND ((REPertoire.REP_Relance_Mail)=False) AND ((Verif_Numero(REPertoire.REP_Mail))=True)"
Case 3
SQl = SQl & " AND ((REPertoire.REP_Relance_Tel)=False) AND ((Verif_Numero(REPertoire.REP_Tel1))=True)"
Case 4
SQl = SQl & " AND ((REPertoire.REP_Relance_Courrier)=False) AND ((Verif_Numero(REPertoire.REP_Adres))=True)"
End Select
'Txt_Var = Choose(Me.S_Relance, "REP_Relance_Fax", "REP_Relance_Mail", "REP_Relance_Tel", "REP_Relance_Courrier")
'SQl = SQl & " AND ((REPertoire." & Txt_Var & ")=False)"
'Txt_Var = Choose(Me.S_Relance, "REP_Fax", "REP_Mail", "REP_Tel1", "REP_Adres")
'SQl = SQl & " AND ((REPertoire." & Txt_Var & ") Is Not Null)"
'((Verif_Numero([REP_Fax]))=True)
'Conditions "Options"
If Me.CAPEB = -1 Then SQl = SQl & " AND ((REPertoire.REP_Capeb)=True)"
If Me.Email = -1 Then SQl = SQl & " AND ((REPertoire.REP_Mail) Is Null)"
If Me.Fax = -1 Then SQl = SQl & " AND ((REPertoire.REP_Fax) IS null)"
'Fin SQL de sélection
SQl = SQl & ");"
DoCmd.SetWarnings False 'désactive les messages d'info auto
DoCmd.RunSQL SQl
DoCmd.SetWarnings True 'active les messages d'info auto |
Le code de la fonction que souhaite intégrer :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Function Verif_Numero(Numero As String)
Dim Retour As Boolean
Select Case Numero
Case Null
Retour = False
Case ""
Retour = False
Case "0000000000"
Retour = False
Case "0000" & "*"
Retour = False
Case Else
Retour = True
End Select
Verif_Numero = Retour
End Function |
Merci de votre aide