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 26/04/2007, 10h11   #1
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 25
Points : 25
Par défaut [Forms] - Suppression d'une ligne avec la croix

Bonjour à tous,

DAns le cadre du developpement d'un forms spécifique, que doit on faire pour que le bouton de suppression de ligne (petite croix dans Oracle Application, quand on ouvre l'écran) opère correctement.

En effet, je viens de developper un forms, qui fonctionne correctement. Lorsque,edpuis Oracle Application, je cherche à annuler une lige, la ligne disparait de mon écran, ce qui est le fonctionnement attendu. Cependant, lorsque je lance le traitement de mes lignes (via un bouton valider), il me sort des erreurs, dû aux lignes que j'ai pourtant supprimer.

Seriez vous ou et quoi je dois intégrer à mon forms pour remplire cette fonctionnalité?

Merci d'avance
memed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 12h02   #2
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 25
Points : 25
Je suppose que je dois ajouter une librairie ou un forms pour cela.

J'ai regarder sur des forms standard, et j'ai l'impression que je dois utiliser le block de données "FOLDER_TOOLS" qui contient la fonction "delete"

Je me demande egalement si je ne dois pas utiliser un menu instantané (du genre "UI_QUERIES_MENU" qui contient un "DELETE_QUERY")

Quelqu'un connaitrait il la librairie a ajouter pour recuperer ce block de données ou ce menu instantané (si la solution réside bien dans l'intégration d'un ou de tous ces elements)?

merci d'avance
memed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 13h49   #3
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Quelle est ta version?

Tu peux poster le code de ton bouton valider?

Tu as utilisé le trigger key_delete ou on_delete?
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 14h28   #4
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 25
Points : 25
salut,

Je travaille sous OA 11i. Par contre, je ne vais pas avoir le code de mon bouton valider aujourd'hui...

Citation:
Tu as utilisé le trigger key_delete ou on_delete?
Non, je ne l'ai pas utilisé. Ou faudrait il le mettre?
memed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 14h34   #5
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Non, juste pour connaitre ton application.
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 10h14   #6
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 25
Points : 25
Salut,

Voici le code de mon bouton de validation:
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
DECLARE 
 
v_insert	 number := 0;
v_errbuf  varchar2(1000):= '';
v_retcode varchar2(10)  := 0;
 
v_tot_recs number := 0;
 
e_traitement EXCEPTION;
 
v_count number := 0;
 
l_inventory_item_id        MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID%TYPE;
l_account              	   MTL_GENERIC_DISPOSITIONS.DISTRIBUTION_ACCOUNT%TYPE;
l_uom                  	   MTL_TRANSACTIONS_INTERFACE.TRANSACTION_UOM%TYPE;
l_f_locator_id		   	   MTL_ITEM_LOCATIONS.INVENTORY_LOCATION_ID%TYPE; 
l_f_subinventory_code  	   MTL_ITEM_LOCATIONS.SUBINVENTORY_CODE%TYPE;
l_to_locator_id		   	   MTL_ITEM_LOCATIONS.INVENTORY_LOCATION_ID%TYPE; 
l_to_subinventory_code 	   MTL_ITEM_LOCATIONS.SUBINVENTORY_CODE%TYPE;
l_transaction_interface_id MTL_TRANSACTIONS_INTERFACE.TRANSACTION_INTERFACE_ID%TYPE;
 
l_request_id 			      fnd_concurrent_requests.request_id%TYPE;
l_step       				  VARCHAR2(1000);
l_prog_application_id         fnd_concurrent_programs.application_id%TYPE;
l_prog_application_short_name fnd_application.application_short_name%TYPE;
l_program_id                  fnd_concurrent_programs.concurrent_program_id%TYPE;
 
BEGIN
 
 
go_block('B_TRANSF_MAG');
go_item('B_TRANSF_MAG.NUM_LOT');
last_record;
v_tot_recs := to_number(name_in('SYSTEM.CURSOR_RECORD'));
go_record(1);      
 
