Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

Forms: Déterminer quel enregistrements sont choisis, en vue "données"

Author(s)
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 *****************

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer