ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Forum AtoutFox : Re: Report avec une table parent et plusieurs tables enfants (4 ou 5)   

Sujet

rss Flux RSS des derniers messages

Vous devez vous identifier pour pouvoir poser une question ou répondre.

jeu. 20 mai 2021, 18h50
Jean =c3=a0 Grenoble
atoutfox.public.association

Re: Report avec une table parent et plusieurs tables enfants (4 ou 5)

Bonjour Damonzon,
moi, je n'abandonnerai pas SQL : c'est quand même le meilleur moyen de travailler.

Un moyen de trouver d'où proviennent les doublons et de faire la requête
jointure par jointure en calculant le nombre de lignes en doublon à chaque fois.

Si je reprend un de tes exemples, j'écrirais (non testé!):

Lc_societe = societe.societe
Lc_periode = societe.datepaie
SELECT ent.*, ;
det.cmotif, det.coderub, det.librub, det.montant, det.nbrebase, det.taux, ;
det.tauxits, det.tauxret, COUNT(*) AS nbre ;
FROM bullent ent;
Left Outer Join bulldet det ON ent.entid=det.detid AND ;
ent.societe=det.societe AND ent.matricule=det.matricule AND ;
ent.clef=det.clef AND ent.periode=det.periode;
WHERE ent.societe=m.Lc_societe AND bullent.periode= m.Lc_periode AND ;
!DELETED("bullent");
GROUP BY ent.entid, ent.societe, ent.matricule, ent.clef, ent.periode
HAVING COUNT(*) > 1 ;
INTO CURSOR test1
* le curseur test1 doit être vide. S'il ne l'est pas,
* c'est de cette jointure que proviennent les doublons
* on fait la même chose avec la deuxième jointure

SELECT ent.*, ;
net.coderub as rubnet,net.librub as libnet,net.montant as montnet,;
net.nbrebase as nbrenet,net.taux as tauxnet, COUNT(*) AS nbre;
FROM bullent ent;
Left Outer Join bullnet net On ent.entid=net.netid AND ;
ent.societe=net.societe AND ent.matricule=net.matricule AND ;
ent.clef=net.clef AND ent.periode=net.periode;
WHERE ent.societe=m.Lc_societe AND bullent.periode= m.Lc_periode AND ;
!DELETED("bullent");
GROUP BY ent.entid, ent.societe, ent.matricule, ent.clef, ent.periode
HAVING COUNT(*) > 1 ;
INTO CURSOR test2
* le curseur test2 doit être vide. S'il ne l'est pas,
* c'est de cette jointure que proviennent les doublons
* on fait la même chose avec la troisième jointure

En relisant, j'ai oublié de tester la jointure sur societe. je te laisse écrire
les autres tests !

Une fois que tu auras trouvé le coupable, il faudra réfléchir sur la raison des
doublons.

Tiens nous au courant ! Bon courage.

Jean à Grenoble
Permalink : http://www.atoutfox.org/nntp.asp?ID=0000019842
20 088 messages dans le forum • Liste complète des messages

Publicité

Les pubs en cours :


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3