Mettre à jour mon sous-formulaire Access selon les critères de recherches

Signaler
Messages postés
4
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
24 mars 2020
-
yg_be
Messages postés
10269
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 avril 2020
-
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 je n'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.








Configuration: Android / Chrome 80.0.3987.119

2 réponses

Messages postés
10269
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 avril 2020
579
bonjour,
peux-tu tester la requête directement dans Access, sans passer pas le programme VBA?
lyoel
Messages postés
4
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
24 mars 2020

J'ai placé la requête dans le sous-formulaire dans la propriété SourceObject lors de sa création. Mais je n'arrive plus à le modifier quand le critère de recherche change
yg_be
Messages postés
10269
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 avril 2020
579 > lyoel
Messages postés
4
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
24 mars 2020

tester la requête en créant une requête (en récupérant le contenu de la variable req1 au moment où l'erreur se produit) et en l’exécutant, pas dans le formulaire.
Messages postés
10269
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 avril 2020
579
nous pourrons mieux t'aider si tu partages le texte de ton programme, et pas une image partielle, en utilisant les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
précise aussi le type des champs utilisés dans la clause WHERE de la requête.
et partage le texte du contenu de la variable req1.
lyoel
Messages postés
4
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
24 mars 2020

Excusez mon retard, j'ai dû saisir tout le code vu que j'ai utilisé mon téléphone pour me connecter à ce forum.
Voici la portion du code lié à l'événement LostFocus du champ de recherche.
Private Sub txt_recherche_LostFocus()
    Dim req1 As String, req2 As String
    Dim db As DAO.Database, rs As DAO.Recordset
    If(txt_recherche.Value <> "") then
        req1="SELECT O.date_operation AS DATES, U.login AS UTILISATEURS, T.designation_operation AS OPERATIONS, M.designation_motif AS MOTIFS, O.devise_operation AS DEVISES, O.montant_operation AS MONTANTS
                    FROM tab_operation AS O, tab_user AS U, tab_type_operation AS T, tab_motif AS M 
                    WHERE U.code_user=O.user
                          AND T.type_operation=O.operation
                          AND M.type_operation=O.operation
                          AND date_operation= '" & txt_recherche & "' 
                   ORDER BY O.date_operation;"

         Set db= CurrentDb
         Set rs= db.OpenRecordset(req1)

         With rs
                  If .EOF Then
                      MsgBox "IL N'Y À EU AUCUNE OPERATION A LA DATE DU '" & txt_recherche & "' ", vbInformation, "DATE RENSEIGNEE INTROUVABLE"
                      Exit Sub
                  Else
                      Do Until .EOF
                            Forms![frm_historique].Form![grid_operation]!DATES.Value= ![date_operation] 'chaque lignes étant tout les champs correspondant aux colones du sous-formulaire
                      Loop
                  End If
          End With

    Else
        grid_operation.Requery ' on recharge le sous-formulaire
    End If
End Sub

Quant aux types de données des champs de ma clause WHERE, ils sont de type numérique sauf la date.

Où le formulaire est nommé frm_historique et le sous-formulaire grid_operation


J'aimerais faire en sorte qu'au choix d'une date, seules les opérations étant effectuées à ladite date soient affichées sur le sous-formulaire grid_operation.
yg_be
Messages postés
10269
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 avril 2020
579 > lyoel
Messages postés
4
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
24 mars 2020

as-tu fait ceci?
lyoel
Messages postés
4
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
24 mars 2020
> yg_be
Messages postés
10269
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 avril 2020

J'ai adapté la syntaxe du
" WHERE date_operation= '" & txt_recherche & "'"
en
" WHERE date_operation= [Formulaires]![frm_historique]![txt_recherche]" 
puisque la première version ne passait pas à l'exécution.


Résultat :
yg_be
Messages postés
10269
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 avril 2020
579 > lyoel
Messages postés
4
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
24 mars 2020

je pense que tu n'as pas essayé de récupérer le contenu de la variable au moment où l'erreur se produit.
lecture utile: https://www.commentcamarche.net/contents/1381-debogage