[Access]problème liaison form/requete/etat?

Résolu
Bonjour, j'ai un petit problème en access
je dois sélectionner dans un formulaire des informations qui ne sont autres que celle ci

le nom de l'intervenant
un intervalle de date ( début et fin )
une ligne de production
un équipement et un sous équipement

pour optimiser la recherche on m'a poser plusieurs condition comme:

une recherche par ligne de production, par nom de l'intervenant ou alors par équipement

après avoir longtemps réfléchis sur la manière de ne sélectionner qu'un nom ( par exemple) ou tous les noms (voir mes discussion précédentes) j'ai décidé de mettre une condition dans le code de mon bouton "recherche" qui exécute une macro, en effet si je sélectionne "tout les noms" je ferais une recherche par intervenants, je disposerais donc d'une macro qui lancera une requête de sélection uniquement sur l'intervenant et la date, le reste doit s'afficher dans un état

il en va de même pour la ligne de production etc etc

mon problème est le suivant, l'exécution à part de mes macros fonctionne parfaitement seulement avec le formulaire rien ne s'affiche dans l'état!!

est ce parce qu'un formulaire ne peut être lié à plusieurs requête? est ce parce que mon formulaire n'est pas lié à mes requêtes?

je ne sais pas comment faire pour que mon formulaire décide d'envoyer les donnés saisie par l'utilisateur à mes différentes requête

merci de votre attention, merci de votre aide

--
je préfère fermer ma gueule et passer pour un con
que l'ouvrir et ne laisser aucun doute à ce sujet
Configuration: Windows XP
Firefox 3.0.10

13 réponses

  1. Contributeur Ambassadeur
    Je pense que le VBA du formulaire doit associer la requête à l'état, ainsi :

    Application.Reports.Item("nom de l etat").RecordSource = "texte de la requete"
    0
    1. d'accord et ce code je le place avant d'appelé la macro correspondante?
      désoler de poser cette question mais comme je ne peux pas tester avant demain j'aimerais savoir tout de même

      merci à toi yg_be
      0
      1. Contributeur Ambassadeur
        avant d'ouvrir l'état.

        il est possible d'ouvrir l'état à partir du VBA.

        à quoi sert la macro ?
        0
        1. la macro ouvre la requête qui exécute la la sélection en fonction des paramètres que le formulaire lui passe et ensuite la macro ouvre l'état, c'est pour ça je dois d'abord passer par la requête...
          je vais test ton code je te redis quoi
          0
          1. en fait ma macro me permet d'ouvrir dans un premier temps une requête qui va exécuter une sélection en fonction des paramètres que lui passe mon formulaire, puis ensuite il va ouvrir mon état ou doit s'afficher toutes les informations nécésaire
            0
            1. la macro sert à ouvrir la requête pour qu'elle puisse exécuté une sélection sur les paramètres envoyé par le formulaire ( paramètres qui ne sont pas envoyés d'ailleurs) et après la sélection, cette même macro ouvre mon état ou doit s'afficher le résultat final
              0
              1. la macro sert à ouvrir la requête pour qu'elle puisse exécuté une sélection sur les paramètres envoyé par le formulaire ( paramètres qui ne sont pas envoyés d'ailleurs) et après la sélection, cette même macro ouvre mon état ou doit s'afficher le résultat final
                0
                1. Contributeur Ambassadeur
                  Tu as écris :
                  "
                  la macro ouvre la requête qui exécute la la sélection en fonction des paramètres que le formulaire lui passe et ensuite la macro ouvre l'état, c'est pour ça je dois d'abord passer par la requête...
                  je vais test ton code je te redis quoi
                  "

                  Je pense que le VBA doit associer la commande SQL à l'état, puis ouvrir l'état.

                  Donc :
                  Application.Reports.Item("nom de l etat").RecordSource = "texte de la requete"
                  docmd.openreport "nom de l'etat"
                  0
                  1. Contributeur Ambassadeur
                    test ccm
                    0
                    1. désoler de ne pas avoir répondu avant j'avais des problèmes de connexion au boulot, et je dois avouer que c'est plus amusant de se prendre la tête à résoudre ce problème que de se prendre la tête sur du access

                      je n'ai pas encore tester ton code je l'avoue je vais le faire juste après ce post, mais il y a quelque chose que je ne comprend pas.
                      la bdd que je modifie existait déjà auparavant mais on m'a demandé de l'améliorer, comme tu le sais on s'est pris la tête avec une histoire de sélection dans le formulaire et je pense avoir résolut le problème (voir code)
                      mais le type qui a créer cette bdd avant moi à une multitude de petit formulaire de recherche qui fonctionne très bien, tout ce que j'ai fait c'est de les compacter pour qu'il ne reste qu'un seul formulaire
                      Alors pourquoi ces requêtes à lui fonctionne avec le formulaire et pas les miennes?
                      impossible de voir ce type pour qu'il puisse m'aider...
                      tu es mon seul collègue de boulot ici yg_be^^
                      je test ton code je te redis quoi

                      voici le code pour éviter une sélection total et/ou partiel en même temps, il suffit d'utiliser plusieurs requête qui ont chacune des filtres différents

                      Private Sub rechercher_Click()
                      On Error GoTo Err_rechercher_Click

                      Dim stDocName As String
                      If (intervenant.Value = "<Tous>") Then
                      If (ligne.Value = "<Toutes>") Then
                      If (equipement.Value = "<Tout>") Then
                      flag = MsgBox("Veuillez ne sélectionner que deux critères de recherche au maximum")
                      stDocName = "M_ouvrir_recherche_total"
                      Else
                      stDocName = "M_recherche_equipement"
                      End If
                      Else
                      If (equipement.Value = "Tout") Then
                      stDocName = "M_recherche_ligne"
                      Else
                      stDocName = "M_recherche_ligne_equipement"
                      End If
                      End If
                      Else
                      If (ligne.Value = "Toutes") Then
                      If (equipement.Value = "Tout") Then
                      stDocName = "M_recherche_intervenant"
                      Else
                      stDocName = "M_recherche_intervenant_equipement"
                      End If
                      Else
                      stDocName = "M_Recherche_total"
                      End If
                      End If

                      DoCmd.RunMacro stDocName

                      Exit_rechercher_Click:
                      Exit Sub

                      Err_rechercher_Click:
                      MsgBox Err.Description
                      Resume Exit_rechercher_Click

                      End Sub

                      c'est mon bouton rechercher qui gère les différentes possibilité de recherche
                      0
                      1. Contributeur Ambassadeur
                        Peux-tu m'expliquer ce que font les macros ?
                        0
                        1. Contributeur Ambassadeur
                          Je pense que le plus simple est, dans le VBA, associer la commande SQL à l'état, puis ouvrir l'état.

                          Donc :
                          Application.Reports.Item("nom de l etat").RecordSource = "texte de la requete"
                          DoCmd.OpenReport "lenomdetonetat", acViewPreview

                          Je suis curieux de voir comment font les macros pour ouvrir l'état correctement.
                          0