IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Requêtes et SQL. Discussion :

Requête à partir de saisie d'un champ de 2 formulaires différents, l'un ou l'autre


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Requête à partir de saisie d'un champ de 2 formulaires différents, l'un ou l'autre
    Bonjour,
    Je lance aujourd'hui plusieurs requêtes à partir de la saisie d'un champ dans un formulaire.
    Je souhaiterai désormais avoir 2 formulaires et lancer ces mêmes requêtes à partir de la saisie du même type de champ texte mais rempli dans un formulaire ou dans un autre.

    Aujourd'hui, j'ai modifié mes requêtes avec comme critère ci-dessous mais j'ai un pop-up "Entrer une valeur de paramètre" car un des champs est évidemment vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (((Mon champ cible)=[Formulaires]![frm_Main]![txtChamp1] Or (Mon champ cible)=[Formulaires]![frm_Main2]![txtChamp2]));
    J'ai testé aussi mais même problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vraifaux ((((Mon champ cible)=[Formulaires]![frm_Main]![txtChamp1] est null;(Mon champ cible)=[Formulaires]![frm_Main2]![txtChamp2]));(Mon champ cible)=[Formulaires]![frm_Main]![txtChamp1])
    J'ai aussi mis en amont des mes requêtes DoCmd.SetWarnings False pour enlever les msgbox mais ça n'empêche pas le "Entrer une valeur de paramètre"

    Mes requêtes fonctionnent bien de manière dissocier si je mets l'un ou l'autre champ critère [Formulaires]![frm_Main]![txtChamp1] ou [Formulaires]![frm_Main2]![txtChamp2].

    Comment puis-je procéder svp ? (je ne suis pas une bête de course en Access...)
    Il faudrait créer une sorte de paramètre qui serait créé à partir de la saisie et faire pointer les requêtes sur ce paramètre ?
    Si oui comment procéder svp ?

    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Pour faire ce que tu utilises le formulaire doit être ouvert c'est ce qui explique le problème.

    En standard je ne pense pas qu'il y ai de solution.

    Ici une idée avec un peu de code VBA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function LireParam() as string
       dim result as string:result='PasDeFormulaireOuvert"
     
       if currentProject.AllForms("frm_Main").IsLoaded then
           result=forms![frm_main]![txtChamp1]
       end if
     
       if currentProject.AllForms("frm_Main2").IsLoaded then
           result=forms![frm_main2]![txtChamp2]
       end if
     
       LireParam=resut
    end function
    et come critère tu mets :

    Acces va appeler la fonction qui elle-même va regarder si les formulaires sont ouverts et lire la valeur.
    J'ai supposé que les formulaires n'étaient jamais ouvert tous les 2 ne même temps, sinon tu vas toujours avoir le choix du second.

    A+

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 830
    Points : 14 928
    Points
    14 928
    Par défaut
    bonsoir,
    Autre solution:
    charger le paramètre via la définition de la requête. Il faut laisser le critère comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Mon champ cible)=[Formulaires]![frm_Main]![txtChamp1]
    ou même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Mon champ cible)=[QuelleValeur]
    ensuite dans n'importe quel formulaire, on peut charger le paramètre et exécuter la requête comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim Qdf As DAO.QueryDef
    Dim PNomReq As String
     
    PNomReq = "NomdelaRequete"
     
    Set Qdf = CurrentDb.QueryDefs(PNomReq)
    Qdf.Parameters(0).Value = Me.txtChamp1     'chargement paramètre
    Qdf.Execute     'exécution de la requête
     
    Set Qdf = Nothing

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour tee_grandbois.

    Ta solution fonctionne seulement si c'est une requête d'action, pas une requête de sélection, n'est-ce pas ?

    A+

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 830
    Points : 14 928
    Points
    14 928
    Par défaut
    bonjour marot_r,
    je dirais: pas seulement, bien que, évidemment, pour les requêtes sélection il faut un Openrecordset à la place d'un Execute (on pourrait même tester le type de la requête pour, soit exécuter, soit ouvrir un recordset) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Ors as recordset
    Dim Qdf As DAO.QueryDef
    Dim PNomReq As String
     
    PNomReq = "NomdelaRequeteSelection"
     
    Set Qdf = CurrentDb.QueryDefs(PNomReq)
    Qdf.Parameters("Quellevaleur").Value = Me.Monparam     'chargement paramètre
    Set ors = Qdf.OpenRecordset
    mais le principe du paramètre est le même.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Ok, Merci.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/12/2012, 20h59
  2. [AC-2003] Requête SQL pour Mise à jour de champs dans un formulaire suite à une saisie
    Par sunshine44 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/01/2010, 16h25
  3. Réponses: 7
    Dernier message: 07/05/2009, 13h09
  4. Réponses: 3
    Dernier message: 11/01/2009, 11h13
  5. Réponses: 2
    Dernier message: 19/10/2005, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo