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 :
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;
J'ai exécuté la requête du curseur sous SQLPlus => elle ramène 23 lignes (dont aucune ne contient une colonne NULL).
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.