FOR i IN 1..v_tot_recs loop 
 
	    IF i <= v_tot_recs then
		  go_record(i);
		  go_item('B_TRANSF_MAG.NUM_LOT');
	    end IF;
 
	    go_block('B_TRANSF_MAG');
 
	    SELECT msi.inventory_item_id
			   ,primary_uom_code
		INTO l_inventory_item_id
		    ,l_uom
		FROM mtl_system_items_B msi
		WHERE msi.segment1 = :B_TRANSF_MAG.REFERENCE 
		AND organization_id = :PARAMETER.ORG_ID;
 
		SELECT  distribution_account
		INTO   l_account             
		FROM   mtl_generic_dispositions
		WHERE  organization_id = :PARAMETER.ORG_ID
		AND    segment1 = 'AJUSTE_PF';
 
		SELECT inventory_location_id, 
			   subinventory_code
		INTO l_f_locator_id, 
			 l_f_subinventory_code 
		FROM mtl_item_locations 
		WHERE organization_id = :PARAMETER.ORG_ID
		AND segment1 = :B_TRANSF_MAG.EMPLACEMENT
		AND subinventory_code = substr(:B_TRANSF_MAG.EMPLACEMENT, 1, 3);
 
		SELECT inventory_location_id, 
			   subinventory_code
		INTO l_to_locator_id, 
			 l_to_subinventory_code 
		FROM mtl_item_locations 
		WHERE organization_id = :PARAMETER.ORG_ID
		AND segment1 = :B_TRANSF_MAG.VERS_EMPLACEMENT
		AND subinventory_code = substr(:B_TRANSF_MAG.VERS_EMPLACEMENT, 1, 3);
 
		l_step := 'Insertion des donnees dans MTL_TRANSACTIONS_INTERFACE';
		XXX_TRANSF_MAG.XXX_INSERT_MTI(v_errbuf,
		                              v_retcode,
		                              'TRANSF_MAG',
		                              -1,
		                              -1,
		                              l_inventory_item_id,
		                              :PARAMETER.ORG_ID,
		                              l_f_subinventory_code,
		                              l_f_locator_id,
		                              :B_TRANSF_MAG.QTE,
		                              l_uom, 
		                              sysdate,
		                              2, --transaction_type_id 
		                              NULL,
		                              l_account,
									  l_to_locator_id
				 					  l_to_subinventory_code
		                              ); 
 
		SELECT max(transaction_interface_id)
		INTO l_transaction_interface_id
		FROM mtl_transactions_interface;
 
		l_step := 'Insertion des donnees dans MTL_TRANSACTION_LOTS_INTERFACE';
		-- Insertion dans MTL_TRANSACTION_LOTS_INTERFACE
		XXX_TRANSF_MAG.XXX_INSERT_MTLI(p_errbuf,
		                               p_retcode,
		                               :B_TRANSF_MAG.NUM_LOT,
		                               :B_TRANSF_MAG.QTE,
			 						   l_transaction_interface_id);
 
 
end loop;
 
message('Nombre de lignes: '||v_tot_recs);
message(' ');
 
commit;
 
SELECT count(*)
INTO v_insert
FROM mtl_transactions_interface
WHERE transaction_type_id = 2
AND trunc(last_update_date) = trunc(sysdate)
AND error_code IS NULL;
 
