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 :

Formulaire avec champs variables [AC-2003]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Points : 110
    Points
    110
    Par défaut Formulaire avec champs variables
    Bonjour

    Comment passer en parametres (avec VBA ou pas) le nom des champs d'une table à l'ouverture d'un formulaire en mode feuille de donnée ou formulaire continu.
    Ayant 4 ou 5 series de données différentes à afficher. Elles sont issu de la même table. Je voudrais créer un formulaire "passe partout" plutot que 4 ou 5 formulaires, afin d'optimiser l'application.
    Merci d'avance pour les réponses eventuelles

  2. #2
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.

    Une solution est de créer autant de requêtes que nécessaires, avec des noms de champ standard (Ch1, Ch2, etc) et de passer dans la commande d'ouverture l'attribution de la source appropriée à ton formulaire, dans lequel tu auras bien entendu utilisé les noms de champ choisis dans tes requêtes.
    Le code pour attribuer la source au formulaire étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!Ton_form.Form.RecordSource = 'ici le nom de la requête ou la requête en SQL
    Cordialement

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Points : 110
    Points
    110
    Par défaut
    Bonjour

    Merci pour la réponse. J'ai donc créé divers requetes que je passe au formulaire. Probleme pas d'erreur donc le code est bon mais pas d'affichage des données. Le formulaire est du type formulaire continu.
    Le code ci-dessous s'execute sans probléme, le titre (LeTitre.caption) et bien mise à jour mais on a rien d'affiché sur le formulaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub Form_Open(Cancel As Integer)
    VChXTabl = 1
     Select Case VChXTabl
       Case Is = 1
            Me.LeTitre.Caption = "ELECTRICITE JOURS"
            Forms!FTableaux.Form.RecordSource = "RElectricité"
     End Select
    End Sub
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Me.Form.RecordSource = "RElectricité"
    Idem. Ne faut il pas executer la requete est comment ?

  4. #4
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut Formulaire avec champs variables
    Jeanpierre71 bonjour,

    Dans ton formulaire continu tu as spécifier les champs que tu souhaitais voir apparaître. Dans tes différentes requêtes les champs portent t'ils le même nom ?
    Si tel n'est pas le cas çà ne marchera pas !
    Si c'est la cas essaye de charger la source sur la propriété Form_Load et regarde ce que cela donne (après utilisation de me.requery)

    Tiens moi au courant

  5. #5
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Personnellement, je place ce code dans la procédure sur clic des boutons qui ouvrent le formulaire. En fait, j'ai 4 boutons dans un menu, et chacun ouvre le formulaire en lui affectant une des requêtes comme source et en adaptant le contenu des étiquettes. Ici, je n'ai mis que les commandes de base.
    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Ton_bouton1_Click()
    DoCmd.OpenForm "FTableaux"
    Forms![FTableaux]!LeTitre.Caption = "ELECTRICITE JOURS"
    Forms![FTableaux].Form.RecordSource = "RElectricité"
    Et de cette manière, je n'ai aucun souci. Vérifie (mais je suppose que tu l'as déjà fait) que ta requête lancée seule affiche bien ce que tu attends. Sinon, le code tel que je l'applique ne nécessite pas de lancer la requête.

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Points : 110
    Points
    110
    Par défaut
    Bonjour

    @jimbolion
    Oui les noms des champs sont différents, la réponse était dans ma premier question. Il faut que je puisse afficher un certain nombre de champs d'une même table. Dans cette table il y a des champs pour l'electricite, d'autres pour le gaz, air comprimé, l'eau, etc.
    Donc je ne veux pas afficher des cacahuetes avec des bananes quoi !

    @RobiPMS
    J'ai essayé avec la nouvelle syntaxe que tu m'as communiqué. Résultat idem pas de défaut, mais pas d'affichage non plus des données de la requete. Et oui à la deuxieme question, les requetes affichent bien les bonnes données en les lancant seules

  7. #7
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Alors :
    1. Tu as bien attribué à chaque champ de tes requêtes un nom identique, et utilisé ce nom comme source des champs du formulaire?
    2. As-tu mis le code dans la procédure par laquelle tu ouvres le formulaire (donc pas dans le formulaire lui-même, ce qui devrait marcher mais que je n'ai pas essayé)?

  8. #8
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut re
    JeanPierre71 re-bonjour

    As tu avancé avec les infos de RobiPMS, car effectivement si tu passes dans toutes tes requêtes les mêmes alias et que la source du formulaire affiche ces mêmes alias, rien ne s'oppose à ce que cela marche !
    As tu essayé le rafraîchissement de ton Formulaire ?

    JimboLion

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par RobiPMS Voir le message
    Alors :
    1. Tu as bien attribué à chaque champ de tes requêtes un nom identique, et utilisé ce nom comme source des champs du formulaire?
    2. As-tu mis le code dans la procédure par laquelle tu ouvres le formulaire (donc pas dans le formulaire lui-même, ce qui devrait marcher mais que je n'ai pas essayé)?
    Re Bonjour

    Je pense que nous nous comprenons pas Pour la réponse à la question 2 la réponse est oui, mais pas d'affichage. Je vais synthétiser le problème. C'est connu un petit schéma et mieux que des grands discours

    - J'ai une table ou est archivé un certain nombre de paramètres critiques de ma société. Cette table on va l'appeler TArchives
    - Dans cette table j'ai par exemple 10 champs (en réalité beaucoup + !)
    - champ1, champ2, champ3 --> Dans une requête Req1
    - champ4, champ5, champ6 --> Dans une requête Req2
    - champ7, champ8, champ9, champ10 --> Dans une requête Req3

    Dans un souci d'optimisation je veux afficher les données collectées par chaque requêtes dans un formulaire unique et non 3 formulaires, par souci de place et de volume de la base. L'arrangement peut se faire par le code, mon seul souci est le passage des données au formulaire.

    Je lis plus haut" Tu as bien attribué à chaque champ de tes requêtes un nom identique" comme le problème est posé ci-dessus, le nom des champs de Req1 et le nom des champs de Req2 sont par essences différents. Alors comment sélectionner dans le formatage du formulaire des champs qui n'auront pas le même nom suivant la requête qui est passé ?
    Mon explication est-elle claire

  10. #10
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    le nom des champs de Req1 et le nom des champs de Req2 sont par essences différents. Alors comment sélectionner dans le formatage du formulaire des champs qui n'auront pas le même nom suivant la requête qui est passé
    Bien entendu... et pour cela, il suffit dans les requêtes, d'attribuer un nom arbitraire à chaque champ que tu veux afficher, et d'utiliser ces mêmes noms dans les différentes requêtes.
    En SQL, cela donnera une syntaxe comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [TaTable]![TonChamp1] AS Ch1, [TaTable]![TonChamp2] AS Ch2, [TaTable]![TonChamp3] AS Ch3
    FROM TaTable;
    Et pour la seconde requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [TaTable]![TonChamp4] AS Ch1, [TaTable]![TonChamp5] AS Ch2, [TaTable]![TonChamp6] AS Ch3
    FROM TaTable;
    Pour réaliser cela en mode création de requête, il suffit de mettre dans la ligne Champ de la première colonne Ch1 : TaTable![TonChamp1] et ainsi de suite...
    Et ainsi, tu pourras attribuer comme source des champs de ton formulaire des champs dont les noms sont chaque fois identiques.
    Le plus simple pour faire cela est, dans le propriétés du formulaire en mode création, d'attribuer comme source au formulaire ta première requête, et de choisir dans chaque champ la source qui convient (Ch1, Ch2, etc).
    Et à chaque fois que tu attribueras la source par le code à une requête différente, le formulaire trouvera les mêmes noms de champ dans la requête.

    Ouf! un peu long, mais je pense avoir suffisamment détaillé pour que tu voies ce qu'il faut faire.
    Tiens nous au courant si tu as encore des questions ou des soucis pour la réalisation!

  11. #11
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Points : 110
    Points
    110
    Par défaut
    Bonjour

    BINGO !!!! ta solution fonctionne parfaitement. Il faut seulement coder le nom des etiquettes des champs en fonction du choix de la requete, il y a plus qu' a !
    Merci à toi pour ta patience et pour la solution bien sur

  12. #12
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut Jeanpierre71
    Ch1, Ch2, Ch3 c'est ce qu'on appelle un alias dans l'exemple de RobiPMS et que je te décrit dans mon explication en #8 ! Je me suis certainement mal exprimé... Mea Culpa

    En tout cas content que cela fonctionne !

    @ bientôt

  13. #13
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par jimbolion Voir le message
    Ch1, Ch2, Ch3 c'est ce qu'on appelle un alias dans l'exemple de RobiPMS et que je te décrit dans mon explication en #8 ! Je me suis certainement mal exprimé... Mea Culpa

    En tout cas content que cela fonctionne !

    @ bientôt
    Je ne travail sur Access que depuis 1 an 1/2 avec en plus passage de Delphi/C++ à VBA donc pour moi les alias, ben cela ne me cause pas trop
    Merci à toi pour ton coup de main

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

Discussions similaires

  1. [AC-2007] Formulaire de recherche multi-critères avec champs variables
    Par chris1012 dans le forum IHM
    Réponses: 6
    Dernier message: 28/09/2009, 11h50
  2. ouverture formulaire avec champ vide
    Par atlantideD dans le forum IHM
    Réponses: 3
    Dernier message: 16/05/2007, 13h36
  3. formulaire avec champ calcules sur access
    Par tobisko dans le forum Access
    Réponses: 3
    Dernier message: 08/09/2006, 14h52
  4. [ODBC] Valider formulaire avec champs vides
    Par dorot dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 12/07/2006, 18h15
  5. Execution formulaire avec une variable
    Par dsj dans le forum Access
    Réponses: 9
    Dernier message: 08/09/2005, 20h46

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