---Soumis par Dev Ashish---
Déterminer quel enregistrements sont choisis, en vue "données".
(Q) Je désire entreprendre des procédures selon le choix des enregistrements actuellement choisis par l'utilisateur qui se trouve en un mode de visionnent dit datasheet view (form/subform). Mais comment déterminer quels enregistrements sont choisis?
(A) Depuis Access 95, les propriétés SelTop, SelWidth, SelHeight, et SelLeft sont maintenant disponibles pour cet usage, en particulier, ici SelTop et SelHeight.
Malheureusement, ces propriétés ne sont valides que si les données possèdent le focus. On ne peut penser à cliquer sur un bouton, le fait de positionner le curseur de souris sur le bouton et de le cliquer invaliderait l'information contenue dans les donnés précédemment "choisies". Un solution est donc d'utiliser un Timer sous le formulaire, ou sur un toolbar fait-maison.
Comme exemple, utilisant la procédure événementielle OnTimer, nous imprimerons les enregistrements choisis (en utilisant un état qu'on suppose prédéfini).
' Créer une variable ayantla forme comme étedue.
Dim mfPrint As Boolean
Put following code in Form's Open Event
Private Sub Form_Open(Cancel As Integer)
mfPrint = False
End Sub
Assigner la valeur 5000 à la propriété TimerInterval du formulaire, puis
copier-coller le code suivant dans la procédure événementielle
'************* Code Start **************
'
Private Sub Form_Timer()
Dim i As Long
Dim strSQL As String
Dim loqd As QueryDef
If Me.SelHeight = 0 Or mfPrint Then Exit Sub
strSQL = "SELECT * FROM [" & Me.RecordSource _
& "] WHERE "
With Me.RecordsetClone
.MoveFirst
.Move Me.SelTop - 1
For i = 1 To Me.SelHeight
strSQL = strSQL & "ProductID = " & _
![ProductID] & _
" OR "
.MoveNext
Next i
strSQL = Left$(strSQL, Len(strSQL) - 3)
If MsgBox("Prêt pour imprimer maintenant?", _
vbQuestion + vbYesNo, _
"Confirmation requise") = vbYes Then
Set loqd = CurrentDb.QueryDefs("qryProducts")
loqd.SQL = strSQL
loqd.Close
'DoCmd.OpenReport "SomeReport", acViewPreview
mfPrint = True
End If
End With
Set loqd = Nothing
End Sub
'**************** Code End *****************