c'est fait
Cordialement
Version imprimable
Je suppose que le libellé est le nom du conditionnement
Salut anakinsqt.
Je propose que tu modifie ton analyse. Vu que les intitulés seront utilisés pour faire une recherche, je propose que tu modifie la clé de cette rubrique (c'est-à-dire la rubrique intitulé) en "clé avec doublons".
Ensuite, voici le code que tu pourrais mettre derrière la combo; précisément lors de la sélection d'une ligne de cette dernière:
@StephCool :
1. Modif d'analyse : pas sûr que ce soit possible.
2. Si modif : Je n'aurais pas mis en clé : aucun intérêt
3. Si modif : J'aurais plutôt créé une table des conditionnements avec un id auto (clé unique) et mis cet id dans les tables qui utilisent le conditionnement (au lieu du libellé).
Je crains malheureusement qu'il faille en passer par là. L'analyse de anakinsqt est loin d'être 2FN (e.g. l'attribut société qui dépend de Fournisseur.)
Les tables entrées et sorties qui sont les mêmes entités (un booléen peut enlever l'ambigüité.)
C'est en effet la solution la plus simple au niveau de la maintenance. cf la firme de soda au logo rouge qui est passé d'un conditionnement de 1.5l à 1.25l, pour ne pas avoir à augmenter ses prix suite à la "taxe soda", tout en gardant les mêmes références.
@anakinsqt
Je te conseille vivement de relire tes cours sur les SGBD relationnels, quitte à les compléter par http://georges.gardarin.free.fr/Livr...XX-TotalBD.pdf, puis, comme te l'ont déjà écrit de nombreuses personnes de suivre l'auto formation. (après le Gardarin, c'est comme lire Oui Oui après s'être tapé Guerre et paix)
En attendant je te propose cette analyse. La différence entre les données concernant les entrées et les sorties se fait grâce à l'attribut NDX_TypeMouvementPièce jointe 508510
@Voroltinquo +1
En fait, je n'ai même pas regardé l'analyse (juste l'histoire du conditionnement). Comme c'est pour l'afficher dans une combo, c'est un réflexe (presque pavlovien :aie:) de mettre un id.
En la regardant vite fait, j'avoue que mettre 2 tables, c'est pas top. Après, ça peut se justifier. Mais c'est clair que c'est pas 2FN).
Je pense que vous êtes perfectionniste. D'après ce que je comprends , il faut voir ce conditionnement comme une description secondaire du produit. On a un identifiant-produit. On a un des champs où on affiche la description-n°1 du produit (via une combo). Et quand on choisit tel ou tel enregistrement, il faut afficher dans un autre champ la description n°2 du produit (=son conditionnement).
Personnellement, je n'aime pas les combo-liste. Une combo de type Table permettrait de faire ça très bien. Dans la combo, on a une table (au lieu d'une liste classiquement), et dans cette table, on a le conditionnement dans une colonne masquée.
Et la seule ligne de code à mettre dans le programme va être, quand on sélectionne une ligne de la combo :
Je mets le conditionnement dans une colonne masquée. Mais dans un premier temps, il faut laisser cette colonne visible. C'est moins beau, mais ça permet de détecter des bugs éventuels. Toujours avancer étape par étape.Code:
1
2
3 libelle1 = combo1.colonne_conditionnement [combo1] // ou peut-être : libelle1 = combo1[combo1].colonne_conditionnement
Voici ce que je voulais dire: modifier le fichier de donnée "Produit";
Pièce jointe 508473
Pièce jointe 508475
Toutefois, je ne demande pas de supprimer les autres rubriques du fichier de donnée (si il y en a d'autre, en plus des deux que j'ai mis dans mon fichier)
Je demande juste de mettre la rubrique "Libellé" en "clé avec doublons"
@StephCool,
je ne suis pas sûr que cela ait une vraie utilité. Pour le moment, le souci principal est le conditionnement. J'ai également l'impression que tu confond le libellé du conditionnement et le libellé du produit ! On parle bien d'un produit qui a un id et un libellé et un conditionnement. Ex: id : 12, Libellé : bouteille d'eau, conditionnement : Bouteille plastique 1,5l.
Salut anakinsqt. Peut-on echanger?
Le conditionnement n'a pas de Libellé, @frenchsting, d'après l'analyse que anakinsqt nous a fourni.
"Libellé" et "conditionnement" sont des rubriques du fichiers "Produit"; retourne voir sa capture de l'analyse.
Voici comment j'ai compris son problème:
il a (sur une fenêtre) une combo et un champ de saisi et la combo est remplie avec les libellés des produits.
lorsqu'on sélectionne un libellé dans la combo, le conditionnement correspondant (dans le fichier de donnée Produit) devrait être mis dans le champ de saisi présent sur la fenêtre. @anakinsqt, c'est bien cela, non?
Si donc en fonction du libellé on affiche un conditionnement, il serait intérêssant d'utiliser le libellé comme clé doublons, pour faciliter la recherche dans la base de donnée
J'ai effectué des recherches dans des tutos et sur des forums, j'ai donc saisie dans ma combo Libellé et le test m'indique que le Conditionnement a bien été trouvé.
Mais toujours pas de solution pour que cela s'affiche dans le champ de saisie Conditionnement
Merci pour votre aideCode:
1
2
3
4
5
6
7
8 HLitRecherchePremier(EntréeStock,Conditionnement,Conditionnement) SI HTrouve(EntréeStock) ALORS Info("conditionnement trouvé") SINON Avertissement("conditionnement non trouvé") FIN
Okay c'est déjà bon. Voici ce que tu dois faire pour afficher le conditionnement:
Code:
1
2
3
4
5
6
7
8 HLitRecherchePremier(EntréeStock,Conditionnement,Conditionnement) SI HTrouve(EntréeStock) ALORS SAI_conditionnement=EntréeStock.Conditionnement //SAI_conditionnement étant le champ de saisi dans lequel tu veux que le conditionnement s'affiche SINON Avertissement("conditionnement non trouvé") FIN
Merci pour votre aide; mais SAI_Conditionnement ne prends pas, il s'affiche en rouge avec un message d'erreur
@anakinsqt, finalement, quelle est l'analyse que tu utilises? parce qu'a relire les messages que frenchsting m'adresse, nous ne travaillons pas sur les même analyse. J'ai aussi vu une autre analyse que voroltinquo a envoyé.
Peux-tu envoyer une capture d'écran de l'analyse que tu utilises actuellement?
@Frenchsting, quelle analyse utilises tu?
Si elle est différente de celle que j'utilise, je comprends donc pourquoi nous ne nous comprenions pas
Pièce jointe 508547Pièce jointe 508550
Voici des copies pour ce qui concerne le conditionnement
Le code d'anakinst trouvera le conditionnement si un produit précédent a déjà ce conditionnement. On recherche dans la table ENTREESTOCK un conditionnement donné.
Le conditionnement est lié au PRODUIT (il n'a donc rien a faire la la table ENTREESTOCK)
Pour une entrée donnée, il faut donc
1-récupérer le conditionnement du produit dans la table PRODUIT soit via une requête, soit via hlitrecherche
2-afficher le conditionnement.
Dans le code de la combo produit il faudra ajouter (Sélection d'une ligne)
SAI_Conditionnement ne doit être reliée à aucune rubrique. En effet, lors de l'affichage d'une donnée dans le champ combo, "Sélection d'une ligne" est exécutéeCode:
1
2
3
4
5
6 SI HLitRecherche(Produit,PK_Produit,MoiMeme) ALORS //La valeur mémorisée de la combo devra être PK_Produit SAI_Conditionnement=Produit.Conditionnement SINON Erreur("Une erreur est survenue"+CRLF+HErreurInfo()) FIN