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
|
Option Compare Database
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") & "#"
End Select
ArGument = ArGument + 1
End If
End Sub
Private Sub BRechercher_Click()
Dim SQL As String
Dim NomTable As String
Dim Compteur As Integer
NomTable = "Tbl_Materiel"
'Appel de la procedure de creation de requête
'pour le numero de série de type texte
Restriction Nz(Tserie, ""), "NumSerie", NomTable, Compteur, SQL, 0
'pour la date achat de type date (2)
Restriction Nz(TDate, ""), "DateAchat", NomTable, Compteur, SQL, 2
'Pour la marque de type texte
Restriction Nz(TMarque, ""), "Marque", NomTable, Compteur, SQL, 0
'Affecte la requête au sous formulaire
Me.Tbl_Materiel.Form.RecordSource = SQL
End Sub |
Partager