Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/03/2007, 11h43   #1
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Par défaut [forms 10g] mise à jour manuelle d'un item calculé

Bonjour,

J'utilise les items calculé depuis un certain temps déjà que ce soit des éléments récapitulatifs ou de formule.
Cependant, pour la 1ère fois, je constate que j'ai un item calculé nommé PR1010.TRA_SUM_OR_QTE de Fonction de récapitulation = Somme qui n'est pas correctement mis à jour au lancement d'un écran.

En lisant la doc, j'ai découvert que l'on ne peut pas utiliser la méthode RECALCULATE sur ce type d'item.
Par conséquent, j'ai donc effectué toutes sortes de tentatives jusqu'à en trouver une seule qui fonctionne.
En effet, seul l'appel de l'unité de programme qui suit met à jour cet item calculé :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
PROCEDURE MAJ_TITRE IS
BEGIN
	DEFAULT_VALUE('NULL', 'GLOBAL.GC_ch_nom');
	DEFAULT_VALUE('NULL', 'GLOBAL.GC_ch_mill');
	DEFAULT_VALUE('NULL', 'GLOBAL.GC_oc_tranche');
	DEFAULT_VALUE('NULL', 'GLOBAL.GC_cd_nom');
	IF :GLOBAL.GC_ch_nom 		 = 'NULL'
	OR :GLOBAL.GC_ch_mill 	 = 'NULL'
	OR :GLOBAL.GC_oc_tranche = 'NULL'
	OR :GLOBAL.GC_cd_nom 		 = 'NULL' THEN
		MSG_BOX('Erreur interne. Une variable globale n''est pas définie.');
		RAISE FORM_TRIGGER_FAILURE;
		RETURN;
	END IF;
 
  :B0.TRA_CAPTION := 'Château : ' || :GLOBAL.GC_ch_nom ||
  									 ' - Millésime : ' || :GLOBAL.GC_ch_mill ||
  									 ' - Qté : ' || TRUNC( GET_QTE( SUM_VOL(:GLOBAL.GC_ch_nom, :GLOBAL.GC_ch_mill, :GLOBAL.GC_oc_tranche, 'O', 'O'),
																										:GLOBAL.GC_cd_nom ) ) ||
  									 ' - Qté répartie : ' || NVL(:PR1010.TRA_SUM_OR_QTE,0);
END;
Mes questions :
1/ comment l'appel à cette unité de programme provoque t'il la mise à jour de cet item ?
2/ je ne comprends pas l'utilité et l'utilisation de dummy_reference(). Cette built-in peut-elle m'être utile ici ?
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 11h59   #2
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Hello Magnus,

PR1010.TRA_SUM_OR_QTE fait une somme de quel item ?

DUMMY_REFERENCE est je pense utilisé pour quand tu as un référencement indirect (name_in par exemple). Sheik en parle dans son tuto :
http://sheikyerbouti.developpez.com/...page=Chap27#LC
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 12h32   #3
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Salut plaineR

Citation:
Envoyé par plaineR
PR1010.TRA_SUM_OR_QTE fait une somme de quel item ?
Voici le contenu de la section Calcul des propriétés de cet item :
- Récapitulatif
- ( NULL )
- Somme
- PR1010
- OR_QTE

Citation:
Envoyé par plaineR
DUMMY_REFERENCE est je pense utilisé pour quand tu as un référencement indirect (name_in par exemple). Sheik en parle dans son tuto :
http://sheikyerbouti.developpez.com/...page=Chap27#LC
C'est justement ici que j'ai découvert cet built-in et en lisant la doc je n'ai pas plus compris.
Je pense qu'un exemple plus concret me serait éloquent.
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 13h01   #4
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Que fais tu dans GET_QTE? et dans SUM_VOL ? Est-ce que tu redéfinis de manière directe ou non la valeur de PR1010.OR_QTE ?

