OVH Cloud OVH Cloud

problème avec une requête

8 réponses
Avatar
ThunderBirds
Bonjour à toute la communautée,

J'ai un petit soucis avec une requête dans une BDD facturation, dont voici
en partie les tables.
T_OPTION(OPT_IDOPTION, OPT_INTITULE)
T_ARTICLE(ART_IDART, ART_INTITULE)
T_TARIF(OPT_IDOPTION#, ART_IDART#, TAR_PRIX)
T_FACTURE(FACT_IDFACT, FACT_DATE, CLI_IDCLI#)
T_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, QTE)

R_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, TAR_PRIX, QTE)
La requête ci-dessus a été créée avec des éléments des tables
T_FACTUREDETAIL, T_ARTICLE et T_TARIF
Lorsque j'exécute la requête ci-dessus, aucune ligne s'affiche.
Par contre, si je supprime de ma requête l'élément TAR_PRIX, une ligne
vierge s'affiche.

Quelqu'un pourrait-il m'indiquer quoi faire, car j'utilise la requête
R_FACTUREDETAIL pour créer mon sous-formulaire de saisie de facture.

Merci d'avance

8 réponses

Avatar
3stone
Salut,

"ThunderBirds"
| J'ai un petit soucis avec une requête dans une BDD facturation, dont voici
| en partie les tables.
| T_OPTION(OPT_IDOPTION, OPT_INTITULE)
| T_ARTICLE(ART_IDART, ART_INTITULE)
| T_TARIF(OPT_IDOPTION#, ART_IDART#, TAR_PRIX)
| T_FACTURE(FACT_IDFACT, FACT_DATE, CLI_IDCLI#)
| T_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, QTE)
|
| R_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, TAR_PRIX, QTE)
| La requête ci-dessus a été créée avec des éléments des tables
| T_FACTUREDETAIL, T_ARTICLE et T_TARIF
| Lorsque j'exécute la requête ci-dessus, aucune ligne s'affiche.
| Par contre, si je supprime de ma requête l'élément TAR_PRIX, une ligne
| vierge s'affiche.
|
| Quelqu'un pourrait-il m'indiquer quoi faire, car j'utilise la requête
| R_FACTUREDETAIL pour créer mon sous-formulaire de saisie de facture.


Comme tu ne donne pas le code SQL de ta requête...

Regarde la relation entre tes tables, car avec un "inner join" il faut
que toutes les tables concernées possèdent des données.
Modifie selon les besoins en "left join"...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
ThunderBirds
Bonjour Pierre,

Effectivement, si je modifie dans ma requête les jointures comme vous me
l'indiquez, lorsque j'exécute la requête, je visualise la liste de tous les
articles.

