Newsgroup: it.comp.appl.access
Titolo: quando un istruzione è _effettivamente_ conclusa??

c'e' un modo per sapere se un istruzione ha effettivamente concluso il suo
lavoro???
nel dettaglio:
io lancio la stampa di un report in pdf e poi avrei bisogno di compiere
un'operazione sul file pdf appena creato.
solo che il modulo, una volta lanciata la stampa passa subito all'istruzione
successiva, senza aspettare che il file pdf sia completo.
provvisoriamente ho inserito un timer ma, a parte che rallenta il programma,
a volte anche 10 secondi non sono sufficienti e io mi ritrovo con una pagina
bianca.
Quindi chiedo: c'e' modo di sapere se e quando l'operazione in generale (o
di stampa in particolare) č effettivamente conclusa??
Grazie
Guido
ancora piů nel dettaglio (parte del codice):
....
    'avvia word
    Set oApp = CreateObject("Word.Application")
    oApp.Visible = True
...
    'e lo usa (tra le altre cose) per impostare distiller come stampante
predefinita
        oApp.ActivePrinter = "Acrobat Distiller"
...
    'a questo punto stampa (o meglio crea il pdf) di copertina e documento
    DoCmd.OpenReport R_Copertina, acNormal
    DoCmd.OpenReport R_Documento, acNormal
(qui ho dovuto inserire un loop di 10 secondi per dare il tempo a distiller
di finire la stampa - ma non č che mi convinca molto)
...
    'quindi sfruttando un riferimento alla "Type lybrary" (credo si chiami
cosě) di acrobat
    'accoda il pdf R_Documento dietro R_Copertina
    bOK = R_Copertina.InsertPages(nPages1 - 1, R_Documento, 0, nPages2,
False)
--
----------------------- Guido (at work) ----------------------
         "If I am a fatalist, what can I do about it?
     guido(underscore)newsg(chiocciola)yahoo(punto)it
-----Questo messaggio e' prodotto con il 100% di elettroni riciclati-----


Guarda su 
www.sitocomune.com
 c'č un articolo sull'attesa di un eseguibile,
dovrebbe fare al caso tuo
MAssimiliano


saluti Guido


 ha scritto nel messaggio
news:beugdf$8s70r$1...@ID-78697.news.uni-berlin.de...

Oltre al suggerimento di MA puoi utilizzare questo script:
Dim oWshShell, oExec As Integer
Set oWshShell = CreateObject("WScript.Shell")
oExec = oWshShell.Run("AcroRd32.exe" & "
C:\Documenti\nomeDocumento.pdf",, -1)
MsgBox oExec & ", Chiusa"
Set oWshShell = Nothing
Ciao.
--
Sergio MAZZA

 Guarda su 
www.sitocomune.com
 c'è un articolo sull'attesa di un eseguibile,


 Guido
[CUT]
Potrebbe bastarti rilevare l'EVENTO di chiusura di Word....?
Se si potresti attribuire in modo differente la variabile
Oggetto oApp :
Dim WithEvents oApp As Object
Di conseguenza puoi intercettarne l'evento CLOSE.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:9a468cb8372ad653d8...@mygate.mailgate.org...

Forse cosi' non funziona perchè anche chiudendo
word il file e in fase di spooling



Perchè non tiri fuori la tua soluzione?
MAssimiliano


hai postato tu
"Se non risolvi ho una soluzione diversa ma funzionale."?
Lo so, l'ho letto, sono io che mi chiamo
MAssimiliano

 Sergio MAZZA
grazie, guido



devo studiare bene la soluzione proposta da mazza
se nel frattempo hai qualche altra idea da proporre
grazie, guido


 @Alex.
comunque grazie
Guido



Era solo un esempio che dovevi riadattare...
Ciao.
--
Sergio MAZZA

 comunque grazie
Ma se è solo per questo è inutile passare per word. Imposta la stampante del
distiller sul report direttamente, senza uscire da Access
MAssimiliano

 MAssimiliano
naaaaaaa, perchè dovrei rinunciare alla possibilità di impostare la
stampante (pdf o
carta) direttamente da un controllo della finestra di stampa??? ;-)
Guido


 -----Questo messaggio e' prodotto con il 100% di elettroni riciclati-----
Guarda che con WSH puoi impostare la stampante predefinita:
Es.
Dim objWshNet As Object
Set objWshNet = CreateObject("Wscript.Network")
objWshNet.SetDefaultPrinter "HP LaserJet 4100 PCL 6"
Set objWshNet = Nothing
Ciao.
-- 
Sergio MAZZA


E chi ti dice di rinunciare, solo che non capisco perché vai in Word!?
docmd.runcommand accmdprint e ti apre la finestra delle stampanti
Ascoltami non andare in Word
MAssimiliano


infatti mi sono studiato un po' wsh e questo è il risultato...
'***********************
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
InizioProcedura = now()
docmd.openreport R_Documento, acNormal
 Do
        'ciclo di attesa per la creazione del PDF (finchè l'ora di ultima
modifica non è successiva
        'a quella in InizioProcedura, prelevata subito prima della stampa,
non va avanti)
        Set f = fso.GetFile("C:\R_Documento.pdf")
        OraUltimaModifica = f.DateLastModified
        DoEvents
 Loop While OraUltimaModifica < InizioProcedura
'*********************
Voilà (e grazie dell'aiuto)
Guido


 -----Questo messaggio e' prodotto con il 100% di elettroni riciclati-----
Di nulla...
Ciao.
--
Sergio MAZZA