Bonjour,
Voila, je ne comprends pas pourquoi mon POST-QUERY ne veut pas s'executer.
je fais "go_block('mon_bloc');" puis "execute_query;".
Mais le post-query du bloc n'est pas appelé.
pourriez-vous me donner quelques suggestions à ce sujet.
Merci.
Version imprimable
Bonjour,
Voila, je ne comprends pas pourquoi mon POST-QUERY ne veut pas s'executer.
je fais "go_block('mon_bloc');" puis "execute_query;".
Mais le post-query du bloc n'est pas appelé.
pourriez-vous me donner quelques suggestions à ce sujet.
Merci.
Je ne sais plus si on peut faire un go_block dans un post-query. Les triggers évènementiels ne peuvent pas faire de navigation.
Ensuite peut être que le block cible a un pre-query qui le met en status changed.
Faudrait debuguer avec un message à chaque étape avec :system.cursor_block , status.
Faudrait aller sur le block destination à la souris et entrer un execute query (Ctrl-F11) pour voir s'il n'y aurait pas un champ en affichage impossible genre trop court ou pas du bon type. Faudrait mettre une section exception dans le post-query
declare
.
begin
.
exception
when others then
message( 'erreur: ' || substr( sqlerrm, 1, 70 ) );
end;
1. assurez-vous que le go_block() vous place effectivement sur le bloc.
2. assurez-vous que le execute_query est effectivement exécuté
3. commant savez-vous que le post-query ne s'exécute pas ?
Merci, je vais essayer toutes vos suggestions.
Sinon le post-query ne s'execute pas car lors du debug, le block s'affiche sans passer dans le post-query.
Quand je execute manuellement l'execute query (F8), il n'ya aucun messages.il ne connait pas ctrl F11.Citation:
Faudrait aller sur le block destination à la souris et entrer un execute query (Ctrl-F11) pour voir s'il n'y aurait pas un champ en affichage impossible genre trop court ou pas du bon type
Je ne peux pas car je ne rentres pas dans le post-query.Citation:
Faudrait mettre une section exception dans le post-query
Le go_block me place effectivement sur mon block (je visualise tout les items du block et le bouton).Citation:
assurez-vous que le go_block() vous place effectivement sur le bloc.
c'est peut-etre la que vient le probleme car en faisant F8, je n'ai rien meme pas un message d'erreur.Citation:
assurez-vous que le execute_query est effectivement exécuté
Je ne sais pas trop vers ou aller pour regler ce probleme.
pourriez_vous me dire quels variables system ou autre dois-je regarder lors du debug pour savoir pourquoi le post-query ne s'execute pas?
Merci.
j'avais oublierle go_block, je le fais sur le "when-button-pressed" d'un bouton d'un autre block.Citation:
Je ne sais plus si on peut faire un go_block dans un post-query. Les triggers évènementiels ne peuvent pas faire de navigation.
Plcez-vous manuellement dans ce bloc et passer en mode interrogation (Enter-Query), puis exécutez (F8)
ctrl F11 et F11 sons des "invalides key" chez moi.
quand je me positionne dans un item et que je fais f8 je n'ai rien comme message.
par contre quand je fais f6 j'ai : argument 1 to builtin FIND_VIEW cannot be null (FRM-40738).
j'ai regardé tout les items : leur type, leur longueur ont l'air correcte.
Peu importe le raccourci clavier qui change entre 6i et 9i/10g.
Lorsque vous exécutez manuellement le query dans le bloc, passe t-il par le post-query ?
non c'est mon probleme depuis le debut.
le post-query n'est jamais executé apres l'execute-query.
que se soit manuellement ou à l'execution.
Pourtant les lignes sont bien affichées dans le bloc?
le trigger POST-QUERY est bien nommé post-query et pas post_query par exemple?
N'avez vous pas une erreur à l'exécution qui serait interceptée dans un trigger ON-ERROR ?
Non je n'ai aucun enregistement de la table, par contre je visualise tout les items que j'ai placé dans le block.le post-query me sert à remplir les champs non basés.Citation:
Pourtant les lignes sont bien affichées dans le bloc?
le trigger est bien nommé : post-query.
malheuresement je n'ai aucune erreur à l'execution.
de plus j'ai fait un autre block qui ressemble à 2 gouttes d'eau comme celui-ci qui est basé sur la meme table.Et qui marche sans probleme.
Es ce que le probleme peut venir du bloc source (celui qui fait le go_block et le execute_ query) qui appelle le bloc destination(celui qui a le post-query)?.
j'ai la fin de ma question en haut de la votre, j'ai appuyé sur entree par idnavertence.
mais tant que je fais go__block et execute_query le post-query doit etre executé meme s'il n'ya pas d'enregistrement.non?
Non, le post-query se déclenche pour chaque ligne ramenée. Pas de ligne, pas de post-query.
En tout cas je suis sur qu'il me ramene des lignes car dans le when-button-pressed, j'insere dans la table du bloc basé (les données sont bien presentes).
voici le when_button_pressed :
j'ai verifié j'insere bien des lignes dans la table du block (celui qui n'execute pas le post-query) avec la procedure ps_credocs.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 BEGIN :BLK_SUIVI_IN.SINS_DATE_REC_AR := :BLK_SUIVI_IN.SINS_DATE_REC_AR; ps_valider ; IF :BLK_SUIVI_IN.ROWID IS NOT NULL THEN execute_query; DECLARE CURSOR cur_nbDocs IS SELECT COUNT(*) nbDocs FROM SINISTRES_PHASES WHERE sinph_sins_id = :BLK_SINISTRES_SUIVI_IN.SINS_ID ; rec_Docs cur_nbDocs%ROWTYPE ; BEGIN OPEN cur_nbDocs ; FETCH cur_nbDocs into rec_Docs ; CLOSE cur_nbDocs ; IF rec_Docs.nbDocs = 0 THEN Pkg_Sec_Sin.PS_CREDOCS('SIN_PHASES_IN',:BLK_SUIVI_IN.SINS_ID) ; END IF ; go_block('BLK_SIN_PHASES_IN'); execute_query; END ; END IF ; END;
elle me sert à affiché des libellés d'une table de parametre.
non ne partez pas je sens que la reponse n'est pas loin.
En tout cas j'ai verifié sur le execute query rien n'est ramené alors que j'ai des enregistrements dans la table.
et le block est bien basé sur cette table.
il ya aussi dans ce block un item basé sur l'id de la table.
Ne pas confondre execute_query qui interroge la table et rempli le bloc avec toute autre façon manuelle de créer des enregistrements dans le bloc.
donc, lorsque le bloc est basé et que vous faites execute-query, le post-query se déclenche sur chaque ligne ramené.
Lorsque vous créez vous même des enregistrements dans le bloc, le post-query ne se déclenchera jamais.
Vérifiez la condition éventuelle que vous avez mis sur la propriété WHERE du bloc, et également qu'il n'y a pas un message d'erreur dans la status bar au moment de l'execute query.
ok.
Mais la je viens de voir quand je debug que le block_status est egal a "new" alors qu'il devrait etre à "query" quand j'execute le execute_query.
pourquoi?
il n'est donc pas passé en mode interrogation?
je ne comprends pas.