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 :

sous-formulaire : champs provenant plusieurs tables


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut sous-formulaire : champs provenant plusieurs tables
    Bonjour

    Je cherche à faire un sous-formulaire (en mode feuille de données) dépendant d'une table, mais je voudrais aussi afficher des informations provenant de deux autres tables. Voici un peu la gueule de la requête dont j'ai besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "select nom, equipement, marque, entreprise, commentaire from entreprise, reference where entreprise.id=reference.entreprise and reference.id=" & me!reference & ";"
    Sachant que mon champ fils est dans le me!reference (liste déroulante et champ dépendant)
    J'aimerais, pour chaque enregistrement, afficher les infos du "select" à tout moment (càd au chargement du formulaire et lors de la màj de la liste)
    J'ai cherché dans la FAQ mais je n'ai pas trouvé ce genre de problème.
    Faut-il le faire en VBA ou y a-t-il un truc pour le faire avec l'interface
    ?
    Merci d'avance

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut
    tu dois pouvoir le faire avec l'interface ( en tout cas pour la requete )
    puis rafraichir ton controle après maj (vba)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Je pense que tu dois pouvoir faire ta requete comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "select nom, equipement, marque, entreprise, commentaire from entreprise, reference where entreprise.id=reference.entreprise and reference.id= [formulaires]![nomduformulaire]![reference];"
    comme ça le critère est mis à jour en même temps que le controle référence. Mais il doit effectivement falloir faire un rafraichissement sur le sous formulaire.
    Par exemple sur afterupdate du combo référence

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    Salut

    Je vais réfléchir à ta solution et je te donne des nouvelles

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Utilises des jointures normalisées en INNER JOIN plutôt que des jointures dans les WHERE. INNER JOIN est optimisé

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    Salut

    je me suis replongé dans le problème. C'est la galère, en fait.
    J'essaie les fonctions de domaine, mais çà ne marche pas non plus.
    Je ne pensait pas que c'était aussi galère d'afficher des valeurs dans des zones de texte, car on ne peut pas faire de requêtes avec.
    le pb du VBA, c'est sur quel évènement je le mets ? Je ne bouge pas forcément les valeurs de la zone de liste, et il faut bien que les valeurs s'affichent quand même. J'essaie les recordset, mais çà merde dans l'interprétation de la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    'Dim Rst As DAO.Recordset, req As String, db As Database
    'Me!document.Visible = False
    'Set db = CurrentDb
    'req = "SELECT nom, equipement, marque, reference.commentaire FROM entreprise, reference WHERE entreprise.id=reference.entreprise and reference.id=" & Forms!document!Reference & ";"
    'Set Rst = db.OpenRecordset(req, dbOpenDynaset)
    'Me!entr = str(Rst.Fields(1))
    'Me!marque = Rst.(2)
    'Me!equipement = Rst(1)
    'Me!commentaire = Rst(3)
    Si qq1 voit d'où vient le pb...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Si j'a bien compris ton pb, tu dois mettre ce code sur afterupdate du controle reference.
    Ainsi dés que tu modifie ton choix les champs du sous-formulaire sont mis à jour.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    En fait, non.
    Car si je le mets sur le champ reference/afterupdate, les valeurs ne s'afficheront dans les autres zones de texte que si j'actionne la zone de liste "référence".Or moi je veux qu'elles s'affichent tout le temps, quand on regarde le sous-formulaire.
    Je répète ma question initiale : je veux, dans un sous-formulaire dépendant, afficher les valeurs de champs de plusieurs tables.
    Je ne sais pas si le recordset est la meilleure manière de le faire, qu'en penses-tu ?

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Car si je le mets sur le champ reference/afterupdate, les valeurs ne s'afficheront dans les autres zones de texte que si j'actionne la zone de liste "référence".
    Ben non. Si tu mets le code sur reference/afterupdate les donées seront mises à jours que suite à une modif de la zone de liste, mais elle seront visibles tout le temps.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    Bon, je veux bien te croire, mais de toutes façons, mon code ne fonctionne pas car rien ne s'affiche dans mes zones de texte. J'ai beau le relire, je ne vois pas ce qui cloche.
    Est-ce que problème viendrait du fait que je sois en mode feuille de données ?
    Eh si !!! excuse-moi j'ai eu la réponse en posant moi-même la question.
    Y'a des merdes dans le mode feuille de données, non ? le mode formulaire est plus souple, la preuve....
    Mercide ton aide en tous cas...

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    529
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 529
    Points : 464
    Points
    464
    Par défaut
    salut,
    pour votre code je crois qu'une petite modif s'impose, dans la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'Dim Rst As DAO.Recordset
    Dim req As String
    Dim db As Database
    est-ce que vous avez essayer de créer votre formulaire à l'aide de l'assistant en incluant la table et la requête.
    Bonne chance.
    Merci
    Deux, n'apprendront pas; le timide et l'arrogant

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    Ben non. Si tu mets le code sur reference/afterupdate les donées seront mises à jours que suite à une modif de la zone de liste, mais elle seront visibles tout le temps.
    Négatif, les valeurs ne sont pas stockées dans les zones de textes, mais seulement affichées. Donc quand tu fermes ton formulaire, pfuit !! plus de valeurs. Il faut soit une requête qui soit exécutée au chargement du formulaire, soit que la zone de texte se réfère à un champ d'une table dépendante.
    Je le sais, maintenant, j'ai essayé.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Bien sûr que quand tu ferme le formulaire, les données ne sont pas stoquées puisque les contrôles sont indépendant. Pour que ta requete fonctionne il faut que ton formulaire soit ouvert. Si ta requete sert pour le sous formulaire, le formulaire est forcément ouvert non ?

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    Salut

    Je comprends bien ce que veux dire, mais çà me paraît un tantinet compliqué de l'implémenter avec toutes les fonctionnalités attendues. C'est des histoires de requêtes sur plusieurs tables, un mix de dépendance et d'indépendance vis-à-vis des tables.
    Donc pour ne pas rester bloqué, j'ai opté pour la solution "con" de stocker les champs que je voulais afficher dans ma table, ce qui produit de la redondance au niveau de ma base, mais tant pis. Je résoudrai ce problème plus tard.
    Merci de ton aide et de ta patience en tous cas.

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

Discussions similaires

  1. Créer un sous-formulaire basé sur plusieurs tables
    Par manou1310 dans le forum Oracle
    Réponses: 2
    Dernier message: 19/12/2011, 20h52
  2. [AC-2007] Sous formulaire/actualiser Liste et Table avec champs texte
    Par Stobbart dans le forum IHM
    Réponses: 4
    Dernier message: 01/08/2010, 14h53
  3. [AC-2007] Sous-formulaire basé sur plusieurs tables: nouvel enregistrement.
    Par ambroisine dans le forum IHM
    Réponses: 1
    Dernier message: 26/05/2010, 00h02
  4. Réponses: 1
    Dernier message: 03/10/2007, 08h54
  5. Réponses: 5
    Dernier message: 23/04/2007, 13h37

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