Bonjours
j'aimerai savoir si il existe une manière de mettre un temps de pause dans le code PL/SQL d'un Forms pour que pendant quelques secondes il stop l'execution du code.
Merci![]()
Bonjours
j'aimerai savoir si il existe une manière de mettre un temps de pause dans le code PL/SQL d'un Forms pour que pendant quelques secondes il stop l'execution du code.
Merci![]()
Tu peux :
1/ Faire un loop jusqu'à sysdate + xx secondes (pas super)
2/ Faire un timer. Ca nécessite de diviser ton code.
Sinon, encore plus simple, utiliser la fonction SLEEP du package DBMS_LOCK
Arg, encore une fonction DBMS que je ne connaissais pas.![]()
merci
mais comment je ratache ce package a ma forms ou de base est ce qu'il est rattaché
et la sintaxe de la fonction sleep je peut la trouver ou?
salut,
Tu peux faire simplement
Pour la synthaxe de Dbms_lock
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pause;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DBMS_LOCK.SLEEP(2);-- il va s'arréter deux secondes
Publications: http://schelabi.developpez.com/
PAUSE; nécessite l'intervention de l'utilisateur.
merci
j'aimerai savoir ou puis je trouver ce package et comment l'intégré à Forms pours qu'il la prenne en compte car de base ce package n'y est pas
![]()
salut,
Oui ça nécessite l'intervention de l'utilisateur, mais c'est une manière de donner une petite pause au programme plsql mais manuellement, mais si elle veut que son stop est géré automatiquement la on utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 dbms_lock.sleep(nb_secondes);
Publications: http://schelabi.developpez.com/
Tu vas juste mettre la instruction suivante à l'endroit ou tu veux faire un stopEnvoyé par solean45
Voici un lien qui parle de ce package
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 dbms_lock.sleep(nb_secondes);
http://www.cs.umbc.edu/help/oracle8/...1/dbms_loc.htm
Publications: http://schelabi.developpez.com/
Le package appartient a SYS. Il suffit qu'il donne l'accès en EXECUTE à votre user ou a PUBLIC
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Connect SYS... Grant execute on DBMS_LOCK to public ;
eh
dbms_lock.timer (2);
est ce que ça existe car moi en faite je veux pas faire une pause de tout mon forms
je souhaite plus qu'il y ai un délai d'attente juste avant qu'il y ai une suppression dans une table tempo.
Car la avec le dbms_lock.sleep(2); ça fige le forms pendant 2s et y a plus rien qui se passe c'est pas ce que je cherche.
Peut-être pourriez-vous expliquer plus clairement le résultat à obtenir
salut,
Je pense que ca que tu veux, programmer le lancement d'un traitement qui va s'executer apres 30 secondes et continuer ton traitement dans ta forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 dbms_scheduler.create_job( job_name => 'APEX__JOB_LANG_LAUFEND' ,job_type => 'stored_procedure' ,job_action => 'lang_laufend' ,start_date => null -- tu choisis quand ca va s'executer ,enabled => true );
Publications: http://schelabi.developpez.com/
Ok je vais etre plus claire
voici la parti de mon code qui pause souci:
voila alors le truc c'est quand je met dans mon code un message d'alerte "alert_mess('I',to_char(V_CPT)||' fiche(s)');"
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 for I in 1..DER_REC loop go_record(I); if :CB_MERE = 'O' then insert into W_NOTE_FABRICATION_A_EDITER values(:GLOBAL.NOM_UTIL,:NOTE_SERIE.ETB_NMR,:NOTE_SERIE.ANNEE, :NOTE_SERIE.SEMAINE,:NOTE_SERIE.NUMERO,I); OLDMSG := :System.Message_Level; :System.Message_Level := '10'; commit; :System.Message_Level := OLDMSG; end if; end loop; select count(*) into V_CPT from W_NOTE_FABRICATION_A_EDITER where NOM=:GLOBAL.NOM_UTIL; if V_CPT>0 then LC$Cmd := LC$Rep60_Test || '?Section1&report=note_serie_mere_chauss2.rdf' || '&P_NOM='|| name_in('GLOBAL.NOM_UTIL')||'&PARAMFORM=no'||'&DESNAME=prt04_letter'||'&PRINTJOB=no' ||'COMM_MODE=SYNCHRONOUS'; Web.show_document(LC$Cmd, '_blank'); alert_mess('I',to_char(V_CPT)||' fiche(s)'); delete W_NOTE_FABRICATION_A_EDITER where NOM=:GLOBAL.NOM_UTIL; OLDMSG := :System.Message_Level; :System.Message_Level := '10'; commit; :System.Message_Level := OLDMSG; end if;
la mon état report se lance correctement avec toute les données qu'il doit contenir.
Mais si j'enleve mon message d'alerte car je doit pas en avoir la mon report se lance mais c'est un page vierge j'ai plus aucune données.
Donc j'aimerai savoir si j'ai essayer de renseigner mon URL pour que le mode soit synchroniser biensur sur il me retourne un erreur car ça doit pas etre la bonne syntaxe
mais j'aimerais savoir si ça peut jouer pour le fait que ça affiche mon état reports avec les données complêtes si ou avoir la bonne syntaxe ou sinon comment faire pour obtenir mon etat report avec toutes les données sans avoir de message d'alerte
merci de votre aide en espérant etre assez clair.
salut,
Pourquoi tu mets pas ton code ci_dessous dans le trigger after_report du rapport
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DELETE W_NOTE_FABRICATION_A_EDITER WHERE NOM=P_NOM; commit;
Publications: http://schelabi.developpez.com/
Le plus propre serait de faire le ménage de la table dans le Report lui-même dans le trigger AFTER-REPORT par exemple.
est ce que vous pouvez me donnez un exemple pour modifier mon code pour que ma table soit nettoyé dans le after_report car je me suis jamais servi de ça
Dans ton formulaire tu as passé les parametres a report.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 LC$Cmd := LC$Rep60_Test || '?Section1&report=note_serie_mere_chauss2 .rdf' || '&P_NOM='|| name_in('GLOBAL.NOM_UTIL')|| '&PARAMFORM=no'||'&DESNAME=prt04_letter'||'&PRINTJOB=no' ||'COMM_MODE=SYNCHRONOUS';
Envoyé par salim11
Publications: http://schelabi.developpez.com/
Soit tu fais le delete dans le report.
Soit avec un timer.
Partager