Filtre Sur Deux DbGrid

Signaler
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009
-
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
-
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

Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
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
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

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
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
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
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

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
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
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
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

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
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
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
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

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
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
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
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

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
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
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
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

@ 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
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
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
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

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...
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
ça va marcher !

cantador
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

@ contador
j'ai rencontrer un probleme dans le SQL
Utilisation Incorect du Mot Clé FROM
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
pas bien méchant..

montre nous la requête

cantador
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

SELECT * 
FROM achat.date_achat,achat.prix_achat....
FROM Achat
WHERE achat.code_pro=:CODEPRODUIT


codeproduit (comme paramètre).
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
FROM achat.date_achat,achat.prix_achat....

retire les 4 petits points !

cantador
Messages postés
45
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
29 octobre 2009

oui je sais
les 4 petit point c'est a dire qu'il y a encore des champs(je les mettaient pas)