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 dans un sous-formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 149
    Points : 67
    Points
    67
    Par défaut Sous-formulaire dans un sous-formulaire
    Bonjour, j'ai un petit acro.:

    Comment changer A en B dans un formulaire, ou une requête destinée à un formulaire en mode feuille de données?

    A:
    #1, 12:00$, -----, -----
    #2, 12:00$, -----, -----
    #3, 12:00$, -----, -----
    #4, 12:00$, -----, -----
    #5, 14:00$, -----, -----
    #5, 14:00$, bleu, 1:00$
    #5, 14:00$, gris, 1:00$
    #6, 12:00$, -----, -----

    B:
    #1, 12:00$, -----, -----
    #2, 12:00$, -----, -----
    #3, 12:00$, -----, -----
    #4, 12:00$, -----, -----
    #5, 14:00$, -----, -----
    ---, ----------, bleu, 1:00$
    ---, ----------, gris, 1:00$
    #6, 12:00$, -----, -----

    Merci bien!
    J

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,
    Je ne comprends pas bien ta question.
    Veux-tu remplacer la source de ton formulaire B par celle de A ?

    Si oui, tu dois nous dire la hiérarchie de ces formulaires
    Exemple le principal s'appelle xxxxx, il contient yyyyy qui, à son tour contient ...
    Si non, reformule ta question.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Moi aussi je ne comprends rien, en fait peut-être

    Tu veux mettre un sous-sous-formulaire en mode feuille de données dans un sous-formulaire en feuille de données, si c'est cela ce n'est pas possible, du moins de manière native.

    Philippe

  4. #4
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Bonjour et premièrement merci de vos réponses... Je vais tâcher d'être plus explicite.

    J'ai un formulaire de vente qui permet d'ajouter des produits dans une table "trans_vente" et qui à la fin produit une facture dans une table "imprim_vente".

    Mon besoin particulier est que certains produits ont des options. Ces options doivent être affichés dans la liste de transaction (dans la table "trans_opt" plusieurs à 1 "trans_vente").

    Cela me permet de faire la liste des transaction, et d'avoir des options de transaction (qui ont le même id_trans que le produit relié)... ce qui me donne (résultat de ma requète dans mon sous formulaire) pour 1 produit avec 2 options...

    A:
    #5, 14:00$, bleu, 1:00$
    #5, 14:00$, gris, 1:00$

    Ce que je me dois de faire est d'écrire les lignes de transaction #5 en 3 ligne, c-a-d...

    #5, 14:00$, ------, ------ (le produit)
    #5, ----------, bleu, 1:00$ (option #1)
    #5, ----------, gris, 1:00$ (option #2)

    Or pour y arriver, je dois utiliser quelque chose père-fils qui me donnera le résultat que, si le produit n'a pas d'option, on le liste (première ligne), mais si il y a une ou plusieurs options, on doit lister ces option (qui on toujours le même # de transaction) sous le produit, comme dans mon exemple ci-dessus.

    En réalité, s'il me serait possible de faire le travail avec une requète, j'aurais juste à faire le formulaire et le tour serait joué.

    Mon idée de base était de faire un formulaire pour la liste des produits de transaction, et dans l'espâce "détail", insérer un autre formulaire qui traite seulement les option...

    Espérant avoir été plus claire cette fois.
    Encore merci pour votre intérêt Philippe et Claude.

    Jean-François

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,
    dans ton 1er poste :
    A:
    #1, 12:00$, -----, -----
    #2, 12:00$, -----, -----
    #3, 12:00$, -----, -----
    #4, 12:00$, -----, -----
    #5, 14:00$, -----, -----
    #5, 14:00$, bleu, 1:00$
    #5, 14:00$, gris, 1:00$

    #6, 12:00$, -----, -----
    D'après tes explications c'est plutôt
    A:
    #1, 12:00$, -----, -----
    #2, 12:00$, -----, -----
    #3, 12:00$, -----, -----
    #4, 12:00$, -----, -----
    #5, 14:00$, bleu, 1:00$
    #5, 14:00$, gris, 1:00$

    #6, 12:00$, -----, -----

    OK ?

  6. #6
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour,
    dans ton 1er poste :

    D'après tes explications c'est plutôt
    A:
    #1, 12:00$, -----, -----
    #2, 12:00$, -----, -----
    #3, 12:00$, -----, -----
    #4, 12:00$, -----, -----
    #5, 14:00$, bleu, 1:00$
    #5, 14:00$, gris, 1:00$

    #6, 12:00$, -----, -----

    OK ?
    Oui, c'est bien ce que j'ai pour le moment.

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    L'idée consiste à procéder en 2 temps
    une 1ère requête traite les 1ères lignes
    une 2ème pour ajouter les lignes complémentaires si nécessaire (si plus que 1 item)

  8. #8
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    L'idée consiste à procéder en 2 temps
    une 1ère requête traite les 1ères lignes
    une 2ème pour ajouter les lignes complémentaires si nécessaire (si plus que 1 item)
    Très bien ça. Et alors je lie comment les 2 requêtes pour les intégrées dans mon formulaire?

    Merci encore.

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    As-tu consulté la pièce jointe ?
    Vois l'événement "sur activation" du formulaire.

  10. #10
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    As-tu consulté la pièce jointe ?
    Vois l'événement "sur activation" du formulaire.
    J'ai regarder rapidement votre fichier hier et je dois dire que j'ai été ravi et impressionné par la rapidité de votre réponse et de l'exactitude de la réponse à mon besoin. Je vais travailler l'a dessus plus tard et je vous reviens avec mes impressions.

    Un grand merci
    Jean-François (Canada, Québec)

  11. #11
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par gorjette Voir le message
    Je suis maintenant à regarder ta solution et j'ai du mal à comprendre les étapes. Ce que je constate c'est que tu utilise la table contenuB pour alimenter le formulaire de la bonne solution. Mais cette table contient déjà les éléments pour former ma solution, si ce n'est que le tri n'est pas effectif. Or, je ne comprends pas la manipulation. Secondo, je n'arrive pas à faire apparaitre la ligne "Ajouter à" dans mes requêtes.

    Je crois bien que si vous m'expliquez les étapes utilisés ainsi que la manière de faire apparaitre "Ajouter à", j'y arriverai.

    Merci beaucoup encore M. Leloup
    Jean-François

  12. #12
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Je ne connais pas les détails ton application.

    Je pars de cet ensemble :


    A:
    #1, 12:00$, -----, -----
    #2, 12:00$, -----, -----
    #3, 12:00$, -----, -----
    #4, 12:00$, -----, -----
    #5, 14:00$, bleu, 1:00$
    #5, 14:00$, gris, 1:00$
    #6, 12:00$, -----, -----

    Dans ma DB exemple, je l’ai introduit dans la table « ContenuA » avec Champ1, Champ2, Champ3 et Champ4

    Ensuite j’ai imaginé un algorithme qui partant de A me conduisait à B.
    Pour me faciliter la tâche, j’ai logé le résultat dans une table « ContenuB »
    Cette table contient les 2 premiers champs originaux de « ContenuA » (qui semblent constituer une clé)
    et 4 champs pour loger le résultat final : Champ1, Champ2, Champ1B, Champ2B, Champ3B et Champ4B

    Quel est cet algorithme ?

    1ère étape :
    Je constate que, quel que soit le cas (option / pas d’option), mon résultat final contient une ligne du type

    #X, YY:00$
    Dans « ContenuB », je vais pour chaque #X, YY:00$ différent créer une ligne donc

    #1, 12:00$,#1, 12:00$
    #2, 12:00$,#2, 12:00$
    #3, 12:00$,#3, 12:00$
    #4, 12:00$,#4, 12:00$
    #5, 14:00$,#5, 14:00$
    #6, 12:00$,#6, 12:00$

    C’est l’objet de la requête « ajout » Requête2AjoutDes1èresLignes :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO ContenuB ( champ1, champ2, champ1B, champ2B )
    SELECT ContenuA.champ1, ContenuA.champ2, ContenuA.champ1, ContenuA.champ2
    FROM ContenuA
    GROUP BY ContenuA.champ1, ContenuA.champ2, ContenuA.champ1, ContenuA.champ2;
    En français :
    ajoute dans champ1, champ2, champ1B, champ2B de ContenuB
    - pour le 1er cité : le champ1 de ContenuA
    - pour le 2ème cité : le champ2 de ContenuA
    - pour le 3ème cité : le champ1 de ContenuA
    - pour le 4ème cité : le champ2 de ContenuA
    et cela, 1 seule fois pour chaque combinaison Champ1/Champ2 différente.
    Excuse le mauvais français : au départ c’est du mauvais anglais !

    2ème étape :
    S’il s’agit d’un produit avec option, il faut en plus ajouter une ligne
    #X, YY:00$,Champ3, Champ4
    C’est l’objet de la requête : « Requête3AjoutsDesLignesComplémentaires »

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO ContenuB ( champ1, champ2, champ3B, champ4B )
    SELECT ContenuA.champ1, ContenuA.champ2, ContenuA.champ3, ContenuA.champ4
    FROM ContenuA
    WHERE (((ContenuA.champ1) In (SELECT ContenuA.champ1 FROM ContenuA GROUP BY ContenuA.champ1 HAVING (((Sum(1))<>1));)));
    Pour la traduction française, si tu as compris mon explication pour la requête précédente tu n’as pas de problème jusqu’à Where.
    Plus difficile à comprendre.
    D’abord, je t’explique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ContenuA.champ1 FROM ContenuA GROUP BY ContenuA.champ1 HAVING (((Sum(1))<>1));
    Si tu introduis ce code dans une requête tu obtiens la forme graphique suivante :
    ---------------------image jointe
    Tu opères un regroupement des lignes Champ1 et l’expression 1
    Tu demandes 1 ligne par champ1 différent et la somme des « 1 » rencontrés
    concrètement
    #1, 12:00$, -----, -----
    #2, 12:00$, -----, -----
    #3, 12:00$, -----, -----
    #4, 12:00$, -----, -----
    #5, 14:00$, bleu, 1:00$
    #5, 14:00$, gris, 1:00$
    #6, 12:00$, -----, -----

    te donne :

    #1, 1
    #2, 1
    #3, 1
    #5, 2
    #6, 1

    Mais tu ne retiens que ceux qui ont autre chose que « 1 » dans la 2ème colonne, savoir #5, 2.

    Pour en revenir à notre clause Where, tu demandes d’ajouter des lignes de détail uniquement pour les enregistrements qui ont plus d’une occurrence dans Contenu de A.

    ouf !

    Pour compléter l’algorithme, il faut d’abord s’assurer que « ContenuB » est vide au départ. Il faut donc le purger du contenu, éventuel, du traitement d’un autre « ContenuA » antérieur.
    D’où la requête « Requête1PurgeDeB »
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE ContenuB.*
    FROM ContenuB;
    En français XVII ème « Videz-moi ce contenu que je ne saurais voir … »

    Conclusion partant de « ContenuA »
    si tu exécutes dans l’ordre Requête1PurgeDeB, Requête2AjoutDes1èresLignes, Requête3AjoutsDesLignesComplémentaires
    Tu aboutis à « ContenuB » qui, trié judicieusement, te donne le résultat souhaité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ContenuB.champ1B, ContenuB.champ2B, ContenuB.champ3B, ContenuB.champ4B
    FROM ContenuB
    ORDER BY ContenuB.champ1, ContenuB.champ3B, ContenuB.champ4B;
    Comment automatiser cela ?
    Va voir dans la base jointe à mon post précédent l’événement « sur activation » du formulaire 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Current()
    DoCmd.SetWarnings False   'pas de message (svp)
    DoCmd.OpenQuery "Requête1PurgeDeB"
    DoCmd.OpenQuery "Requête2AjoutDes1èresLignes"
    DoCmd.OpenQuery "Requête3AjoutsDesLignesComplémentaires"
    Me.ContenuB_sous_formulaire.Requery
    DoCmd.SetWarnings True    ' rétablir les messages
    'corrige dans l'original,
    'je constate que j'ai oublié cette instruction
    End Sub
    Allez, à la prochaine.
    Bonne journée

Discussions similaires

  1. [AC-2010] Actualiser un sous-formulaire dans un sous-formulaire
    Par Panada dans le forum IHM
    Réponses: 3
    Dernier message: 11/12/2010, 20h07
  2. Formulaires dans Word sous Vista
    Par Sissi-Fanou dans le forum Word
    Réponses: 2
    Dernier message: 10/03/2010, 10h55
  3. [AC-2007] créer des sous catégories dans un sous formulaire
    Par damlimoges dans le forum IHM
    Réponses: 2
    Dernier message: 12/06/2009, 08h31
  4. Réponses: 9
    Dernier message: 05/08/2008, 09h12
  5. Réponses: 0
    Dernier message: 12/05/2008, 19h40

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