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

IHM Discussion :

[A-02] Ouverture d'état avec requête paramétrée


Sujet :

IHM

  1. #1
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut [A-02] Ouverture d'état avec requête paramétrée
    Bonjour,

    Un état, dont la source est une requête paramétrée (2 paramètres).

    J'essaie de paramétrer la requête par VBA et d'ouvrir l'état, mais les paramétres sont demandés à nouveau.

    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
    Function OuvrirEtatLocatif()
     
        'Déclaration des variables
        Dim Db As DAO.Database
        Dim qry As DAO.QueryDef
     
        'Paramétrage de la requête qryEtatLocatif
        Set Db = CurrentDb
        Set qry = CurrentDb.QueryDefs("qryEtatLocatif")
        qry.Parameters("ImmeubleId") = Me.ImmId
        qry.Parameters("PeriodeId") = 5
     
        DoCmd.OpenReport "rptEtatLocatif", acViewPreview
     
        'Libération des objets
        Db.Close
        Set Db = Nothing
        Set qry = Nothing
     
    End Function
    Je ne sais trop ou chercher. Est-ce un problème de passage des paramétres ou est-ce qu'il n'est pas possible de pratiquer comme cela ?

    Merci d'avance.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    Salut,

    tu pourrais nous montrer ta requête stp.
    6ril25



    "Par trois méthodes nous pouvons apprendre la sagesse : d'abord, par la réflexion qui est la plus noble; en second lieu, par l'imitation, qui est la plus facile; et troisième, par l'expérience, qui est la plus amère." Confucius

  3. #3
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonsoir,

    Ce n'est pas le problème de la requête, du moins je pense...

    Voici le début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PARAMETERS ImmeubleId Value, PeriodeId Value;
    SELECT tblImmeubles.ImmId,...
    Je me pose némoins la question de savoir si c'est possible avec une requête "Sélection", tous les exemples que j'ai vu étant fait avec des requêtes "Action"...

    Bon, actuellement, je "nettoie" une appli et je remplace des critères de requêtes du genre "Formulaires!Monform...".

    Je pensais passer par une ouverture avec condition sur les champs, ici, c'est juste pour mon info personnelle.

    Merci.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 257
    Points : 153
    Points
    153
    Par défaut Et pourquoi ...
    tu ne mets pas la requête paramétrée comme record.source de ton État sur ouverture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.record.Source = "SELECT * FROM qryEtatLocatif WHERE (qryEtatLocatif.ImmeubleId) = " & ImmId & " AND (qryEtatLocatif.PeriodeId) = 5 "
    "
    La Valeur ImmId peut-être transmise par un formulaire ou InputBox ou autre ...

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut 6ril25, Chrysostome et Domi2,

    ta question est de savoir en fait si le paramétrage d'un querydef est unique et réutilisé dans l'ouverture d'un recordset.

    je crois que tu as déjà ta réponse...

    par exemple si tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Set qry = CurrentDb.QueryDefs("qryEtatLocatif")
    qry.Parameters("ImmeubleId") = Me.ImmId
    Set qry2 = CurrentDb.QueryDefs("qryEtatLocatif")
     
    Set rs = qry.OpenRecordset(dbOpenSnapshot)
    Set rs2 = qry2.OpenRecordset(dbOpenSnapshot)
    tu t'appercois que qry2 ne reprend pas le parametre de qry.

    donc lorsque le form ou le report s'ouvre et charge son recordset c'est la même chose: il ne charge pas de parametre.
    c'est qq part logique puisque c'est une propriété du querydef pas du recordset qui lui est utilisé pour l'ouverture.

    mais tu as raison de penser ainsi, qu'il devrait être possible d'ouvrir un recordset avec des paramètres s'il fait parti de la liste de querydef.
    visiblement ca ne marche pas comme ca.

    après à savoir s'il est possible d'ouvrir un recordset à partir d'une requete paramétrée en prédéfinissant ses valeurs... je le pense mais je ne vois pas de solution simple.

    enfin pour ce que tu veux faire je n'ai aucun doute que tu saches te débrouiller autrement.


  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonsoir,

    Je n'avais pas oublié cette discussion... Mais j'ai fait pas mal d'essais, ça prend un peu de temps...

    Pour passer des paramètres en VBA, c'est un peu la jungle (pour moi)... Ok pour une requête action ou pour un recordset... Pour une requête sélection, pas si simple, j'ai quand même trouvé quelque chose (sur un autre forum), mais cela me semble un peu compliqué...

    Pour finir, j'ai abandonné les paramètres et je passe ce dont j'ai besoin comme critères par fonction.

    Ca fonctionne top nickel mais je serais intéressé à avoir quelques avis (limitation, notamment en ce qui concerne une migration vers SqlServer).

    @vodiem

    Merci pour l'exemple, ça m'a bien aidé...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 257
    Points : 153
    Points
    153
    Par défaut DRingggggg ... !
    Voilà un réveil digne de Blanche-Neige. Bien dormi?

    Bref, tu as été trop bref pour la migration! Pourquoi, quel est le nombre d'utilisateurs, volume de données, utilisation sur le web ou en site séparée, etc ... Comment tu veux qu'on t'aiguille vers une réponse sans avoir les éléments pour peser.

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    Effectivement, j'ai été un peu trop bref, mais ma demande reste plus théorique que vraiment pratique. Le sql de la requête source de mon état :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblImmeubles.ImmId, tblPeriodes.PerId, tblPeriodes.PerImm, tblImmeubles.ImmNumero, tblImmeubles.ImmNatureTravaux, tblImmeubles.ImmAdresse, tblCommunes.CommuneNom, tblProprietaires.ProprietaireNom, tblProprietaires.ProprietaireLocalite, tblGerances.GeranceNom, tblGerances.GeranceLocalite, tblPeriodes.PerDateDebut, tblPeriodes.PerDateFin, [PerCFC0Logements]+[PerCFC1Logements]+[PerCFC2Logements]+[PerCFC4Logements]+[PerCFC5Logements]-[PerReductionLogements] AS PerCoutTotalLogements, tblLogements.LogEntree, tblLogements.LogEtage, tblLogements.LogNumGerance, IIf(Len([Loc1Nom] & " " & [Loc1Prenom])>20,Left([Loc1Nom] & " " & [Loc1Prenom],19) & ".",[Loc1Nom] & " " & [Loc1Prenom]) AS LocNomPrenom, tblLocataires.LocDebutPeriode, tblLocataires.LocFinPeriode, tblLocataires.LocDecisionCanton, IIf(([PerDateDebut]<=PaiementDebut()),IIf(([LocDebutPeriode]>PaiementDebut()),[LocDebutPeriode],PaiementDebut()),IIf(([LocDebutPeriode]<[PerDateDebut]),[PerDateDebut],[LocDebutPeriode])) AS DateDeterminanteDebut, IIf(([PerDateFin]>PaiementFin()),IIf(([LocFinPeriode] Is Null),PaiementFin(),[LocFinPeriode]),IIf(([PerDateFin]<[LocFinPeriode]),[PerDateFin],IIf(([LocFinPeriode] Is Null),[PerDateFin],[LocFinPeriode]))) AS DateDeterminanteFin, Int(([PerAideCanton]/[PerCoutTotalLogements])*[PerCoutTotalLogements]*[LogCoutPourcent]/12+1*0.5) AS LogAideCanton, Int(([PerAideCommune]/[PerCoutTotalLogements])*[PerCoutTotalLogements]*[LogCoutPourcent]/12+1*0.5) AS LogAideCommune, Int(([PerAideTiers]/[PerCoutTotalLogements])*[PerCoutTotalLogements]*[LogCoutPourcent]/12+1*0.5) AS LogAideTiers, IIf([LocDecisionCanton]>2,[LogAideCanton],0) AS LogAideCantonSupp, IIf([LocDecisionCanton]>2,[LogAideCommune],0) AS LogAideCommuneSupp, IIf([LocDecisionCanton]>2,[LogAideTiers],0) AS LogAideTiersSupp, DateDiff("m",[DateDeterminanteDebut],[DateDeterminanteFin]+1) AS DureeLocation, ([LogAideCanton]-[LogAideCantonSupp])*[DureeLocation] AS LogAideCantonPayee, ([LogAideCommune]-[LogAideCommuneSupp])*[DureeLocation] AS LogAideCommunePayee, ([LogAideTiers]-[LogAideTiersSupp])*[DureeLocation] AS LogAideTiersPayee
    FROM tblProprietaires INNER JOIN ((((tblGerances INNER JOIN (tblCommunes INNER JOIN tblImmeubles ON tblCommunes.CommuneId = tblImmeubles.ImmNumeroCommune) ON tblGerances.GeranceId = tblImmeubles.ImmGerance) INNER JOIN tblPeriodes ON tblImmeubles.ImmId = tblPeriodes.PerImm) INNER JOIN tblLogements ON tblImmeubles.ImmId = tblLogements.LogImm) INNER JOIN (tblDecisions INNER JOIN tblLocataires ON tblDecisions.DecisionId = tblLocataires.LocDecisionCanton) ON tblLogements.LogId = tblLocataires.LocLog) ON tblProprietaires.ProprietaireId = tblImmeubles.ImmProprietaire
    WHERE (((tblPeriodes.PerDateDebut)<PaiementFin()) AND ((tblPeriodes.PerDateFin)>PaiementDebut()) AND ((tblLocataires.LocDebutPeriode)<[PerDateFin] And (tblLocataires.LocDebutPeriode)<PaiementFin()) AND ((tblLocataires.LocFinPeriode) Is Null Or (tblLocataires.LocFinPeriode)>[PerDateDebut]));
    Je ne fais référence à aucun formulaire, je n'utilise pas de paramètres, mais j'utilise 2 fonctions (PaiementDebut() et PaiementFin()).

    La question est : si les données étaient sous SqlServer, la requête serait-elle utilisable telle quelle ?

    Je pense que oui, mais je n'en suis pas certain.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  9. #9
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 257
    Points : 153
    Points
    153
    Par défaut Beh dis donc!
    Pour de la requête, c'est de la requête. Quand on fait du SQL, on lésine pas! L'intérêt principal de la migration réside dans le choix de faire travailler le serveur plutôt que le client, et de faire véhiculer un volume d'informations moins important sur le réseau. Ce sont des infos que tu ne nous a pas données. Il faut vraiment que ce soit justifié par une lenteur, où par une politique de futur développement. Où d'avoir commencé sur SQL. Voili, voilou, voilà!

  10. #10
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    Pour de la requête, c'est de la requête.
    Elle impressionne peut-être plus qu'autre chose...

    Je te remercie pour tes infos, je connais plus ou moins les arguments que tu avances...

    J'en suis à me dire que si je veux aller plus loin, il va falloir que je m'installe SqlServer Express et que je passe de la théorie à la pratique...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Update avec requête paramétrée
    Par buzz73 dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/08/2009, 19h24
  2. Paramétrage sous-état avec requête
    Par belsuncette dans le forum IHM
    Réponses: 2
    Dernier message: 27/06/2007, 11h21
  3. [Sql server 2k] Lot DTS avec requête paramétrée
    Par Overkill06 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/06/2007, 11h44
  4. Problème d'états avec requêtes
    Par Claire07 dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2006, 13h57
  5. Ouverture d'un état avec requête
    Par lianoos dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 00h16

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