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 09/09/2007, 09h17   #1
Membre à l'essai
 
Inscription : mai 2006
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 53
Points : 22
Points : 22
Par défaut Call_form execute_query avec paramètre

bonjour

est quelqu'un peut m'aider à réaliser ceci:

un bouton dans une form qui appelle une autre forme en lui envoyant un paramètre.
Après l'appel, la forme appelée execute une requete avec le paramètre envoyé par la forme appelante.

est ce qu'il faut définir une varaiable globale? quel trigger utiliser? ou... comment faire?!

merci de votre aide

a+
zchallal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 19h01   #2
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,



un bouton dans une form qui appelle une autre forme en lui envoyant un paramètre.

1-Tu crées un parametre(p1) ou plusieurs ( selon le besoin) dans ta forme appelée.

2- Tu trouveras la suite dans ce lien :
http://sheikyerbouti.developpez.com/...g/?page=Chap37.

Après l'appel, la forme appelée execute une requete avec le paramètre envoyé par la forme appelante.

Tu mets dans ton pre-query de la forme appelée :
Code :
1
2
 
:nom_block.nom_champ:=:parameter.p1;
Remarque : Tu peux aussi utiliser le set_block_property('nom_block',default_where,'nom_champ=:parameter.p1');
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 09h45   #3
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
bonjour;

voici un exemple qui montre comment appeller un forms à partir d'un autre;

ds forms SOURCE....

ds l'evenement WHEN-BUTTON-PRESSED:
<code>
declare
PL_key ParamList;
PL_nom varchar2(15):='tmp_donnee';
begin
PL_key :=get_parameter_list(PL_nom);
if id_null(PL_key)then
PL_key:=create_parameter_list(PL_nom);
else
delete_parameter(PL_key,'param_cible');----parametre ds forms cible
end if;

add_parameter PL_key,'param_cible',text_parameter,:LOCATION_ID);--nom du champ distination (key)
open_form('c:\test\cible',activate,no_session,PL_key);--appel du forms CIBLE

</code>

ds la forms CIBLE:
vous creer un parametre portant le meme nom qui est utilisé ds forms SOURCE exp. 'param_cible'
il faut renseigner le declancheur (evenment )WHEN-NEW-FORM-INSTANCE avec:
<code>
if :parameter.param_cible is not null then

set_block_property('COUNTRIES',default_where,'LOCATION_ID='''||:parameter.param_cible||'''');
set_window_property('COUNTRIES',title,:parameter.param_cible);

else
set_block_property('COUNTRIES',default_where,'');

end if;


execute_query;
</code>

sinon CIBLE ne prent pas en consideration le parametre
Fichiers attachés
Type de fichier : rar test.rar (24,1 Ko, 14 affichages)
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 13h16   #4
Membre à l'essai
 
Inscription : mai 2006
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 53
Points : 22
Points : 22
bonjour,

je remercie infiniment salim11 et boussafi pour leur aide.Grace à eux et le help de Forms, j'ai réussit à résoudre mon problème. voici une synthèse de la solution:

- Dans la form source:
Dans le When_button_pressed du bouton (qui appelle la forme cible), ajouter le code suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
 
DECLARE
	PL_ID PARAMLIST;
BEGIN
  PL_ID:=get_parameter_list('PL'); /* 'PL' est le nom de la liste
  if id_null(PL_ID)then
  PL_ID:=CREATE_PARAMETER_LIST('PL');
  else
  delete_parameter(PL_ID,'PL');
  end if;
 
  IF Id_Null(pl_id) THEN 
    Message('Error creating parameter list '); 
    RAISE Form_Trigger_Failure; 
  ELSE
   Add_Parameter(pl_id,'PL',TEXT_PARAMETER,:nom_block.nom_item);
   CALL_FORM('nom_forme_cible',hide,no_replace,no_query_only,pl_id);
  END IF;
END;
-Dans la form cible:
* Ajouter un paramètre à l'aide de l' Object Navigator. nommer le paramètre PL
(le même nom utilisé dans la forme source)

* Dans le Pre-query de la forme cible, ajouter le code suivant:
Code :
1
2
3
4
5
6
7
 
 
IF :parameter.PL IS NOT NULL then
 
:nom_block.nom_item:=:parameter.pl;
 
end IF;
*Dans le When_new_form_instance, ajouter le code suivant:
Avec ces étapes, ça devrait marcher. en tout cas, c'est le cas pour moi.

Remarque:
après avoir effectuer les modifications sur la forme source, effectuer une compilation de la forme avant de l'appeler depuis la forme source, en effet, cette dernière fait appel à l'executable de la forme cible (.fmx).

Merci à tous
zchallal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 08h19   #5
Membre habitué
 
Inscription : avril 2004
Messages : 365
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 365
Points : 121
Points : 121
je confirme, j'emploie la même manière de procéder
patmaba 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 09h53.


 
 
 
 
Partenaires

Hébergement Web