|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Issa-Pierre GassamaInscription : octobre 2011 Messages : 10 ![]() |
Bonjour,
J'espère énoncé en bonne place et clairement mon problème. J’ai : Une table PRODUITS (ref_produit ; nom ; couleur ; etc…) Une table BONS DE COMMANDES (ref_bdc ; date ; client ; etc…) Une table COMMANDES (ref_commande ; ref_bdc ; ref_produit ; Quantité ) Une commande correspond à un produit – Plusieurs commandes composent un Bons de commandes La demande à partir de là c’est un formulaire de saisie de bon de commande 1 – Première solution Je créé un sous-formulaire COMMANDES (en vue feuille de données) dans un formulaire (en vue formulaire unique) BON DE COMMANDES (lié par le ref_bdc) Par un système de liste déroulante je choisis un produit et j’indique la Quantité OK – ça marche 2 – Deuxième solution Le client veut avoir un écran de sélection global des produits qui composent le bon de commande C'est-à-dire : voir tous les produits (rangés par famille – type de produit – et une ligne pour chaque produit) sur une page Donc il faut un formulaire basé sur une table (BDC_VISUEL) dans lequel il faudra cette fois un champ Quantité pour chaque produit Les données dans ma table BDC_VISUEL seront ainsi Ref_bdc_visuel ; ref_bdc ; QuantitéProduit1 ; QuantitéProduit2 ; QuantitéProduit3 Moi ce que je veux c’est transformé ces données dans le format de ma table COMMANDES Donc : (ref_commande ; ref_bdc ; ref_produit ; Quantité ) Pour cela je crée des requêtes ajout pour chaque QuantitéProduit de mon formulaire VISUEL Je lui demande de sélectionner les lignes (ref_bdc_visuel) pour lesquelles le champ QuantitéProduit1<>0 et d’ajouter pour ces lignes les champs Ref_BDC ; Ref_produit1 et QuantitéProduit1 dans les champs Ref_BDC ; Ref_Produit et Quantité de la table COMMANDES) Et il faut créer la même requête pour chaque produit et lorsque l’utilisateur a fini de remplir le BDC, il valide et toutes les requêtes s’exécutent On arrive bien à la création de lignes dans la table COMMANDES Mais….. 1 – il faut créer cette requête ajout pour chaque produit de l’écran de saisie VISUEL Il y a 900 produits (en gros disons 50 produits dans 20 familles) C’est gérable en écran visuel, ça revient à faire 20 blocs de 50 lignes et je peux découper mon formulaire en onglets pour regrouper des familles je le sens bien Mais créer 900 requêtes ajouts et les faire s’éxécuter l’une après l’autre à la validation de commande : C’EST CHAUD !! 2 – de plus je suis quasi-certain que la prochaine demande du client , ça va être de pouvoir modifier le bon de commande visuel Ce qui implique : l’ouverture d’un formulaire CORRECTION DE COMMANDE, qui va avoir la même forme que le formulaire VISUEL Et qui devra comprendre un bouton correction pour chaque produit (car on ne veut évidemment pas modifierl’ensemble du bon de commande et repartir à zéro) bouton qui déclenchera une requête suppression de la commande correspondante dans la table COMMANDES Donc à nouveau 900 requêtes à créer (et cette fois qui s’exécute une par une à chaque appui sur le bouton correction correspondant) Suis-je sur une voie sans issue ? La programmation en VB serait utile ? Si oui…Je n’y connais rien ! est-ce accessible ? Quelqu’un voit-il une autre solution ? Merci. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Bonjour IpG34,
Résumons. Tu as : - une table avec les coordonnées des clients ; - une table avec les coordonnées des produits. Tu voudrais : - pouvoir encoder des commandes ; - visualiser une commande ; - éventuellement, la modifier après coup. Tu es débutant, en tout cas pour ce qui concerne le code. Ai-je tout dit ? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Issa-Pierre GassamaInscription : octobre 2011 Messages : 10 ![]() |
Bonjour,
oui c'est cela avec la problématique d'un bon de commande sur lequel apparait visuellement tous les produits et un champ pour indiquer la quantité commandée je débute en effet dans le code depuis tout à l'heure : j'ai réussi à créer le code VBA qui exécute l'une de mes requetes ça donne ça : Sub test() DoCmd.RunSQL "INSERT INTO commandes_produits_parBDC ( Ref_bdc, Ref_Produit, QProduit )SELECT BDC_VISUELS.Ref_bdc, BDC_VISUELS.Ref_P0102, BDC_VISUELS.QP01 FROM BDC_VISUELS WHERE (((BDC_VISUELS.QP01)<>0))" End Sub et ça marche si je viens coller 900 fois cette commande SQL, la commande exécutera la requete pour chacun de mes produits à chaque fois je dois juste changer Ref_P01 et QP01 par Ref_Pn et QPn évidemment très fastidieux est-il possible de demander à VBA d'éxécuter la requete SQL en incrémentant Ref_P et QP automatiquement ? je dois commencer à plus être très clair ? merci. |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Ne cours pas déjà !
On va d'abord essayer de comprendre le but et on verra après comment on fait. À quoi va servir ton appli ? Imagine, le bon de commande est fait. Qu'est-ce qui se passe ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Issa-Pierre GassamaInscription : octobre 2011 Messages : 10 ![]() |
le bon de commande est saisie :
on a crée des commandes pour chaque produit commandé par le biais du bon de commande moi derrière : je déduis la quantité commandée du produit pour actualiser mon stock je calcule le montant de chaque commande produit que j'additionne pour avoir le montant total du bon de commande évidemment chaque bon de commande est attaché à un client deriière : facture, bon de livraison, etc... |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Tout ça fait partie de la même application Access ?
Qu'est ce qui t'empêche, par exemple, quand tu composes la commande : - de vérifier que c'est en stock ; - de calculer la valeur de la commande ; - ... ? Quelle version d'Access ? |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Issa-Pierre GassamaInscription : octobre 2011 Messages : 10 ![]() |
Access 2007
oui en effet il est prévu en outre - d'indiquer au moment de la sélection du client sur le BDC que l'on vérifie son encours - de vérifier lorsque ajoute un produit au bon de commande qu'il est en stock - de gérer des alertes en dessous d'un certain seuil de stock - de gérer les imports de produits - les bon de transports etc, etc.... tout ceci est assez clair, a été pensé "sur papier" mais....mon problème actuel est (si l'on se reporte au premier msg de cette discussion) que le client souhaite un écran global de sélection des produits commandés par le biais du bon de commande ce qui entraine un prob. de requete multiple à exécuter et je cherche à réaliser cela (sur une piste VBA) merci. |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Si tu veux, j'ai un peu de temps pour t'aider.
Jette un coup d'œil sur cette discussion, juste pour voir la méthode de travail. Dis si ça te convient. |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Issa-Pierre GassamaInscription : octobre 2011 Messages : 10 ![]() |
ben oui écoutes je veux bien , c'est un peu pour avoir de l'aide que j'ai posté un msg au départ....
après je ne cherche pas un accompagnement pour tout le projet juste ce premier point sur lequel je bloque en attendant le suivant |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
D’après ce que j’ai compris jusqu’ici, tu as seulement besoin d’un table qui contient les articles commandés, avec les champs suivants : un id autonum comme clé un N° de bon de commande une date de commande la Ref du produit la quantité.
Je ne vois pas, a priori, l'utilité d'une table des bons de commande. Un formulaire continu et « multiusage » (qui sert à encoder, consulter et modifier) : Si nouvelle commande : attribution d’un N° d’ordre = le dernier attribué + 1 date du jour, par défaut on choisit un client (zone de liste) et on encode une ligne par item avec code produit (zone de liste) et quantité Si consultation : recherche sur client, N° bon de commande => affichage des items de la commande sélectionnée. Cela me paraît assez simple. |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Issa-Pierre GassamaInscription : octobre 2011 Messages : 10 ![]() |
c'est simple si comme tu le dis :
"on encode une ligne par item avec code produit (zone de liste) " c'est ce que j'indiquais comme 1ere solution dans mon 1er msg en précisant que ça je savais faire mais.... on ne veut pas sélectionner les articles par ligne avec un menu déroulant on veut sélectionner les articles en indiquant la quantité commandé dans un champ placé à coté du nom de l'article dans un formulaire comprenant tous les articles mon problème est-il mal expliqué ? merci. |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Donc si je te comprends :
Tu aurais à l’écran, tous les produits « commandables » affichés, chacun avec un champ juxtaposé pour y indiquer la quantité + les contrôles pour identifier client, date et N° du bon. Tu pourrais dans ce cas baser ton formulaire d'encodage sur une table "martyre"* contenant tous les produits et quantité zéro. L'utilisateur complète les quantités + les contrôles d'identification. Quand c'est complet, il clique sur un bouton qui va déclencher la mise à jour de la table des commandes. Donc une seule requête sur la table martyre : si quantité = zéro, on ne fait rien ; si <>0, on ajoute une ligne dans la table des commandes. * elle ne sert qu'à recueillir les données de cette commande et les quantités sont remises à zéro quand la commande est traitée. |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Issa-Pierre GassamaInscription : octobre 2011 Messages : 10 ![]() |
Donc si je te comprends :
Tu aurais à l’écran, tous les produits « commandables » affichés, chacun avec un champ juxtaposé pour y indiquer la quantité + les contrôles pour identifier client, date et N° du bon. oui - exact - identif client date ne sont rentrés qu'une fois sur le BDC Tu pourrais dans ce cas baser ton formulaire d'encodage sur une table "martyre"* contenant tous les produits et quantité zéro. L'utilisateur complète les quantités + les contrôles d'identification. Quand c'est complet, il clique sur un bouton qui va déclencher la mise à jour de la table des commandes. [COLOR="rgb(46, 139, 87)"]ok je teste plus tard dans la soirée et je fais un retour[/COLOR] Donc une seule requête sur la table martyre : si quantité = zéro, on ne fait rien ; si <>0, on ajoute une ligne dans la table des commandes. * elle ne sert qu'à recueillir les données de cette commande et les quantités sont remises à zéro quand la commande est traitée. |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Issa-Pierre GassamaInscription : octobre 2011 Messages : 10 ![]() |
Donc si je te comprends :
Tu aurais à l’écran, tous les produits « commandables » affichés, chacun avec un champ juxtaposé pour y indiquer la quantité + les contrôles pour identifier client, date et N° du bon. oui - exact - identif client date ne sont rentrés qu'une fois sur le BDC Tu pourrais dans ce cas baser ton formulaire d'encodage sur une table "martyre"* contenant tous les produits et quantité zéro. L'utilisateur complète les quantités + les contrôles d'identification. Quand c'est complet, il clique sur un bouton qui va déclencher la mise à jour de la table des commandes. [COLOR="rgb(46, 139, 87)"]ok je teste plus tard dans la soirée et je fais un retour[/COLOR] Donc une seule requête sur la table martyre : si quantité = zéro, on ne fait rien ; si <>0, on ajoute une ligne dans la table des commandes. ben non là je vois pas comment autrement que en faisant une requète pour CHAQUE champ quantité de chaque produit * elle ne sert qu'à recueillir les données de cette commande et les quantités sont remises à zéro quand la commande est traitée. |
|
|
00
|
|
|
#15 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Peux-tu créer une bdd de test compatible Access2000 contenant
- la table clients (avec des données anonymes) - la table avec quelques produits - le formulaire d’encodage s’il existe Poste-la en pièce jointe, je la complèterai avec un exemple et nous pourrons alors discuter sur du concret. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com