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

Fermé
lyoel Messages postés 4 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 24 mars 2020 - 24 mars 2020 à 13:55
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 24 mars 2020 à 18:14
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

A voir également:

2 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
24 mars 2020 à 14:04
bonjour,
peux-tu tester la requête directement dans Access, sans passer pas le programme VBA?
0
lyoel Messages postés 4 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 24 mars 2020
24 mars 2020 à 14:08
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
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > lyoel Messages postés 4 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 24 mars 2020
Modifié le 24 mars 2020 à 14:12
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.
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
24 mars 2020 à 14:18
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.
0
lyoel Messages postés 4 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 24 mars 2020
Modifié le 24 mars 2020 à 15:29
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.
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > lyoel Messages postés 4 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 24 mars 2020
24 mars 2020 à 15:41
as-tu fait ceci?
0
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 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
Modifié le 24 mars 2020 à 16:12
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 :
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > lyoel Messages postés 4 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 24 mars 2020
24 mars 2020 à 18:14
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
0