Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Je voudrais mettre à jour mon sous-formulaire Access selon les critères de recherche
    Bonjour à tous, je suis dans la conception d'un formulaire qui affiche les résultats d'une requête dans un sous-formulaire. Je voudrais mettre à jour mon sous-formulaire Access selon les critères de recherche, avec du code et des requêtes SQL, mais j'ai pas pû le faire, ni avec la manipulation de la propriété SourceObject du sous-formulaire dans le code lors de l'événement LostFocus du champ recherche, ni avec la solution basée sur le recordset (Do until rs.EOF ... Loop).
    J'ai vraiment besoin d'aide please.

  2. #2
    Expert éminent
    bonjour,
    ce n'est pas le SourceObject, c'est le RecordSource:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Me.leSousForm.Form.RecordSource = LecodeSQL
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  3. #3
    Candidat au Club
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    ce n'est pas le SourceObject, c'est le RecordSource:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Me.leSousForm.Form.RecordSource = LecodeSQL

    le hic c'est que quand je lance l'execution j'ai une érreur d'execution '3464': type de données incompatible dans l'expression du critère.
    la valeur du recordset rs étant Nothing

    mon code est structuré comme suit:

    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
     
         Private Sub txt_recherche_LostFocus()
              Dim req1 As String, req2 As String
              Dim db As DAO.Database, rs As DAO.Recordset
              If (txt_recherche <> "") Then
                  req1= "ma requete"
                  Set db= CurrentDb
                  Set rs= db.OpenRecordset(req1)
                   With rs
                        If .EOF Then
                            MsgBox "operation introuvable"
                            Exit Sub
                        Else
                            Me.grid_operation.Form.RecordSource= req1
                        End If
                   End With
              Else
                  grid_operation.Requery
              End If
         End Sub


    grid_operation est le sous-formulaire à mettre à jour par rapport au champ de recherche txt_recherche

  4. #4
    Expert éminent
    où sont les critères de recherche qui doivent filtrer la requête ?
    en règle générale, on construit une requête paramétrée qui ressemble à ça:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim strSQL As String
    strSQL = "select * from latable Where Lechamp ='" & Me.txt_recherche & "'"   ' on suppose que Lechamp est du texte, sinon enlever les apostrophes
     
    Me.grid_operation.Form.RecordSource = strSQL


    et il est recommandé d'utiliser l'évènement AfterUpdate plutôt que LostFocus
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...