Ripetizione stampa con Harbour

Moderator: Enrico Maria Giordano

Ripetizione stampa con Harbour

Postby Piscicelli Zingoni » Mon Jan 30, 2006 5:50 pm

Salve, mi e' capitato che un cliente utilizzando un programma con fw (16) funziona bene (stampando una fattura)
Lo stesso programma compilato con harbour funziona tutto bene ad eccezione che nella stampa delle fatture (anteprima) ripresenta sempre la precedente fattura stampata....come se non cancellasse i wmf all'uscita della stampa!
Possibile ?
Mai capitato a qualcuno ?
Dato che il cliente e' molto distante non posso verificarlo di persona ma ci devo credere. Io pero' non riesco a simulare tale problema sul mio PC.

Avevo gia' postato questo problema ma non sono riuscito a risolverlo.

Si accetta qualunque consiglio.
Piscicelli/Zingoni
Piscicelli Zingoni
 
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Postby Marco Turco » Tue Jan 31, 2006 6:38 pm

Questo problema si verifica generalmente a causa di possibili bug di programmazione (magari in talune circostanze non "chiudi" la pagina oppure apri più volte una nuova pagina o ancora non chiudi la stampa) oppure a causa di problemi di stampa (finisce la carta o si verifica un errore irreversibile di stampa). In questi casi il file wmf può rimanere aperto e quando crei una nuova stampa, poiché il nome del file wmf viene generato con una numerazione progressiva, se il file già esiste ed è aperto, non potrà essere sovrascritto dalla nuova stampa ed è per questo motivo che ti appare sempre la pagina stampata in precedenza.

Io ho risolto definitivamente questo problema modificando la classe nella quale viene generato il nome wmf (non ricordo se printer.prg o tmetafil.prg).

1) Faccio generare i file wmf in una cartella TMP che ho creato nella mia applicazione. Questo perché Antonio crea i file wmf nella cartella dei file temporanei di Windows che però in caso di accesso al sistema diverso da Administrator può creare alcuni problemi nella creazione dei file.

2) Quando creo una stampa cancello prima tutti i wmf della cartella TMP e comunque quando genero il nome, verifico prima che non sia già presente un file con lo stesso nome altrimenti passo alla numerazione successiva.

Saluti

Marco
User avatar
Marco Turco
 
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London

Postby Piscicelli Zingoni » Wed Feb 01, 2006 12:45 pm

Grande idea, ci provero' anche io.
Grazie Mille
Piscicelli Zingoni
 
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Postby Piscicelli Zingoni » Fri Feb 10, 2006 10:12 am

Salve,
ho creato una funzione che cancella i uscita i WMF nella temp dir.
Ho notato che qualche volta non riesco a cancellare il file poiche' "utilizzato da un altro processo".
Ecco il motivo della ripetizione della stampa.

Qualche idea?
Grazie
Piscicelli Zingoni
 
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Postby Enrico Maria Giordano » Fri Feb 10, 2006 10:16 am

Significa che il file che cerchi di cancellare è ancora in uso. Identificalo e controlla, chiudendo o terminando i vari programmi in esecuzione, chi è che lo sta utilizzando.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8715
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Piscicelli Zingoni » Fri Feb 10, 2006 10:18 am

Sono in monoutente e sto visualizzando la pagina 3 dell'anteprima e quella che non risco a cancellare e' la pagina 1 !!
Piscicelli Zingoni
 
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Postby Enrico Maria Giordano » Fri Feb 10, 2006 10:26 am

Piscicelli Zingoni wrote:Sono in monoutente e sto visualizzando la pagina 3 dell'anteprima e quella che non risco a cancellare e' la pagina 1 !!


Non puoi cancellare i files dell'anteprima che stai attualmente visualizzando.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8715
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Silvio » Fri Feb 10, 2006 10:44 am

