Bonjour,
alors voilà: j'ai un formulaire de saisie de demande concernant des interventions techniques. A la mise à jour d'un champ, je lance une procédure pour vérifier si il y a d'autres demandes similaires (entre d-5 et d+5). Le code suivant fonctionne:
Par contre je crains que très rapidement le Set rst = db.OpenRecordset(strSql, dbOpenDynaset) ne prenne du temps si l'ensemble de la qryDemandeEtendu doit être exploré. Aussi je voulais savoir si il était possible de limiter ce set sur les 50 derniers enregistrments... Auriez vous une piste?
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 Private Sub cmbDomaine_AfterUpdate() Dim db As DAO.Database Dim rst As DAO.Recordset Dim strSql As String Dim DateDem As String Dim DateMin As String Dim DateMax As String DateDem = Me.txtDateDem DateMin = DateAdd("d", -5, DateDem) DateMin = Format(DateMin, "mm/dd/yyyy") DateMax = DateAdd("d", 5, DateDem) DateMax = Format(DateMax, "mm/dd/yyyy") strSql = "SELECT DemCode FROM qryDemandeEtendu WHERE (ObjetId = '" & Me.cmbObjetId & "' AND Dom_Id = " & Me.cmbDomaine & " AND Demande_Date Between #" & DateMin & "# AND #" & DateMax & "#);" Set db = CurrentDb Set rst = db.OpenRecordset(strSql, dbOpenDynaset) If rst.RecordCount = 0 Then Else rst.MoveLast If rst.RecordCount = 1 Then MsgBox " Une demande similaire existe déjà" rst.MoveLast DoCmd.OpenForm "frmDemande", , , "[DemCode] = '" & rst.Fields(0).Value & "'" 'si j'ai une demande similaire j'ouvre le formulaire pour vérifier et modifier ou non la demande Else MsgBox "plusieurs demandes similaires existent déjà" 'normalement cette condition ne sera pas utile puisque je n'aurai pas de "demandes similaires" rst.MoveFirst While Not rst.EOF MsgBox rst.Fields(0).Value rst.MoveNext Wend End If End If rst.Close: Set rst = Nothing End Sub
Partager