IF v_insert > 0 then
 
    l_step := 'Rcupration des identifiants programme';
	SELECT fcp.application_id,
	    fa.application_short_name,
	    fcp.concurrent_program_id
	INTO l_prog_application_id,
	    l_prog_application_short_name,
	    l_program_id
	FROM fnd_concurrent_programs fcp,
	    fnd_application fa
	WHERE fcp.concurrent_program_name = 'INCTCM' --Lancer l'importation des mouvements
	AND fa.application_id = fcp.application_id;
 
	FND_FILE.PUT_LINE (fnd_file.log,'Lancement du traitement d''import standard');
	l_step := 'Lancement du traitement d''import standard';
	-- Lancement du traitement d'import standard
	l_request_id := fnd_request.submit_request(l_prog_application_short_name, --APPLICATION PROPRIETAIRE DU TRAITEMENT
	                                           'INCTCM', --SHORT_NAME du TRAITEMENT
	                                           NULL, --PROGRAM_NAME
	                                           NULL, --START
	                                           FALSE, --SUB_REQUEST
	                                           '','','','','','','', 
			                      			   '','','',
			                      			   '','','','','','','','','','',
			                      			   '','','','','','','','','','',
			                      			   '','','','','','','','','','',
			                      			   '','','','','','','','','','',
			                      			   '','','','','','','','','','',
			                      			   '','','','','','','','','','',
			                      			   '','','','','','','','','','',
			                      			   '','','','','','','','','','',
			                      			   '','','','','','','','','','');
 
END IF; --v_insert > 0
 
commit;
go_record(1); 
 
--message('Nombre de lignes cochees: '||v);
--message(' ');
EXCEPTION
    WHEN e_traitement THEN
      v_retcode := 2;
      rollback;
      v_errbuf  := 'Erreur MAIN (Import standard) - '||SQLERRM||' - '||v_errbuf;
      message('Erreur a '||l_step);
      message(v_errbuf);
      message(' ');
    WHEN OTHERS THEN
      rollback;
      v_retcode := 2;
      v_errbuf  := 'Erreur MAIN - '||SQLERRM;
      message('Erreur a '||l_step);
      message(v_errbuf);
      message(' ');
END;
Peut etre faut il que je rentre une nouvelle condition pour traiter ou non mes lignes.... du genre:
Code :
1
2
3
4
5
IF ligne_courante non annulé then
faire le traitement
else
ne pas faire le traitement
end IF;
Cependant, qq'un aurait il une idée de la condition a ajouter?

Si, ce n'est pas une condition a ajouter, qq'un connait il la librairie dont je parle dans mes messages precedents?

Merci d'avance
memed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 15h35   #7
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
salut ,

Code :
1
2
3
4
5
6
 
XXX_TRANSF_MAG.XXX_INSERT_MTLI(p_errbuf,
                                       p_retcode,
                                       :B_TRANSF_MAG.NUM_LOT,
                                       :B_TRANSF_MAG.QTE,
                                        l_transaction_interface_id);
est ce cette procédure contient un commit?

Change le commit et le rollback par
Code :
1
2
3
 
forms_ddl('commit');
forms_ddl('rollback');
Si tu valide la forms avec le boutton valider rajoute dans le bouton commit_form;
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 12h31   #8
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 25
Points : 25
Je viens de me rendre compte du reel probleme:
A la fin de mon programme, je veux faire un refresh de mon ecran.
Je met donc a null toutes les donnees de mon ecran.
Cependant, certaie données dont obligatoire, donc un message d'erreur apparait.

Quelqu'un serait comment faire un refresh d'un ecran forms?

Merci d'avance
memed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 12h51   #9
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 25
Points : 25
Je cherche en fait, lorsque la validation est terminée, à supprimer tous les enregistrements de l'écran.

Le problème, c'est que je ne trouve pas la bonne méthode pour cela....
memed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 14h22   #10
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Pour rafraichir ton ecran
Code :
1
2
3
4
5
 
clear_form(do_commit); ou clear_form(no_validate ); si tu AS déja enregistré 
                                     tes modifications 
go_block('nom_block_maitre');
execute_query;
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 15h06   #11
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 25
Points : 25
Finalement, au lieu d'utiliser ma fonction de refresh, j'ai utilisé la fonction standard:
Code :
APP_STANDARD.EVENT('KEY-CLRFRM');
J'espère que ça pourra aider qq'un...
memed est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h00.


 
 
 
 
Partenaires

Hébergement Web