Je suis assez nouveau à ABL (et je suis français s'il vous plaît excusez mon anglais) donc j'ai besoin de votre aide. Je voudrais savoir comment utiliser un BREAK BY dans une requête ouverte.Progression ABL: BREAK BY Avec plusieurs jointures dans une requête ouverte
Voici ce que je fais:
define query Q-REQ for
ENT_RCP_FRN,
LIG_RCP_FRN,
CONSO_UNV_MDIM,
LIG_DOC_TRS,
ENT_DOC_TRS scrolling.
open query Q-REQ for
each ENT_RCP_FRN no-lock
where ENT_RCP_FRN.STO-c-CodeDes = "DRET",
each LIG_RCP_FRN no-lock break by LIG_RCP_FRN.SKU-c-cod
where LIG_RCP_FRN.SOU-c-Cod = ENT_RCP_FRN.SOU-c-Cod
and LIG_RCP_FRN.ERF-c-NumRcpFrn = ENT_RCP_FRN.ERF-c-NumRcpFrn,
each CONSO_UNV_MDIM no-lock
where CONSO_UNV_MDIM.UMA-c-Code = "8B6A9/0001354"
and CUMD-c-LstCleCumConso = LIG_RCP_FRN.SKU-c-cod,
each LIG_DOC_TRS no-lock LEFT OUTER-JOIN
where LIG_DOC_TRS.SKU-c-Cod = LIG_RCP_FRN.SKU-c-Cod,
each ENT_DOC_TRS no-lock left outer-join
where ENT_DOC_TRS.SOU-c-Cod = LIG_DOC_TRS.SOU-c-Cod
and ENT_DOC_TRS.EDT-c-NumDocTrs = LIG_DOC_TRS.EDT-c-NumDocTrs
and ENT_DOC_TRS.TR-c-CodeCatDoc = "BT"
and ENT_DOC_TRS.STO-c-CodeOri = "DRET"
and ENT_DOC_TRS.STO-c-CodeDes = "DWHO".
repeat :
get next Q-REQ.
if not available ENT_RCP_FRN then leave.
end.
je reçois une erreur dans la déclaration suivante:
each LIG_RCP_FRN no-lock break by LIG_RCP_FRN.SKU-c-cod
where LIG_RCP_FRN.SOU-c-Cod = ENT_RCP_FRN.SOU-c-Cod
and LIG_RCP_FRN.ERF-c-NumRcpFrn = ENT_RCP_FRN.ERF-c-NumRcpFrn,
Impossible de comprendre après: "LIG_RCP_FRN.SKU-c-morue" (mon erreur est en français, mais c'est l'erreur 247):
247 ** L'expression après: "LIG_RCP_FRN.SKU-c-cod" est incompréhensible. (247)
Ce que je voudrais faire est de pouvoir additionner une colonne de la table LIG_RCP_FRN, en cassant quand la SKU-c-Cod change.
J'ai essayé de supprimer chaque instruction après cette erreur, mais cela n'a pas fonctionné non plus.
S'il vous plaît demander si vous avez besoin de plus d'informations. OpenEdge 10.2A progrès
Merci pour votre aide, Corentin
PS: impossible de dire "Salut" dans un poste ??
Selon le manuel (bien v9.1) - vous ca n ordonner une requête en utilisant "BY" dans une requête ouverte, mais vous ne pouvez pas utiliser de pause. Vous devez utiliser une boucle FOR EACH si vous voulez utiliser "BREAK BY". – Screwtape
@Screwtape Ce n'est pas correct, du moins pas dans les versions ultérieures. – Jensd
C'est bon alors. Je ne peux pas tester au-delà de la v9 pour le moment.Dans un pour chaque le manuel implique que le BREAK BY devrait être après toutes les phrases d'enregistrement, alors peut-être juste le déplacer à la fin de la requête fonctionnera dans OE10? Juste une supposition. – Screwtape