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 Form_Load()
Dim SQL2 As String
Dim db As DAO.Database
Dim rs01 As DAO.Recordset 'recordset pour les enregistrements
Dim rs02 As DAO.Recordset 'recordset pour les enregistrements
Dim rs02Filtre As DAO.Recordset 'recordset pour les enregistrements
Dim BytPosition() As Byte 'pour stocker le bookmark
Dim tnummic As String
Dim tsubnummic As String
Dim strList2 As String
strList2 = "MIC;Pims;Greffe;Descriptif;Date;Local;IniLab;Mouvement" 'initialisation des titres des colonnes
Set db = CurrentDb()
SQL2 = "SELECT PAC.ID AS PAC_ID, PAC.NumPIMS, PAC.NumMIC, PAC.NumSousDossierMIC, PAC.NumGref, PAC.Descriptif, PAC.IDDate, Dates.ID AS Dates_ID, Dates.Date, Dates.[In], Dates.IDLocal, Dates.IDIniLab " ', (PAC!NumMIC) & "-" & (PAC!NumSousDossierMIC) AS MIC
SQL2 = SQL2 & "FROM Dates INNER JOIN PAC ON Dates.ID = PAC.IDDate "
SQL2 = SQL2 & "ORDER BY Dates.Date;"
Set rs02 = db.OpenRecordset(SQL2, dbOpenDynaset) 'initialise le rs sur les 2 tables principales et trie sur la date
rs02.MoveFirst 'on se met au début du rs
rs02.FindFirst ("Dates.[In] = 2") 'on cherche le premier enregistrement qui est en prêt
While Not rs02.EOF 'tant qu'on n'est pas à la fin du rs on continue
BytPosition = rs02.Bookmark 'on bookmark la position de cet enregistrement pour y revenir si besoin
'ici on stocke des valeurs qui vont servir pour filtrer le rs
tnummic = rs02.Fields("PAC.NumMIC")
tsubnummic = rs02.Fields("PAC.NumSousDossierMIC")
tdate = rs02.Fields("Dates.Date")
'on filtre le rs02 sur base des 3 champs, on recherche uniquement les Dates.[In] =1 pour une date ultérieure
rs02.Filter = "((PAC.NumMIC) = " & tnummic & " And (PAC.NumSousDossierMIC) = " & tsubnummic & " And (Dates.Date) > " & tdate & " And (Dates.[In] = " & 1 & "))"
Set rs02Filtre = rs02.OpenRecordset
If rs02Filtre.RecordCount > 0 Then 'il y a des données dans le rs filtré alors c'est qu'on a un echantillon In de date supérieure pour la PAC
'on laisse tomber le out courant et on recherche le sur out suivant
Else 'on est à la fin du fichier
'on revient alors à l'enregistrement
rs02.Bookmark = BytPosition
'et on récolte les données à afficher dans la liste
For i = 1 To 12
strList2 = strList2 & rs02.Fields(i)
Next i
End If
rs02.Filter = ""
rs02.FindNext ("Dates.[In] = 2")
Wend
SQL2 = ""
rs02.Close
rs02Filtre.Close
db.Close
Set rs02Filtre = Nothing
Set rs02 = Nothing
Set db = Nothing
End Sub |
Partager