Pour ce qui est de DUMMY_REFERENCE, ton item calculé est basé sur MONBLOC.MONCHAMP et à un moment donné tu fais :
Code :
copy (1, 'MONBLOC.MONCHAMP');
Oracle ne sait pas déterminer que ton item a changé, il faut donc que tu fasses :
Code :
DUMMY_REFERENCE (:MONBLOC.MONCHAMP);
Je ne sais pas si mon explication est plus claire que celle de Sheik
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 14h26   #5
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Aucune de ces 2 fonctions ne modifie la variable source de cet item calculé.
C'est une des raisons qui m'a surpris dans le fait que l'appel à la méthode MAJ_TITRE provoque le recalcul de cet item calculé :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
FUNCTION GET_QTE(PN_vol			NUMBER,
								 PC_cd_nom	PR0050.CD_NOM%TYPE)
RETURN NUMBER IS
	LN_cd_volbt			PR0050.CD_VOLBT%TYPE;
	LN_cd_nbbt			PR0050.CD_NBBT%TYPE;
BEGIN
  LN_cd_volbt := FIND_CHAMP('PR0050', 'CD_VOLBT', 'CD_NOM', PC_cd_nom);
	LN_cd_nbbt 	:= FIND_CHAMP('PR0050', 'CD_NBBT',  'CD_NOM', PC_cd_nom);
	RETURN ( PN_vol / (NVL(LN_cd_volbt,1) * NVL(LN_cd_nbbt,1)) );
END;
Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
 
FUNCTION SUM_VOL(PC_ch_nom 							VARCHAR2, -- à cause de 'Tous'
								 PC_ch_mill							VARCHAR2, -- à cause de 'Tous'
								 PC_oc_tranche 					VARCHAR2, -- à cause de 'Tous'
								 PC_cc_nom							PR2000.CC_NOM%TYPE DEFAULT NULL,
								 PC_ag_nom							PR2000.AG_NOM%TYPE DEFAULT NULL,
								 PC_exist_repart_offre 	VARCHAR2 DEFAULT NULL,
								 PC_oc_ol_seq						PR1000.OC_SEQ%TYPE DEFAULT NULL)
RETURN NUMBER IS
	LC_sql_stmt VARCHAR2(500);
	LC_table 		VARCHAR2(25);
	LN_qte			VARCHAR2(25);
	LN_qte1			VARCHAR2(25);
	LN_somme1		VARCHAR2(255) := 0;
	LN_somme2 	VARCHAR2(255) := 0;
