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
| Private Sub Restriction(ByVal Chaine As String, _
ByVal ChamP As String, ByVal matable As String, _
ByRef ArGument As Integer, ByRef ClausE As String, ByRef astype As Integer)
'Choix du type : 0 pour un string, 1 pour un numérique ou booleen
' 2 pour une date
'Construit la requête au premier passage
If ArGument = 0 Then
'Elimine les espaces
matable = Trim$(matable)
'Si table est une sous requete :(commence par select)
If InStr(1, matable, "SELECT ", vbTextCompare) <> 0 Then
'Enleve le ; s'il existe
If Right(matable, 1) = ";" Then _
matable = Left(matable, Len(matable) - 1)
'encadre la sous requete avec des ()
ClausE = "SELECT * FROM (" & matable & ")"
Else
ClausE = "SELECT * FROM " & matable
End If
End If
If Chaine <> "" Then
If ArGument = 0 Then
'Ajoute le WHERE
ClausE = ClausE & " WHERE "
' Ajout de l'opérateur "AND" si le where existe déja
Else: ClausE = ClausE & " AND "
End If
Select Case astype
Case 0 'Ajoute le critère si le type est texte
ClausE = ClausE & ChamP & " like " & Chr(34) & Chaine & "*" & Chr(34)
Case 1 'Ajoute le critère si le type est Numerique
ClausE = ClausE & ChamP & "=" & Chaine
Case 2 'Ajoute le critère si le type est date
ClausE = ClausE & ChamP & "=#" & Format(Chaine, "mm/dd/yyyy") & "#"
Case 3 'Ajoute le critère si le type est texte pour une zone texte
ClausE = ClausE & ChamP & " like " & Chr(34) & "*" & Chaine & "*" & Chr(34)
End Select
End If
Next
ClausE = ClausE & ")"
ArGument = ArGument + 1
End If
End Sub
Private Sub Commande12_Click()
Dim SQL As String
Dim NomRequete As String
Dim Compteur As Integer
NomRequete = "R1" R1 est une requête
'Appel de la procedure de creation de requête
'pour le Nom de l'Auteur de type texte, liste déroulante
Restriction Nz(Texte0, ""), "NomAuteur", NomRequete, Compteur, SQL, 0
'pour le Prénom de l'Auteur de type texte, liste déroulante
Restriction Nz(Texte5, ""), "[Prénom Auteur]", NomRequete, Compteur, SQL, 0
'Pour la Nationalité de type texte, zone de texte
Restriction Nz(Texte7, ""), "Nationalité", NomRequete, Compteur, SQL, 3
'Affecte la requête au sous-formulaire
Me.Fille2.Form.RecordSource = SQL
End Sub |
Partager