IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

[forms 10g] mise à jour manuelle d'un item calculé


Sujet :

Forms Oracle

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    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 : 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
     
    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 ?

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    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

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    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.

  4. #4
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    copy (1, 'MONBLOC.MONCHAMP');
    Oracle ne sait pas déterminer que ton item a changé, il faut donc que tu fasses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DUMMY_REFERENCE (:MONBLOC.MONCHAMP);
    Je ne sais pas si mon explication est plus claire que celle de Sheik

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DUMMY_REFERENCE(:PR1010.OR_QTE);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    DUMMY_REFERENCE(:PR1010.OR_QTE);
    J'ai corrigé mon post précédent que j'avais tapé sans me relire.

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    DUMMY_REFERENCE(:PR1010.OR_QTE);
    Ok pour la syntaxe mais cette instruction présente t'elle un intérêt dans mon contexte ?

  8. #8
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    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 ...)

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/08/2013, 20h52
  2. Réponses: 10
    Dernier message: 03/04/2010, 12h24
  3. [Doctrine] Forms et mise à jour manuelle de la valeur d'un champs
    Par widget dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/11/2009, 08h55
  4. Réponses: 6
    Dernier message: 31/05/2007, 21h29
  5. debogage, form pas mise à jour
    Par LauBelette dans le forum Windows Forms
    Réponses: 7
    Dernier message: 25/02/2007, 09h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo