Suite d'edit pour un query

nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010 - 24 mars 2006 à 17:32
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 1 avril 2006 à 15:29
Bonjouur,
J'ain un problème avec une application , je m'explique:
Je voudrais passer une commande avce une table article de chaussures

L'utilisateur choisit un modèle, et à partir de là il peut choisir la quantité par pointure ( exemple, il choisit le modèle titan, et il veut 10 paires de pointure 41,25 paires de taille 42, et ainsi de suite; c'est une vente en gros)
Il rentre la quantité par taille dans un edit ( un edit par taille), et le resultat doit s'afficher dans un dbgrid.
Dans ma table, il y'a un un enregistrement par chaussure et taille ( donc, le modèle titan en 42, est un enregistrement, en 43 c'est un autre enregistrement ,etc..).

Comment faire l'algo?? si je veux faire choisir quatre taille différentes, dois je faire 4 query ( j'ai une vingtaine de taille différentes, donc une vingtaine d'edits) , ou bien faut-il utiliser un tableau ou autre, je sais pas

merci de votre aide

9 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 mars 2006 à 18:59
Il faut distinguer trois choses, d'abord la partie saisie à travers un formulaire,
le traitement des informations et ensuite l'affichage du résultat souhaité..
dans la partie à saisir, il faut nécessairement choisir le modèle et le nombre de paires dans la taille.


formulaire : au mimimum une liste déroulante par modèle, pourquoi pas une liste déroulante par taille(certaines peuvent ne pas exister..à voir) et un edit (quantité)

chaque choix donnera lieu à un enregistrement à stocker dans une table avec
affichage en cours des enregistrements passés (possible aussi)


bref, une gestion de saisie de données classiques.(ajout, modif et suppr)


Qt à l'affichage des résultats, on peut faire ce qu'on veut avec des totaux de quantité de paires par taille et par modèle avec un seul query.


D'autres solutions possibles bien sûr.


bon courage.

cantador
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
25 mars 2006 à 11:10
Salut Cantador,

merci pour ton aide, mais pour le problème de taille je ne sais pas utiliser de liste déroulante. D'après le prof, il faut que l'utilisateur fasse une introduction de la commande assez rapide, avec un seul click.


Il ya un edit par taille pour la quantité.

Un choix peut générer plusieurs lignes dans mon dbgrid.

bon voilà, si tu vois la méthode , je suis tout oui...
mais déja un grand merci
a++
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
25 mars 2006 à 17:22
Il faudrait connaître les conditions précises de ton exercice :
et aussi combien de clics etc..peut-on utiliser une base de données ou non etc.
peux-tu nous en poster l'énoncé..

cantador
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
29 mars 2006 à 17:57
Salut cantador,





désolé de ne pas avoir répondu plus tôt...





Voilà, j'ai plus ou moins trouver la solution


j'utilise des labeledit( c'est pratique, le label pour la taille et l'edit pour la quantité) .





Mais il me reste un autre problème.


J'ai un dbgrid qui est lié au query pour faire la recherche de l'article et récupéré ses données.


mais le problème,je fais une boucle pour qu'il recherche tous les chaussures avec leur différente taille. le dbgrid affiche que le dernier query ( je crois que c'est normal..)





Voici mon code





y'a-il un moyen pour que le dbgrid garde les différentes requêtes





je voudrais qu'il garde le premier article ( premier query), ensuite le deuxième article ( deuxième query), ainsi de suite. Je voudrais qu'il affiche tous les querys en même temps; Croit tu que c'est possible?, ou faut-il passer par un autre dbgrid , je sais pas ... si oui comment?





var tail:String;





quantite:integer;
i:integer;
begin
quantite:=0;





adoQuery1.Close;
adoQuery1.SQL.Clear;
for i:= 0 to ComponentCount -1 do
begin
if Components[i] is TLabeledEdit then
if TLabeledEdit(Components[i]).Enabled= true then // pour taille indisponible





begin
adoquery1.SQL.Clear;
tail:=TLabeledEdit(Components[i]).EditLabel.Caption;
quantite:=strtoint((Components[i] as TLabeledEdit).Text);





adoQuery1.SQL.Add('select Nom,Couleur,taille,(PrixVente)as Prix,'+inttostr(quantite)+' as Quantit,(Prix*Quantit) as TOTAL');
adoQuery1.SQL.Add( 'From Article where Nom');
adoQuery1.SQL.Add('LIKE'+quotedstr('%'+comboModele.text+'%'));
adoQuery1.SQL.Add('and Couleur');
adoQuery1.SQL.Add('LIKE'+quotedstr('%'+comboCouleur.Text+'%'));
adoQuery1.SQL.Add('and Taille');
adoQuery1.SQL.Add('LIKE'+quotedstr('%'+tail+'%'));
adoquery1.Open;

