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 21/01/2008, 11h24   #1
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Par défaut 9i Webutil Création fichier txt + Impression vide

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
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
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;
Premier Bug apparu :
Impression d'un fichier vide
Juste après le FCLOSE, j'ai mis un Arrêt par message
Code :
message('STOP'); message(' ');
Le fichier sur le poste client est créé mais vide.

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
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 11h35   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Lorsque vous utilisez CLIENT_TEXT_IO(), il faut toujours placer une instruction avant de fermer le fichier.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 11h55   #3
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Avant ?

Merci, je vais tester ça tout de suite.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 11h08   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Bon, le synchronize avant le FCLOSE ne marche pas :
On revient au bug n° 1 : Impression d'un fichier vide

Du coup, j'ai du rajouter la création du 2ème fichier pour les débloquer.
J'ai pas encore appelé le 2ème site pour le 2ème bug et voir s'il était résolu.

Le casse tête !!
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 11h45   #5
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
C'est la raison pour laquelle je n'utilise jamais CLIENT_TEXT_IO, mais TEXT_IO et Webutil_File_Transfert.AS_To_Client() pour récupérer le fichier sur le poste client. C'est 10 fois plus rapide!
http://fdegrelle.over-blog.com/article-1810290.html
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 12h25   #6
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Et moi qui croyais que c'était l'inverse.. tout faux !

Merci Sheik
__________________
More Code : More Bugs. Less Code : Less Bugs
McM 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 05h48.


 
 
 
 
Partenaires

Hébergement Web