BEGIN
  IF  PC_cc_nom = 'O'
  AND PC_ag_nom = 'O' THEN
		LC_table := 'PR1000';
		LN_qte := 'OC_QTEINI';
		LN_qte1 := 'OC_QTEOK';
	ELSE
		LC_table := 'PR2000';
		LN_qte := 'OL_QTEINI';
		LN_qte1 := 'OL_QTEOK';
  END IF;
 
	IF LC_table = 'PR1000' THEN
		LC_sql_stmt := ' SELECT NVL( SUM(' || LC_table || '.' || LN_qte || ' * PR0050.CD_NBBT * PR0050.CD_VOLBT) , 0 ) ' ||
									 ' FROM 	' || LC_table || ', PR0050' ||
									 ' WHERE 	' || LC_table || '.CD_NOM  = PR0050.CD_NOM' ||
									 ' AND 		' || LC_table || '.CH_NOM  LIKE ' || ADD_QUOTE_STRING(PC_ch_nom) ||
									 ' AND 		' || LC_table || '.CH_MILL LIKE DECODE( UPPER(' || ADD_QUOTE_STRING(PC_ch_mill) || '), ''TOUS'', ''%'', ' ||
									 																							 ADD_QUOTE_STRING(PC_ch_mill) || ')' ||
									 ' AND 		' || LC_table || '.OC_TRANCHE LIKE ' || ADD_QUOTE_STRING(PC_oc_tranche) ||
									 ' AND 		' || LC_table || '.OC_TOPOK <> ''O''';
		IF PC_oc_ol_seq IS NOT NULL THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND 		' || LC_table || '.OC_SEQ <> ' || ADD_QUOTE_STRING(PC_oc_ol_seq);
		END IF;
		LN_somme1 := L_EXECUTE_DYNAMIC(LC_sql_stmt);
 
		LC_sql_stmt := ' SELECT NVL( SUM(' || LC_table || '.' || LN_qte1 || ' * PR0050.CD_NBBT * PR0050.CD_VOLBT) , 0 ) ' ||
									 ' FROM 	' || LC_table || ', PR0050' ||
									 ' WHERE 	' || LC_table || '.CD_NOM  = PR0050.CD_NOM' ||
									 ' AND 		' || LC_table || '.CH_NOM  LIKE ' || ADD_QUOTE_STRING(PC_ch_nom) ||
									 ' AND 		' || LC_table || '.CH_MILL LIKE DECODE( UPPER(' || ADD_QUOTE_STRING(PC_ch_mill) || '), ''TOUS'', ''%'', ' ||
									 																							 ADD_QUOTE_STRING(PC_ch_mill) || ')' ||
									 ' AND 		' || LC_table || '.OC_TRANCHE LIKE ' || ADD_QUOTE_STRING(PC_oc_tranche) ||
									 ' AND 		' || LC_table || '.OC_TOPOK = ''O''';
		IF PC_oc_ol_seq IS NOT NULL THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND 		' || LC_table || '.OC_SEQ <> ' || ADD_QUOTE_STRING(PC_oc_ol_seq);
		END IF;
		LN_somme2 := L_EXECUTE_DYNAMIC(LC_sql_stmt);
 
	ELSE -- PR2000
		-- somme1
		LC_sql_stmt := ' SELECT NVL( SUM(' || LC_table || '.' || LN_qte || ' * PR0050.CD_NBBT * PR0050.CD_VOLBT) , 0 ) ' ||
									 ' FROM 	' || LC_table || ', PR0050' ||
									 ' WHERE 	' || LC_table || '.CD_NOM  = PR0050.CD_NOM ' ||
									 ' AND 		' || LC_table || '.CH_NOM  LIKE ' || ADD_QUOTE_STRING(PC_ch_nom) ||
									 ' AND 		' || LC_table || '.CH_MILL LIKE DECODE( UPPER(' || ADD_QUOTE_STRING(PC_ch_mill) || '), ''TOUS'', ''%'', ' ||
									 																							 ADD_QUOTE_STRING(PC_ch_mill) || ')' ||
									 ' AND 		' || LC_table || '.OL_TRANCHE LIKE ' || ADD_QUOTE_STRING(PC_oc_tranche) ||
									 ' AND 		' || LC_table || '.OL_ETAT = ''N''';
		IF NVL(PC_cc_nom, 'O') <> 'O' THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR2000.CC_NOM LIKE ' || ADD_QUOTE_STRING(PC_cc_nom);
			IF NVL(PC_ag_nom, 'O') = 'O' THEN
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR2000.AG_NOM IS NULL';
			END IF;
		END IF;
		IF NVL(PC_ag_nom, 'O') <> 'O' THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR2000.AG_NOM LIKE ' || ADD_QUOTE_STRING(PC_ag_nom);
			IF NVL(PC_cc_nom, 'O') = 'O' THEN
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR2000.CC_NOM IS NULL';
			END IF;
		END IF;
		IF PC_oc_ol_seq IS NOT NULL THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND ' || LC_table || '.OL_SEQ <> ' || ADD_QUOTE_STRING(PC_oc_ol_seq);
		END IF;
		IF PC_exist_repart_offre <> 'N' THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND NOT EXISTS ( SELECT * ' ||
									 '									FROM   PR1010' ||
									 '									WHERE  PR1010.CH_NOM  LIKE ' || ADD_QUOTE_STRING(PC_ch_nom) ||
									 '									AND		 PR1010.CH_MILL LIKE DECODE( UPPER(' || ADD_QUOTE_STRING(PC_ch_mill) || '), ''TOUS'', ''%'', ' ||
									 																										ADD_QUOTE_STRING(PC_ch_mill) || ')';
			IF NVL(PC_cc_nom, 'O') <> 'O' THEN
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.CC_NOM LIKE ' || ADD_QUOTE_STRING(PC_cc_nom);
				IF NVL(PC_ag_nom, 'O') = 'O' THEN
					LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.AG_NOM IS NULL';
				END IF;
			ELSE
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.CC_NOM = PR2000.CC_NOM';
			END IF;
 
			IF NVL(PC_ag_nom, 'O') <> 'O' THEN
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.AG_NOM LIKE ' || ADD_QUOTE_STRING(PC_ag_nom);
				IF NVL(PC_cc_nom, 'O') = 'O' THEN
					LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.CC_NOM IS NULL';
				END IF;
			ELSE
				LC_sql_stmt := LC_sql_stmt ||
									 'AND PR1010.AG_NOM = PR2000.AG_NOM';
			END IF;
			LC_sql_stmt := LC_sql_stmt ||
									 'AND PR1010.OC_TRANCHE LIKE ' || ADD_QUOTE_STRING(PC_oc_tranche) || ')';
		END IF;
		LN_somme1 := L_EXECUTE_DYNAMIC(LC_sql_stmt);
 
		-- somme2
		LC_sql_stmt := ' SELECT NVL( SUM(' || LC_table || '.' || LN_qte1 || ' * PR0050.CD_NBBT * PR0050.CD_VOLBT) , 0 ) ' ||
									 ' FROM 	' || LC_table || ', PR0050' ||
									 ' WHERE 	' || LC_table || '.CD_NOM = PR0050.CD_NOM ' ||
									 ' AND 		' || LC_table || '.CH_NOM LIKE ' || ADD_QUOTE_STRING(PC_ch_nom) ||
									 ' AND 		' || LC_table || '.CH_MILL LIKE DECODE( UPPER(' || ADD_QUOTE_STRING(PC_ch_mill) || '), ''TOUS'', ''%'', ' ||
									 																							 ADD_QUOTE_STRING(PC_ch_mill) || ')' ||
									 ' AND 		' || LC_table || '.OL_TRANCHE LIKE ' || ADD_QUOTE_STRING(PC_oc_tranche) ||
									 ' AND 		' || LC_table || '.OL_ETAT = ''A''';
		IF NVL(PC_cc_nom, 'O') <> 'O' THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR2000.CC_NOM LIKE ' || ADD_QUOTE_STRING(PC_cc_nom);
			IF NVL(PC_ag_nom, 'O') = 'O' THEN
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR2000.AG_NOM IS NULL';
			END IF;
		END IF;
		IF NVL(PC_ag_nom, 'O') <> 'O' THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR2000.AG_NOM LIKE ' || ADD_QUOTE_STRING(PC_ag_nom);
			IF NVL(PC_cc_nom, 'O') = 'O' THEN
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR2000.CC_NOM IS NULL';
			END IF;
		END IF;
		IF PC_oc_ol_seq IS NOT NULL THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND ' || LC_table || '.OL_SEQ <> ' || ADD_QUOTE_STRING(PC_oc_ol_seq);
		END IF;
		IF PC_exist_repart_offre <> 'N' THEN
			LC_sql_stmt := LC_sql_stmt ||
									 ' AND NOT EXISTS ( SELECT * ' ||
									 '									FROM   PR1010' ||
									 '									WHERE  PR1010.CH_NOM  LIKE ' || ADD_QUOTE_STRING(PC_ch_nom) ||
									 '									AND		 PR1010.CH_MILL LIKE DECODE( UPPER(' || ADD_QUOTE_STRING(PC_ch_mill) || '), ''TOUS'', ''%'', ' ||
									 																										ADD_QUOTE_STRING(PC_ch_mill) || ')';
			IF NVL(PC_cc_nom, 'O') <> 'O' THEN
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.CC_NOM LIKE ' || ADD_QUOTE_STRING(PC_cc_nom);
				IF NVL(PC_ag_nom, 'O') = 'O' THEN
					LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.AG_NOM IS NULL';
				END IF;
			ELSE
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.CC_NOM = PR2000.CC_NOM';
			END IF;
 
			IF NVL(PC_ag_nom, 'O') <> 'O' THEN
				LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.AG_NOM LIKE ' || ADD_QUOTE_STRING(PC_ag_nom);
				IF NVL(PC_cc_nom, 'O') = 'O' THEN
					LC_sql_stmt := LC_sql_stmt ||
									 ' AND PR1010.CC_NOM IS NULL';
				END IF;
			ELSE
				LC_sql_stmt := LC_sql_stmt ||
									 'AND PR1010.AG_NOM = PR2000.AG_NOM';
			END IF;
 
			LC_sql_stmt := LC_sql_stmt ||
									 'AND PR1010.OC_TRANCHE LIKE ' || ADD_QUOTE_STRING(PC_oc_tranche) || ')';
		END IF;
		LN_somme2 := L_EXECUTE_DYNAMIC(LC_sql_stmt);
 
	END IF;
 
	RETURN (LN_somme1 + LN_somme2);
END;
Remarque : aucune fonction / procédure invoquée depuis GET_QTE ou SUM_VOL ne modifie R1010.OR_QTE


Enfin, concernant DUMMY_REFERENCE, ça pourrait peut être répondre à ma problématique mais aucune des 2 syntaxes suivantes ne change quoi que ce soit lors de l'exécution :
Code :
1
2
 
DUMMY_REFERENCE(:PR1010.OR_QTE);
et

Code :
1
2
 
DUMMY_REFERENCE('PR1010.OR_QTE');
Ce qui m'étonne avec cette built-in, c'est que dans la doc il décrivent l'argument comme une expression alors que moi j'utilise le nom de l'item source de l'item calculé

Merci en tout cas pour ton aide.
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 17h38   #6
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Je ne vois pas non plus pourquoi ce built-in provoquerait le recalcul de ton item calculé, sauf si la modification de B0.TRA_CAPTION a des conséquences sur PR1010.OR_QTE...

Essaie de voir dans ce code ce program unit ce qui peut provoquer le recalcul.

Je suis néanmoins surpris que recalculate ne fonctionne pas. Es-tu sûr de ne pas influer d'une manière où d'une autre sur PR1010.OR_QTE par ailleurs ?

La syntaxe exacte est :
Code :
DUMMY_REFERENCE(:PR1010.OR_QTE);
J'ai corrigé mon post précédent que j'avais tapé sans me relire.
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 08h35   #7
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Citation:
Envoyé par plaineR
sauf si la modification de B0.TRA_CAPTION a des conséquences sur PR1010.OR_QTE
B0.TRA_CAPTION est un élément affiché qui n'a, a priori, aucune incidence sur PR1010.OR_QTE qui est une donnée d'un bloc base table.
Ces items ne sont pas de même type, dans des blocs différents, l'un est base table, l'autre pas...
Bref, ils doivent être totalement indépendants l'un de l'autre.

Citation:
Envoyé par plaineR
Essaie de voir dans ce code ce program unit ce qui peut provoquer le recalcul
J'ai codé toutes les fonctions qui sont invoquaient et je sais qu'aucune ne modifie la colonne OR_QTE de la table PR1010.
Donc cet appel ne devrait pas avoir d'incidence sur l'item PR1010.OR_QTE

Citation:
Envoyé par plaineR
Je suis néanmoins surpris que recalculate ne fonctionne pas. Es-tu sûr de ne pas influer d'une manière où d'une autre sur PR1010.OR_QTE par ailleurs ?
RECALCULATE n'est pas autorisé sur des items calculés qui ne sont pas type de formule donc de ce côté là, je ne suis pas surpris.

Citation:
Envoyé par plaineR
La syntaxe exacte est :
Code :
DUMMY_REFERENCE(:PR1010.OR_QTE);
Ok pour la syntaxe mais cette instruction présente t'elle un intérêt dans mon contexte ?
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 09h37   #8
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Citation:
Envoyé par Magnus
RECALCULATE n'est pas autorisé sur des items calculés qui ne sont pas type de formule
Exact.

Citation:
Envoyé par Magnus
Ok pour la syntaxe mais cette instruction présente t'elle un intérêt dans mon contexte ?
A priori non.

Les items calculés marchent bien en général, tu dois avoir quelque chose de spécifique dans ton programme. As-tu essayé de supprimer ton item calculé, puis de le recréer ? (voire de compiler entre 2 pour voir partout où il est appelé). Essaie de repérer également comment est modifiée la source (par le code, par l'utilisateur, par des lovs, par des copy ...)
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h46.


 
 
 
 
Partenaires

Hébergement Web