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 :

impossible dajouter des données a un sous formulaire


Sujet :

IHM

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 114
    Points : 42
    Points
    42
    Par défaut
    D'abord, quel formulaire ? (merci d'utiliser des noms : "NouveauxProjets", ou "sousformArticles" ou "Détails" ou ???)
    Oui désolé.. je parlais bien du sous formArticles.
    Commence par tester dans l'ordre :
    - la requête source du formulaire : est-ce que tu peux la modifier, sans avoir ce message ?

    voici la source de la requete ReqArticlesNouveauProjet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [Fiche Projet-Détails Projet].[Code projet Achats], [Articles/Matériels].[Référence article], [Articles/Matériels].[Nom Article/matériels], [Articles/Matériels].[Nom Fournisseur], [Fiche Projet-Détails Projet].Quantité, [Fiche Projet-Détails Projet].[Devise du devis], [Fiche Projet-Détails Projet].[Date du devis], [Fiche Projet-Détails Projet].[n° devis fournisseur], [Fiche Projet-Détails Projet].[Remise obtenue pour projet], [Fiche Projet-Détails Projet].[Prix unitaire obtenu pour projet], [Fiche Projet-Détails Projet].[Poste retenu]
    FROM [Articles/Matériels] INNER JOIN [Fiche Projet-Détails Projet] ON ([Articles/Matériels].[Référence article] = [Fiche Projet-Détails Projet].[Référence article 1]) AND ([Articles/Matériels].[Nom Fournisseur] = [Fiche Projet-Détails Projet].[Nom fournisseur]);
    Cette requete ne marche pas completement : sur 2 champs (referencearticle et nomfournisseur), je ne peux apporter aucune modification et dans la barre des taches j'ai : "Les enregistrements dans la table "fiche projet-détail projet" ne devrait pas se trouver du coté "un"."

    ce message vous dit-il quelquechose ?
    [/code]

  2. #22
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Oh lalala !
    Je pense qu'l vaudrait mieux faire abstraction de cette requête, pour de nombreuses raisons.
    1- elle contient toujours la liaison sur le [Nom Fournisseur], que tu as dit avoir supprimée ()
    2- les liaisons sont à l'endroit/envers, je ne m'y retrouve pas,
    3- les clés sont citées dans le JOIN, mais sont pas là..
    etc. etc.

    Donc, remonte un peu plus haut.
    Tu veux juste ajouter des Articles dans chaque projet ?
    Donc ajouter des enregistrements dans la table [Fiche Projet-Détails Projet] ?

    Il te faut :
    - Formulaire principal, intitulé formulaire "Projets", basé sur une requête qui contient toute la table [Généralités Projets] : OK ? (faut 2 minutes avec l'assistant pour faire un formulaire neuf et propre)

    - sur le form. "Projets", un sous formulaire "Détails" (neuf et propre), basé sur une requête qui contient
    -- la table [Fiche Projet-Détails Projet]
    -- liée (de gauche à droite : on veut voir tous les Détails, et seulement les Articles qui correspondent) à la table [Articles/Matériels] uniquement sur le champ [Référence article 1] = [Référence article].
    Tu peux pas enlever ce " 1" ?
    -- il faut que le champ [Référence article 1] de la table [Fiche Projet-Détails Projet] soit présent : c'est là que tu vas, sur un nouvel enregistrement, ajouter un article au projet. voir + bas
    -- pour éviter toute confusion, ne mets pas le champ [Référence article] de la table [Articles/Matériels] dans la requête (pas besoin),
    -- tu ajouteras ensuite les autres champs dont les utilisateurs ont besoin :
    --- Quantité, bien sûr
    --- [Nom fournisseur], aussi, mais à condition de n'utiliser que celui de la table [Articles/Matériels] (faut absolument que tu jettes l'autre, celui de [Fiche Projet-Détails Projet] à la poubelle, supprimé de la table, sinon, cafouille toujours)
    --- etc. selon les besoins...

    Le sous-form "Détails" est lié au form."Projets" par les champs père/fils : [Code Projet Achats]
    Donc ces deux champs doivent figurer respectivement dans chaque requête. Enfin, un seul dans chaque requête.

    Sur le sousForm "Détails", tu vas ajouter tous les champs comme contrôles (textbox ou autre...), sauf :
    - la [Référence Article 1] doit être une liste déroulante, dont
    -- la source est une requête basée sur la table [Articles/Matériels],
    -- la colonne liée correspond à la colonne du champ [Référence Article] de la table [Articles/Matériels],
    -- tu peux ajouter le libellé en 2ème colonne (non liée), pour y voir + clair quand on déroule la liste.

    C'est tout.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 114
    Points : 42
    Points
    42
    Par défaut
    Re-bonjour,

    Chaque jour je découvre qu'en fait je ne suis pas parti dans la bonne voie.. mais grâce aux conseils de papy_turbo, je retrouve les idées claire

    Donc en fait j'ai bien refait la requete qui posait problème. Mais j'ai changé d'idée : le sousform, au lieu de contenir des controles (textbox,..) ce qui est lourd lorsqu'il y a beaucoup d'objets, j'ai mis une liste dont la rowsource est :

    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
     
    Me.Liste43.RowSource = 
    "SELECT  
     [Fiche Projet-Détails Projet].[Code projet Achats],
     [Fiche Projet-Détails Projet].[Référence article 1],
     [Fiche Projet-Détails Projet].[Nom fournisseur],
     [Fiche Projet-Détails Projet].[Prix unitaire obtenu pour projet],
     [Fiche Projet-Détails Projet].[Devise du devis],
     [Fiche Projet-Détails Projet].[Date du devis],
     [Fiche Projet-Détails Projet].[n° devis fournisseur],
     [Fiche Projet-Détails Projet].[Poste retenu],
     [Articles/Matériels].[Nom Article/matériels],
     [Fiche Projet-Détails Projet].[Quantité]
    FROM
     [Fiche Projet-Détails Projet] 
    WHERE  
     [Fiche Projet-Détails Projet].[Code projet Achats]= '" 
     & Me.Parent.Code_projet_Achats.Value 
     & "';"
    Ca a l'air de marcher mais est-ce correct syntaxiquement ?

    Merci.

  4. #24
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Non. Désolé.
    1- si tu l'as testé (commence toujours par tester tout code SQL dans une requête, pour voir les erreurs avant de remplir une liste, un formulaire...) : il manque un JOIN entre les 2 tables [Fiche Projet-Détails Projet] et [Articles/Matériels]
    2- ta référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WHERE  
     [Fiche Projet-Détails Projet].[Code projet Achats]= '" 
     & Me.Parent.Code_projet_Achats.Value 
     & "';"
    à Me.Parent dans un code SQL
    2a/- ne marchera jamais. Seul VBA (pas SQL) peut comprendre Me.Parent,
    2b/- sera beaucoup + lente qu'une relation champ père/champ fils (optimisée par Access pour les sous formulaires).
    C'est nettement + lent d'aller chercher la valeur d'un contrôle sur un formulaire, à partir de SQL...
    2c/- tu devras rajouter du code à chaque Form_Current du formulaire principal (à chaque changement de projet) pour réactualiser ta liste,
    Avec un sous formulaire, c'est automatique.
    et
    3/ dans la liste, tu ne peux pas ajouter un nouveau détail, alors qu'il n'y a aucun problème avec le sous formulaire (comme indiqué + haut : liste déroulante sur le code article...)
    Ce cas est typiquement fait pour être un form/sous formulaire, et pas une liste.
    Tu n'utilises une liste que si tu veux voir, sans les modifier, le contenu de chaque projet...

    À ta place, je mettrais un sous formulaire, probablement en mode "Feuille de données".
    Ça ressemble à une liste, en beaucoup plus puissant (ajout, modifs, suppressions, etc.)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 114
    Points : 42
    Points
    42
    Par défaut
    Effectivement papy turbo, c'est ce que j'ai fait : j'ai repris mon bon vieux sous-form, j'ai refait mes requêtes et c'est clair que c'est mieux.

    Merci beaucoup pour tous ces conseils !

    Junty.

  6. #26
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    , si ça marche, c'est tout bon.

    Et merci de ne pas oublier le tag [Résolu], si tu as ta solution

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Manipulation des données d'un sous-formulaire
    Par tafnole dans le forum IHM
    Réponses: 2
    Dernier message: 23/02/2008, 19h23
  2. Réponses: 1
    Dernier message: 30/08/2006, 18h08
  3. afficher des données dans un sous formulaire
    Par issam16 dans le forum Access
    Réponses: 3
    Dernier message: 26/06/2006, 15h36
  4. enregistrement des données d'un sous formulaire
    Par yoyosoleil dans le forum Access
    Réponses: 5
    Dernier message: 19/06/2006, 16h31
  5. Réponses: 6
    Dernier message: 16/09/2005, 10h56

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