Non puoi dire direttamente a Linares di correggere questo problema ?
Certo che l'anteprima di stampa non funziona correttamente e privo di molte cose rispetto alle altre anteprime di stampa degli altri linguaggi
Per esempio a scuola abbiamo un programma del MIUR ( ministero) lui usa Powerbuilder e li c'è un'anteprima molto accattivante....
> Conversione in formati grafici e testo ( txt,pdf,doc)
> righello
>visualizzazione come in winword ( 10,25,50,75,100,200,400 per quanto riguarda lo zoom e poi in 2/4/6/8/10 x X pagine per la visualizzazione in un unica finestra di tutte le pagine del documento
> possibilità di inserire un image ..noi usiamo questo per inserire le firme scannerizzate in fondo al documento
> le stampe sono parametrizzabile dall'utente infatti è possibile creare un nuovo modello di stampa il programma elenca tutti i campi possbili e te li fa inserire nel documento ....

Certo quando arriveremo a questi livelli potremmo dire che il rpreview di stampa funziona correttamente .
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Enrico Maria Giordano » Fri Feb 10, 2006 10:47 am

Silvio wrote:Non puoi dire direttamente a Linares di correggere questo problema ?


Che io sappia non è un problema che dipende dalle Fivewin (personalmente non l'ho mai visto). Un esempio che lo dimostri aiuterebbe a capirne la natura.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8715
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Silvio » Fri Feb 10, 2006 12:55 pm

si ok
ancora con sti esempi
io ti voglio far capire una cosa : la situazione mi è capitata tempo fa
una procedura non funzionava con i footers di wbrowse di hernan
ho fatto un programmino di test semplice questo funzionava
mi sono impazzito una settimana per trovare l'errore poi ho scoperto che avevano cambiato il nome delle variabili

tu mi dirai ma come faccio io a provare il bug con un semplice test
bene ma non sempre il bug viene fuori

quello della stampa viene fuori per chi ha applicazioni che continuamente fa l'anteprima e la stampa a me è capitata tante volte e per farlo funzionare ho dovuto cancellare manualmente la cartella temp e ridossare la colpa "a parole" al povero SO e il programma dopo ha funzionato
ma sapevo benissimo che era un bug di fw.

Prima di abbellire le classi con tante estetiche che non servono poi a niente come le ultime modifiche che ha fatto linares per il rpreview dei bottoni secondo me servivano tante cose utili come la correzzione di questo bug .

Una correzzione utile per esempio è stata la conversione da wmf a emf
gli faccio un applauso per questo...

non so se rendo l'idea
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Enrico Maria Giordano » Fri Feb 10, 2006 1:02 pm

Silvio wrote:quello della stampa viene fuori per chi ha applicazioni che continuamente fa l'anteprima e la stampa a me è capitata tante volte e per farlo funzionare ho dovuto cancellare manualmente la cartella temp e ridossare la colpa "a parole" al povero SO e il programma dopo ha funzionato ma sapevo benissimo che era un bug di fw.


A me non è mai capitato, non so che dirti.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8715
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Piscicelli Zingoni » Fri Feb 10, 2006 2:12 pm

La mia procedura di cancellazione dei files temporanei e' stata inserita nell'action dell'uscita del rpreview.prg

Prima di uscire cancello i wmf temporanei e con fw16 funziona sempre (anche utilizzando la funzione fattrib() per rilasciare il file qualore non fosse cancellabile.)
Anche con harbur funziona quasi sempre ad eccezione di qualche volta che non capisco da cosa dipenda.
Provando a mano a cancellare tale file (con l'exe ancora running) mi dice che il file e' aperto da un altro processo. Sicuramente, almeno penso, dall'exe di harbour (se i files da cancellare sono 30, 29 li cancella e 1 no)

Non mi rimane in questo caso di dare un messaggio (di mascheramento) e dire all'utente: PROBLEMA DI WINDOWS CON I FIELS TEMPORANEI, SI PREGA DI USCIRE E RIENTRARE NEL PROGRAMMA.
Solo cosi' poi funziona e questo, penso, e' la dimostrazione che c'e' qualche piccolo bug da qualche parte.

Purtroppo il problema non e' ripetibile o almeno dopo 3000 lanci e anteprime non so spiegarmi quando e come succede.

Mistero del s/w!

Ciao
Piscicelli Zingoni
 
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Postby Enrico Maria Giordano » Fri Feb 10, 2006 3:32 pm

Prova a cancellare tutti i files EMF prima invece che dopo.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8715
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Marco Turco » Fri Feb 10, 2006 10:31 pm

x Piscitelli:

per risolvere il problema di una eventuale pagina rimasta aperta che ti impedisce di visualizzare correttamente la successiva anteprima, sostituisci il metodo startpage con questo allegato.

Si tratta in pratica di verificare se esiste già un file con un certo nome prima di utilizzarlo per il metafile. Se esiste ne utilizzo un altro.

Ciao

Marco

METHOD _StartPage() CLASS TPrinter

local lSetFixed,i,cWmfFileName

if ::hDC == 0
return nil
endif

lSetFixed := Set( _SET_FIXED, .F. )

if !::lMeta .and. ! ::lStarted
::lStarted := .T.
StartDoc( ::hDC, ::cDocument )
endif

::nPage++


if ::lMeta
for i:=1 to 9999
cWmfFileName:=::cDir + "\tmp" + PadL( i, 4, "0" ) + ".wmf"
if .not. file(cWmfFileName)
exit
endif
next

AAdd( ::aMeta, cWmfFileName)
::hDCOut := CreateMetaFile( ATail( ::aMeta ) )
else
StartPage( ::hDC )
endif

Set( _SET_FIXED, lSetFixed )

return nil
User avatar
Marco Turco
 
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London

Postby Piscicelli Zingoni » Sat Feb 11, 2006 11:51 am

Se li cancello prima potrebbe succedere che il cliente ha lanciato 2 stampe diverse da 2 programmi fwin32 diversi e quindi gli cancellerei le anteprime.
Forse e' meglio modificare il metodo suggerito.

Grazie comunque
Piscicelli Zingoni
 
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Next

Return to All products support

Who is online

Users browsing this forum: No registered users and 21 guests