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 14/06/2007, 15h01   #1
Membre éclairé
 
Avatar de macben
 
Inscription : mars 2004
Messages : 526
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2004
Messages : 526
Points : 379
Points : 379
Envoyer un message via AIM à macben Envoyer un message via MSN à macben
Par défaut Dupliquer un enregistrement "maitre-détail"

Bonjour,

J'ai un écran qui contient 2 blocs. Un bloc en-tête basé sur cette table :

Code :
Table1(ID_T1,CODE,DESC)
et un bloc au format tabulaire basé sur la table suivante :

Code :
Table2(ID_T1, ID_T2, COL1, COL2
Et sur cet écran j'ai un bouton "DUPLIQUER" qui doit permettre à l'utilisateur de dupliquer en-tête et lignes. Concrètement il faut qu'en cliquant sur ce bouton il ne se passe qu'une seule chose visible pour lui, c'est le champ CODE qui devient null et qu'il doit saisir. Tout le reste ne doit pas voir bougé à ses yeux mais côté programme il faut que l'en-tête et toutes lignes aient été dupliqués (donc avec un nouvel ID_T1 que je gère par séquence) mais sans avoir été commité.

J'ai essayé avec les CREATE_RECORD et DUPLICATE_RECORD mais sans résultat.

J'ai pensé à faire des INSERT mais la solution n'est pas possible car CODE de T1 est obligatoire et l'utilisateur doit le saisir.

Auriez-vous une idée ?

Merci.
macben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 12h09   #2
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Remplir le bloc détail par code
Exemple de ce que je fait dans une appli (bloc maitre aff, block detail int_aff)
Table aff (num_aff,num_ave,....)
Table int_aff (num_aff,num_ave,num_perso,cod_profil)

Relation : aff.num_aff=int_aff.num_aff and aff.num_ave=int_aff.num_ave

Une procédure chargée de dupliquer les lignes détails (aprés COMMIT éventuel !)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
PROCEDURE DUPLIQUER_INTERVENANT(affaire IN aff.num_aff%TYPE,avenant IN aff.num_ave%TYPE) IS
i NUMBER;
cur_item VARCHAR2(40);
BEGIN
cur_item:=:SYSTEM.CURSOR_ITEM;
go_block('int_aff');
i:=0;
FOR c1 IN (SELECT num_perso,cod_profil
				FROM int_aff WHERE num_aff=affaire AND num_ave=avenant) LOOP
	i:=i+1;
	IF i>1 THEN
		NEXT_RECORD;
	END IF;
	:int_aff.num_perso:=c1.num_perso;
	:int_aff.cod_profil:=C1.cod_profil;
	validate(record_scope);
END LOOP;
go_item(cur_item);			
END;
Dans "KEY-DUPREC" de mon bloc maitre (aff)

Code :
1
2
3
4
5
6
7
8
 
 
DUPLICATE_RECORD;
old_num_aff:=:aff.num_aff;         
old_num_ave:=:aff.num_ave;
:aff.num_aff:=NULL;
:aff.num_ave:=NULL;
DUPLIQUER_INTERVENANT(old_num_ave,old_num_ave);
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 14h48   #3
Membre éclairé
 
Avatar de macben
 
Inscription : mars 2004
Messages : 526
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2004
Messages : 526
Points : 379
Points : 379
Envoyer un message via AIM à macben Envoyer un message via MSN à macben
Merci beaucoup Garuda !

J'ai récupéré ta procédure et après adaptation à mon écran cela fonctionne très bien !
macben 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 11h53.


 
 
 
 
Partenaires

Hébergement Web