Filtre Sur Deux DbGrid

siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009 - 3 sept. 2009 à 14:53
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 17 sept. 2009 à 14:09
salut...
j'ai Vu le sujet posté (Filtre sur l'evenement OncellClic)
et j'ai cru que c peut etre ca ressemble a ma quetion mais....
------> dabord j'ai deux table Produit et Achat
qui sont liés respectivement a des DbGrid(02)
cfe que je veut Obtenir c'est après chaque changement de collonne de produit l'autre afiche les achats effectuées sur ce produit
Sachant que la table a une clé primaire Code_Pro de Type + (Sur paradox)
et la table_Achat a aussi une clé Primaire Code_Achat de type +
et a force que paradox de supporte pas deux clé de lype + a la meme fois j'etait obligé de changer le type du code_Pro (Alfanumerique).
donc....
table_pro(code_pro/+.......)
table_achat(code_achat/+...........code_pro/A)

est ce que c'est faisable
merci d'avance

32 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
3 sept. 2009 à 17:36
bonsoir,

la structure de chacune des deux tables peut comporter bien sûr une clé incrémentale que l'on peut désigner ou pas en clé primaire.

Ensuite, il faut introduire une liaison entre les deux tables c'est-à-dire placer la clé primaire de la table PERE dans la table FILS, opération réalisée lors de l'ajout d'écriture.

Les deux grids seront de ce fait liés à condition toutefois d'établir cette relation à travers une requête SQL faisant apparaître la jointure, script placé dans la propriété SQL du Query de la table FILS.


ex :

SELECT
ACHAT.CHP1,
PRODUIT.CHP2
FROM
PRODUIT
INNER JOIN ACHAT ON (PRODUIT.CODEPRODUIT = ACHAT.CODEPRODUIT)

ou écrire un simple WHERE...

cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
6 sept. 2009 à 11:24
cher contador
Sachant que la table a une clé primaire Code_Pro de Type + (Sur paradox)
et la table_Achat a aussi une clé Primaire Code_Achat de type +
et a force que paradox de supporte pas deux clé de lype + a la meme fois j'etait obligé de changer le type du code_Pro (Alfanumerique).

j'ai tomber dans le probleme citer auparavant
lorsque je veux activer le query erreur(difference de type dans une expression)


----que faire
produit(code_pro +)
achat(code_pro A)


il faut modifier le type du champs Code_pro de la table produit et le mettre (A) dans ce cas il faute mettre un code pour l'incrementation automatique ou bien laisser tout ca comme ca et trouver d'autre sollution

cordialement
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
6 sept. 2009 à 23:07
autrement dit d'après toi le schèma :

table produit
codeproduit +
etc
etc..

table achat
codeachat +
codeproduit N
etc
etc..

avec une liaison produit.codeproduit = achat.codeproduit

ne fonctionnerait pas ?

cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
7 sept. 2009 à 12:31
exactement...
avec le mesage d'erreur
difference de type dans une expression
par ce que la clé etrangere (Code_pro) de la table achat et de type Alphanumerique

cordialement
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
7 sept. 2009 à 13:56
oui mais dans mon exemple on a
+: clé incrémentale donc numérique
et
N : numérique

as-tu construit tes tables avec ce principe ?


cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
8 sept. 2009 à 13:17
bonjour..
@ Contador
j'ai trouver quelques dificultés pour changer le type A du champ code_produit dans tout le programme mais finalement j'ai reussi a le metrisé
la requete marche aucune erreur mais il ya un probleme

d'apres la requete rien ne s'affiche que si le code_pro de la table produit = code_pro de la table achat...
contrairement a ce que j'ai voulu obtenir puisque le premier dbGrid doit afficher la liste de tout les produits saisis auparavant meme s'il ne concerne aucune operation d'achat

---je vous faire savoir aussi que a traver cette Form je veux faire des operation sur la table Achat en meme temps
j'espère que vous me comprenez
SELECT
ACHAT.date_acht,ACHAT.prix_achat.....
PRODUIT.designation_pro
FROM
PRODUIT
INNER JOIN ACHAT ON (PRODUIT.code_pro = ACHAT.code_pro)


cordialement
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
8 sept. 2009 à 16:25
Il faut forcer la jointure...

SELECT 
ACHAT.date_acht,ACHAT.prix_achat..... 
PRODUIT.designation_pro 
FROM 
PRODUIT 
LEFT OUTER JOIN ACHAT ON (PRODUIT.code_pro = ACHAT.code_pro) 



cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
9 sept. 2009 à 13:44
bonjour
@ contador
le DbGrid Produit affiche tout les prosuits
mais rien dechangement lors de defilement des produits

il ya 4 liste achat mais apparement il affiche 36 selon le nombre de produit c a d il ya une redondance en plus

cordialement
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
9 sept. 2009 à 16:22
c'est qu'il doit y avoir un méli mélo dans tes clés...

En attendant tu peux tenter ceci :
SELECT DISTINCT
ACHAT.date_acht,ACHAT.prix_achat..... 
PRODUIT.designation_pro 
FROM 
PRODUIT 
LEFT OUTER JOIN ACHAT ON (PRODUIT.code_pro = ACHAT.code_pro) 




cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
10 sept. 2009 à 11:05
salut @ Contador
j'ai essayer le select distinct auparavant mais
elle affiche le resultat suivant

dbGrid Produit DbGrid Achat
------------------ ------------------
P1 * affiche toute la liste des achats
P2 *
P3 *
*
*
*
*
*
------------------ Le DbGrid Produit Affiche seul les Produits Concernés par des Operation d'Achat


Contrairement a ce que je veux Obtenir(Le DbGrid Produit Doit Afficher Tout Les Produits Saisis
deja
mais ce que doit changer c le Contenue de la DbGrid Achat selon le Produit Selectioné dans le DbGrid Produit.
j'espère que vous me comprenez maintenant
cordialement
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
10 sept. 2009 à 11:50
cette requête fonctionne, je l'ai testée :

SELECT 
ACHAT.date_acht,ACHAT.prix_achat..... 
PRODUIT.designation_pro 
FROM 
PRODUIT 
LEFT OUTER JOIN ACHAT ON (PRODUIT.code_pro = ACHAT.code_pro) 



Elle doit afficher tous les produits y compris ceux sans achat.

Si ça ne marche pas, alors il doit y avoir une erreur quelque part peut-être dans la structure des tables.

Pour trouver les erreurs, il faut sortir de son programme et construire un autre exemple le plus simple possible avec quelques enregistrements...


cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
10 sept. 2009 à 15:17
@ contador
le premier DbGrid affiche tout les produits ca marche (ta requette marche bien)
mais le 2 DbGrid des Achats affiche aussi tout les Achat meme avec des enregistrements vide
le probleme c'est qu'il n ya pas de liaison entre les deux
c a d je defile sur la liste des produits rien ne change sur Les Achats (Toujour tius les achat sont affichés)
j'ai remi distinct
pour la forcé d'evite la redondance et les enregistrements vide mais simplement il les mets a la fin des enregistrement vide..



cordialement
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
10 sept. 2009 à 16:31
ah oui désolé, c'est vrai ce foutu BDE...
il te faut 6 compo: 2 datasource, 2 query, 2 dbgrid
il faut faire comme ça:

dans le query du fils, il faut désigner dans la propriété datasource : le datasource PERE cad DSPRODUIT)

et dans la propriété SQL il faut passer en paramètre le code de liaison de cette manière:

SELECT * from ACHAT.CHP1, PRODUIT.CHP2 ETC
FROM ACHAT
WHERE ACHAT.CODEPRODUIT  =:CODEPRODUIT





cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
11 sept. 2009 à 22:52
je sais qu'il ya quelque chose qui ca va pas ce passe,je suis maintenant a la maison en (recuperation) dès que je rentre au travail j'applique ton idee , j'espère que ca marcherais
merci pour les efforts Contador
cordialement...
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
11 sept. 2009 à 22:54
ça va marcher !

cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
13 sept. 2009 à 11:46
@ contador
j'ai rencontrer un probleme dans le SQL
Utilisation Incorect du Mot Clé FROM
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
13 sept. 2009 à 21:12
pas bien méchant..

montre nous la requête

cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
13 sept. 2009 à 22:19
SELECT * 
FROM achat.date_achat,achat.prix_achat....
FROM Achat
WHERE achat.code_pro=:CODEPRODUIT


codeproduit (comme paramètre).
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
13 sept. 2009 à 22:25
FROM achat.date_achat,achat.prix_achat....

retire les 4 petits points !

cantador
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
13 sept. 2009 à 22:37
oui je sais
les 4 petit point c'est a dire qu'il y a encore des champs(je les mettaient pas)
0
Rejoignez-nous