Salut tout le monde. Je suis en plein démarrage depuis début janvier, et j'ai bien sur des bugs foireux :
Appli en 9i, j'ai un écran qui permet d'imprimer des étiquettes de transport.
Tout marchait bien sur les site pilotes démarrés depuis plusieurs mois.
J'explique le code puis les bugs
Premier Bug apparu :
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 WHEN BUTTON PRESSED v_tab TABLE OF VARCHAR2(2000); -- Contient 1 ligne par étiquette. -- nom du fichier dans le rep temporaire du client. v_nomfic := Client_Win_Api_Environment.Get_Temp_Directory(FALSE)|| '\imp_etiq.tmp'; -- On crée un fichier imp_etiq.tmp sur le poste client BEGIN v_file := CLIENT_TEXT_IO.FOPEN(v_nomfic,'w'); EXCEPTION WHEN OTHERS THEN MONTRER_ALERT_STOP('Fichier '|| v_nomfic || ' non créé'); RAISE Form_Trigger_Failure; END; IF CLIENT_TEXT_IO.IS_OPEN(v_file) THEN -- On insère les données dans le fichier FOR i IN v_tab.FIRST..v_tab.LAST LOOP CLIENT_TEXT_IO.PUT(v_file, v_tab(i)); END LOOP; -- Fin d'écriture dans le fichier CLIENT_TEXT_IO.FCLOSE(v_file); -- On envoie l'impression du poste client vers l'imprimante Etiquette. WEBUTIL_HOST.nonblocking('cmd /c PRINT /D:' || :imprimante_etiquette || ' ' || v_nomfic); END IF;
Impression d'un fichier vide
Juste après le FCLOSE, j'ai mis un Arrêt par messageLe fichier sur le poste client est créé mais vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part message('STOP'); message(' ');
J'ai trouvé une solution en créant un second fichier (imp.log avec 1 seule ligne) après la fermeture du premier.
Un message stop après la fermeture du second fichier montre le premier à 1Ko (Ok) et le second à 0 Ko (mais je m'en moque je ne l'imprime pas).
Bug résolu
Second bug apparu suite à cette modif sur un des sites :
Impression de la dernière étiquette
1/ L'utilisateur choisit un transport, imprime l'etiquette, c'est la dernière imprimée qui ressort.
2/ Il rappuie sur le bouton, c'est la bonne qui sort
J'ai remplacé la création du second fichier par un SYNCHRONIZE même résultat.
Je sais plus quoi faire pour tester
En plus n'étant pas sur place, c'est super dur de tester et d'être sur de ce qui se passe.
C'est comme si le fichier était créé après la commande HOST d'impression
Partager