Bonjour tout le monde,
Je développe des formulaires sous forms 6i pour une base en 8i.
Le formulaire sur lequel je travaille en ce moment est découpé en plusieurs onglets, chacun d'entre eux correspondant à un bloc de données et une table distincte.
Lors de la création d'un nouvel enregistrement, il faut que je "précharge" un de ces onglets (associé à la table B2830) : en fonction du résultat d'une requête (un curseur) j'effectue une suite de CREATE_RECORD :
J'ai exécuté la requête du curseur sous SQLPlus => elle ramène 23 lignes (dont aucune ne contient une colonne NULL).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 PROCEDURE CHARGER_B0337 IS CURSOR LCu_b0337_b0300 IS SELECT TA_LIB, TA_CODE FROM B0300, B0337 WHERE TA_TABLE = '37' AND TA_CODE = T37_CODE AND TA_ACTI = '0' AND T37_SPECIFCLIENT = 'O' ORDER BY T37_ORDRE; LRT_b0337_b0300 LCu_b0337_b0300%ROWTYPE; BEGIN GO_BLOCK('B2830'); FIRST_RECORD; OPEN LCu_b0337_b0300; LOOP FETCH LCu_b0337_b0300 INTO LRT_b0337_b0300; EXIT WHEN LCu_b0337_b0300%NOTFOUND; CREATE_RECORD; :B2830.SPEC_CODE := :B2820.SPEC_CODE; :B2830.T37_CODE := LRT_b0337_b0300.TA_CODE; :B2830.TA_LIB := LRT_b0337_b0300.TA_LIB; MSG_BOX('TA_LIB = ' || :B2830.TA_LIB); -- TMP END LOOP; CLOSE LCu_b0337_b0300; FIRST_RECORD; GO_ITEM('B2820.ST_CODE'); END;
L'appel à MSG_BOX que j'ai marqué "TMP" m'affiche bien les valeurs successives retournées par le curseur et pourtant...
l'onglet ne contient finalement qu'un seul record qui est le dernier ramené par la requête.
Quelle erreur dans mon code ou de paramétrage explique la "disparition" (l'écrasement successif ?) des 22 autres records ?
J'ai utilisé cette technique dans un autre écran et en comparant je ne trouve pas de différence mais je ne dois pas chercher au bon endroit.
Je vous remercie d'avance pour votre aide.








Répondre avec citation
Partager