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] - Suppression d'une ligne avec la croix


Sujet :

Forms Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    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

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Par défaut
    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

  3. #3
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

    Quelle est ta version?

    Tu peux poster le code de ton bouton valider?

    Tu as utilisé le trigger key_delete ou on_delete?

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Par défaut
    salut,

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

    Tu as utilisé le trigger key_delete ou on_delete?
    Non, je ne l'ai pas utilisé. Ou faudrait il le mettre?

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

    Non, juste pour connaitre ton application.

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Par défaut
    Salut,

    Voici le code de mon bouton de validation:
    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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    salut ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    forms_ddl('commit');
    forms_ddl('rollback');
    Si tu valide la forms avec le boutton valider rajoute dans le bouton commit_form;

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Par défaut
    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

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Par défaut
    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....

  10. #10
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

    Pour rafraichir ton ecran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  11. #11
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Par défaut
    Finalement, au lieu d'utiliser ma fonction de refresh, j'ai utilisé la fonction standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    APP_STANDARD.EVENT('KEY-CLRFRM');
    J'espère que ça pourra aider qq'un...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression d'une ligne avec une condition
    Par étudiant11 dans le forum SAS Base
    Réponses: 4
    Dernier message: 04/03/2015, 12h11
  2. Suppression d'une ligne avec contraintes de clef étrangère
    Par freeway57 dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/05/2014, 11h34
  3. Suppression d'une ligne avec des colonnes vides
    Par fatima dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/11/2010, 14h38
  4. [DisplayTag] suppression d'une ligne avec un lien sur une autre Servlet
    Par luffy2mars dans le forum Taglibs
    Réponses: 1
    Dernier message: 12/01/2010, 11h36
  5. Réponses: 3
    Dernier message: 17/09/2009, 15h26

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