Voici le code SQL de ma requête R_FACTUREDETAIL
SELECT T_FACTUREDETAIL.FACT_IDFACT#, T_FACTUREDETAIL.ART_IDART#,
T_ARTICLE.ART_INTITULE, T_FACTUREDETAIL.QTE, T_TARIF.TAR_PRIX,
T_TARIF.OPT_IDOPTION#
FROM (T_ARTICLE LEFT JOIN T_TARIF ON T_ARTICLE.ART_IDART =
T_TARIFPRIX.ART_IDART#) LEFT JOIN T_FACTUREDETAIL ON T_ARTICLE.ART_IDART =
T_FACTUREDETAIL.ART_IDART;

Par contre et malgré tout, mon sous-formulaire est toujours inaccessible, je
ne peux toujours pas sélectionner de ligne pour saisir des articles.

Là, malheureusement, je suis dépassé. Et je ne sais pas quoi faire.

Cordialement


Salut,

"ThunderBirds"
| J'ai un petit soucis avec une requête dans une BDD facturation, dont voici
| en partie les tables.
| T_OPTION(OPT_IDOPTION, OPT_INTITULE)
| T_ARTICLE(ART_IDART, ART_INTITULE)
| T_TARIF(OPT_IDOPTION#, ART_IDART#, TAR_PRIX)
| T_FACTURE(FACT_IDFACT, FACT_DATE, CLI_IDCLI#)
| T_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, QTE)
|
| R_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, TAR_PRIX, QTE)
| La requête ci-dessus a été créée avec des éléments des tables
| T_FACTUREDETAIL, T_ARTICLE et T_TARIF
| Lorsque j'exécute la requête ci-dessus, aucune ligne s'affiche.
| Par contre, si je supprime de ma requête l'élément TAR_PRIX, une ligne
| vierge s'affiche.
|
| Quelqu'un pourrait-il m'indiquer quoi faire, car j'utilise la requête
| R_FACTUREDETAIL pour créer mon sous-formulaire de saisie de facture.


Comme tu ne donne pas le code SQL de ta requête...

Regarde la relation entre tes tables, car avec un "inner join" il faut
que toutes les tables concernées possèdent des données.
Modifie selon les besoins en "left join"...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
Salut,

"ThunderBirds"
| Effectivement, si je modifie dans ma requête les jointures comme vous me
| l'indiquez, lorsque j'exécute la requête, je visualise la liste de tous les
| articles.
|
| Voici le code SQL de ma requête R_FACTUREDETAIL
| SELECT T_FACTUREDETAIL.FACT_IDFACT#, T_FACTUREDETAIL.ART_IDART#,
| T_ARTICLE.ART_INTITULE, T_FACTUREDETAIL.QTE, T_TARIF.TAR_PRIX,
| T_TARIF.OPT_IDOPTION#
| FROM (T_ARTICLE LEFT JOIN T_TARIF ON T_ARTICLE.ART_IDART | T_TARIFPRIX.ART_IDART#) LEFT JOIN T_FACTUREDETAIL ON T_ARTICLE.ART_IDART | T_FACTUREDETAIL.ART_IDART;
|
| Par contre et malgré tout, mon sous-formulaire est toujours inaccessible, je
| ne peux toujours pas sélectionner de ligne pour saisir des articles.


Qu'entends tu par "inaccessible" ? que tu n'arrive pas à y saisir les données ?
Cela ne m'étonne pas vraiment...

Veille d'abord à des relations cohérente entre les tables, ton formulaire
principal sera basé sur la table facture et le sous formulaire sur la table
détail facture (ou par l'intermédiaire de requêtes...)
Le lien entre le formulaire principal et le sous-formulaire se fera via
les champs père et fils.

Si tes relations entre tables sont correctes, tu te crée le formulaire principal
et indépendament le sous-formulaire. Place les deux en mode création
et glisse le sous formulaire sur le formulaire principal.
La liaison se créera automatiquement.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
ThunderBirds
Bonjour Pierre,

Effectivement par accessible j'entends bien "y saisir des données".
Je pense que mes relations sont cohérentes, enfin je le pense, je ne suis
pas un "as" sur access, mais j'essaie malgré tout.

Que j'utilise l'assistant ou bien la technique du copier/glisser, les lignes
de mon sous-formulaire sont inaccessibles.

http://cjoint.com/?ezkH7ZUaX5 (BDD 276ko sous access 2003)

Peut être une incohérence, mais je ne sais pas laquelle.

Cordialement.


Salut,

"ThunderBirds"
| Effectivement, si je modifie dans ma requête les jointures comme vous me
| l'indiquez, lorsque j'exécute la requête, je visualise la liste de tous les
| articles.
|
| Voici le code SQL de ma requête R_FACTUREDETAIL
| SELECT T_FACTUREDETAIL.FACT_IDFACT#, T_FACTUREDETAIL.ART_IDART#,
| T_ARTICLE.ART_INTITULE, T_FACTUREDETAIL.QTE, T_TARIF.TAR_PRIX,
| T_TARIF.OPT_IDOPTION#
| FROM (T_ARTICLE LEFT JOIN T_TARIF ON T_ARTICLE.ART_IDART > | T_TARIFPRIX.ART_IDART#) LEFT JOIN T_FACTUREDETAIL ON T_ARTICLE.ART_IDART > | T_FACTUREDETAIL.ART_IDART;
|
| Par contre et malgré tout, mon sous-formulaire est toujours inaccessible, je
| ne peux toujours pas sélectionner de ligne pour saisir des articles.


Qu'entends tu par "inaccessible" ? que tu n'arrive pas à y saisir les données ?
Cela ne m'étonne pas vraiment...

Veille d'abord à des relations cohérente entre les tables, ton formulaire
principal sera basé sur la table facture et le sous formulaire sur la table
détail facture (ou par l'intermédiaire de requêtes...)
Le lien entre le formulaire principal et le sous-formulaire se fera via
les champs père et fils.

Si tes relations entre tables sont correctes, tu te crée le formulaire principal
et indépendament le sous-formulaire. Place les deux en mode création
et glisse le sous formulaire sur le formulaire principal.
La liaison se créera automatiquement.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
Salut,

"ThunderBirds"
| Effectivement par accessible j'entends bien "y saisir des données".
| Je pense que mes relations sont cohérentes, enfin je le pense, je ne suis


La requête sur laquelle tu base le sous formulaire doit être "updatable",
donc qui peut être mise à jour. Essaies tout simplement de saisir
directement dans la requête.

- Si cela fonctionne, tu pourras saisir également dans le sous formulaire.
- Si cela ne fonctionne pas, cela veut dire que Access n'est pas capable
d'attribuer tous les champs rencontrés à la bonne table.

Il te faut donc simplifier ta requête pour ne laisser que les champs
dont Access peut clairement attribuer l'originre et le contenu.

Si l'on regarde la requête donnée plus haut, on peut penser que tous
ces champs ne seront pas modifiés dans le sous formulaire.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
ThunderBirds
Bonjour Pierre,

Selon toi, mon schéma ci-dessous mérite-t-il d'être modifié ou peut-on le
laisser en l'état malgré le problème que je rencontre avec mon
sous-formulaire ?
T_OPTION(OPT_IDOPTION, OPT_INTITULE)
T_ARTICLE(ART_IDART, ART_INTITULE)
T_TARIF(OPT_IDOPTION#, ART_IDART#, TARIF)
T_CLIENT(CLI_IDCLIENT, CLI_NOM)
T_FACTURE(FACT_IDFACT, FACT_DATE, CLI_IDCLI#)
T_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, QTE)

J'ai essayé une autre parade en créant le sous-formulaire avec la table
T_FACTUREDETAIL uniquement et d'insérer une zone de liste déroulante
indépendante basée sur la table T_TARIF. Le but était d'utiliser la technique
donnée par hervé Insian (update de 2 listes déroulantes), mais c'est un échec.

Cordialement.
Avatar
3stone
re,

"ThunderBirds"
| Selon toi, mon schéma ci-dessous mérite-t-il d'être modifié ou peut-on le
| laisser en l'état malgré le problème que je rencontre avec mon
| sous-formulaire ?
| T_OPTION(OPT_IDOPTION, OPT_INTITULE)
| T_ARTICLE(ART_IDART, ART_INTITULE)
| T_TARIF(OPT_IDOPTION#, ART_IDART#, TARIF)
| T_CLIENT(CLI_IDCLIENT, CLI_NOM)
| T_FACTURE(FACT_IDFACT, FACT_DATE, CLI_IDCLI#)
| T_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, QTE)


Y a que toi pour le savoir...


| J'ai essayé une autre parade en créant le sous-formulaire avec la table
| T_FACTUREDETAIL uniquement et d'insérer une zone de liste déroulante
| indépendante basée sur la table T_TARIF. Le but était d'utiliser la technique
| donnée par hervé Insian (update de 2 listes déroulantes), mais c'est un échec.


L'histoire des deux listes de Hervé fonctionne parfaitement !
Mais c'est destiné à la sélection d'un enregistrement parmis un grand nombre.
Je ne vois pas ce que cela vient faire ici...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
ThunderBirds
Bonjour Pierre,

Concernant la technique d'Hervé, elle fonctionne. J'ai des petites appli où
j'utilise sa technique.
Mais dans ma problématique avec sous-formulaire, cela ne marche pas. Je
pensais qu'un sélectionnant un article dans la 1ère liste issue de la table
T_FACTUREDETAIL, je pourrais alors sélectionner dans la 2ème liste, qui est
indépendante et dont la source de contrôle est issue de la table T_TARIF, une
valeur (OPT_IDOPTION#) qui est rattachée à l'article (ART_IDART#) de cette
1ère liste.
Peut être que mon approche n'est pas du tout bonne. je suis totalement à
l'ouest comme on dit!
Et seul, des spécialistes comme vous, pouvez nous indiquer si on est dans le
Vrai ou le Faux.

T_OPTION(OPT_IDOPTION, OPT_INTITULE)
T_ARTICLE(ART_IDART, ART_INTITULE)
T_TARIF(OPT_IDOPTION#, ART_IDART##, TARIF)
T_CLIENT(CLI_IDCLIENT, CLI_NOM)
T_FACTURE(FACT_IDFACT, FACT_DATE, CLI_IDCLI#)
T_FACTUREDETAIL(FACT_IDFACT#, ART_IDART#, QTE)

Cordialement