end;
end;





end;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 mars 2006 à 23:09
Pour l'instant tu fais une boucle sur des composants + un SQL + affichage dans un grid
le clear efface à chaque fois ta requete et la remplace par la suivante, donc au final il affiche la dernière..normal.
tu ne peux pas cumuler les requêtes non plus..ou alors il faut autant de grid que de calcul..(c'est nul) et il ne s'agit pas non plus de faire un select de select de select..

j'ai pas le sentiment que ça soit bien ça alors qui si il y avait un stockage dans une table le problème serait plus simple à appréhender (bref on n'y verrait plus clair)

Mais comme tu ne dis pas ce à quoi tu dois arrivé ni les conditions à respecter
tu écris une solution qui ne marche pas et tu souhaites un corrigé.??

il faut nous en dire plus (ou un bon schèma qui vaut mieux qu'un..)

@bientôt

cantador
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
30 mars 2006 à 13:44
salut,

désolé de ne pas avoir été clair...

ce que je veux faire, c'est quelque chose de standard, une petite application de facturation.

ja voudrais afficher dans mon dbgrid, tous les articles que le client veut acheter.
Ce que je vend c'est des chaussures, ces chaussures ont un modèle, une couleur et différentes tailles.
Par modèle et couleur, on peut choisir plusieurs tailles, et comme je l'avais déjà dit dans ma table , il ya une chaussure par taille ( le chaussure X en taille 41, c'est un article; en taille 42, c'est un autre article, etc..)
l'utilisateur peut choisir pour le même modèle plusieurs taille ( donc avec une quantité), et en un clique, le dbgrid doit afficher une ligne par taille( avec le prix, quantité,etc..).
Si l'utilisateur choisit le modèle X , la couleur Y et rentre la quantité Q1 pour la taille T1, et Q2 pour la taille T2.
le dbgrid doit afficher dans la première ligne modèle X,couleur Y ,Q1 et T1
pour la deuxième ligne X,Y, Q2 et T2

je sais pas si c'est clair

Mais, sais tu comment affecter le resultat d'une requête sans que le dbgrid soit lié au query, comme ca on peut rajouter autant de requête qu'on veut? ( c'est une idée)

merci de passer ton temps sur mon problème
a+
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 avril 2006 à 14:58
Tout d'abord, je t'indique comme foxi l'a précisé pour une autre question que le principe n'est pas de faire l'exercice à votre place (c'est la pire des solutions..)


mais de vous mettre sur la piste d'une solution possible :

la contrainte principale est qu'il ne faut faire qu'un clic par choix.
Donc, deux solutions envisageables:
sol 1:
soit, la méthode lourde et fastidieuse en créant tous les cas de figure possibles(par GroupBox) avec en bout une case à cocher (un seul clic) bien sûr il faut créer une table
cochée : on ajoute un enregistrement dans la table
DBgrid reliée à la table et placé dans la même forme -> affichage immédiat
décochée (à prévoir en cas d'erreur) : suppression de l'enregistrement ds la table
sol 2: plus élégante
prévoir des listbox par nature (avec stockage des informations en interne-> items)
on utilise l'ascenseur avec affichage directe sur touche entrée (onkeydown)dans un edit. le prix unitaire apparaît dès la couleur dès la taille choisie((le prix un unitaire caché étant stocké avec le modèle) - traitement de chaîne de caractères.
un seul edit pour taper la quantité, le prix total s'affiche sur tabulation
voilà et on n'a pas fait une seul clic..
et enfin le clic final pour la case à cocher (idem pour sol 1)
evidemment si on pouvait faire plus de clics, alors on pourrait créer une base de données avec plusieurs tables faire des liaisons entre elles, afficher des listes déroulantes etc etc mais ceci est une autre histoire..

bon courage

cantador
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
1 avril 2006 à 15:05
salut cantador, merci pour ton message

j'ai plus ou moins terminer mon exercice...
il me reste un problème et je viens de poster la question sur le forum

J'ai un dbgrid relié à la table, croit tu qu'on peut lui rajouter une colonne un champ, et que cette colonne ne soit pas dans la table, et sans passer par tquery .

en tout cas , merci de penser encore moi
a+
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 avril 2006 à 15:29
solution : champs calculés

procedure MonDatasetCalcFields(DataSet: TDataSet);
begin
Dataset.FieldByname('ChampCalculé').AsInteger := ...
end;

que tu peux d'ailleurs rendre visible ou invisible dans le DBGrid.

ou transposer le tout dans un StringGrid...et l'adapter en fonction de la sortie voulue.

vive Delphi !

@+
cantador
0
Rejoignez-nous