Controllo report chiuso in ciclo stampa pdf

di il
30 risposte

30 Risposte - Pagina 2

  • Re: Controllo report chiuso in ciclo stampa pdf

    Ho fatto un test, ed aprire Report in MultiIstanza, è pur fattibile senza grandi problemi... il problema è poi usare l'invio in OutputTo, che non consente di differenziare l'Istanza da lanciare e, come si sa il Report aperto in MultiIstanza è sempre lo stesso Report, quindi diventa possibile rendere "Casuale" l'Output...

    Si risolverebbe il tutto se, consapevoli di avere una Virtrual Printer(PDF) installata si andasse ad impostare sull'Oggetto Report aperto in MultiIstanza, la Printer definita per il PDF... questo risolverebbe tutto, complicando però l'identificazione a priori di quale sia la Stampante... cosa che con OutputTo si può evitare.

    Da ragionarci ancora...
  • Re: Controllo report chiuso in ciclo stampa pdf

    Scusate ma mi sono accorto scrivendo nel mio post precedente che forse ero arrivato ad una conclusione errata quindi vi chiedo di interpretare questa sequenza di eventi e provare a dare una spiegazione:

    la sequenza di aziende era A, B, C ... Z (per facilità)
    fino alla M tutto a posto, poi la mail di N l'ha mandata con l'intestazione giusta ("spett.le N, ...") e nome di allegato giusto (N.pdf) ma il contenuto di N.pdf era riferito al report filtrato per O, in più la mail ad O non l'ha mandata ed ha ripreso con P, Q, R, ..., Z in modo corretto.
    il codice in sintesi è:
    
    WHILE  rs.EOF
         CreaPDF("ID_AZIENDA=" & rs!ID_AZIENDA, NomeReport, Percorso & "\" & rs!ID_AZIENDA & ".pdf", False, True, Ordinamento)
         EMAIL_CDO(idProcesso, False, , , DEST, rs!ID_AZIENDA, , Percorso & "\" & rs!ID_AZIENDA & ".pdf")
         rs.movenext
    WEND
    
    boh... nn capisco come possa succedere
  • Re: Controllo report chiuso in ciclo stampa pdf

    Debug.Print... cerca di capire se ha generato il File correttamente che non fosse in coda, per i precedenti... ed abbia preso il file sbagliato...
  • Re: Controllo report chiuso in ciclo stampa pdf

    
    WHILE  rs.EOF
         MyPDF = Percorso & "\" & rs!ID_AZIENDA & ".pdf"
         CreaPDF("ID_AZIENDA=" & rs!ID_AZIENDA, NomeReport, MyPDF, False, True, Ordinamento)
         EMAIL_CDO(idProcesso, False, , , DEST, rs!ID_AZIENDA, , MyPDF)
         rs.movenext
    WEND
    
    All'interno del loop evitiamo confusioni ... non risolverà il tuo problema ma almeno abbiamo una variabile che contiene lo stesso valore all'interno del loop.
    CreaPDF potrebbe restituirti True/false in caso di successo/errore al suo interno ? Magari anche EMAIL_CDO potrebbe farlo ?
  • Re: Controllo report chiuso in ciclo stampa pdf

    Grazie Alex e Max per le risposte e si il debug lo faccio PER LEGGE
    la mail inviata male era
    1) inviata alla mail dell'azienda corretta
    2) nel corpo la scritta era "Spett.le xxx" corretta!
    3) nome del file allegato corretto
    4) file pdf (con nome corretto) contenente il report filtrato male

    per me è assurdo... l'istruzione per cui crea il pdf è
    
    CreaPDF("ID_AZIENDA=" & rs!ID_AZIENDA, NomeReport, Percorso & "\" & rs!ID_AZIENDA & ".pdf", False, True, Ordinamento)
    
    il primo parametro è il filtro da applicare al report corrispondente al secondo parametro (nomeReport) e lo salva sul fileSystem come dice il terzo parametro, quindi posso anche fare come dice Max ma al momento della chiamata alla funzione il primo ed il terzo parametro non possono avere ID_AZIENDA diverso ... proprio nn capisco...
    questa la CreaPDF (completa)
    
    Public Function CreaPDF(myFILTRO As String, NomeReport As String, fullPath As String, _
        Optional NotificaErrore As Boolean = False, Optional NotificaSovrascrive As Boolean = True, Optional Ordinamento As String) As Boolean
    '
        CreaPDF = False
    
    'controllo che non esista già il file
        If Dir$(fullPath, vbNormal) <> vbNullString Then
            If NotificaSovrascrive Then
                If MsgBox("Esiste già un file PDF con lo stesso nome." & vbNewLine & _
                        "Vuoi sovrascriverlo?", vbQuestion + vbOKCancel, "ATTENZIONE") = vbCancel Then
                    GoTo FINE
                Else
                    Kill fullPath
                End If
            Else
                Kill fullPath
            End If
        End If
    'creo
        On Error GoTo FINE
        DoCmd.OpenReport NomeReport, acViewPreview, , myFILTRO, acHidden, Ordinamento
        DoCmd.OutputTo acOutputReport, NomeReport, acFormatPDF, fullPath, False, , , acExportQualityPrint
        DoCmd.Close acReport, NomeReport, acSaveNo
        DoEvents
        CreaPDF = True
        Sleep (1000)
        
    FINE:
        If NotificaErrore And Not CreaPDF Then MsgBox "Si è verificato un errore nella creazione del PDF!", vbCritical + vbOKOnly, "INFO"
        On Error GoTo 0
    '
    End Function
    
    
  • Re: Controllo report chiuso in ciclo stampa pdf

    Stando a quello che dici, è realmente poco possibile... e non ho soluzione.
    Domanda... hai provato a riprodurre il problema e vedere se capita ancora o se è stato qualche cosa di "Anomalo"...?

    P.S. modificherei la funzione così, ma solo per pulizia... in realtà anche per funzionalità:
    
    Public Function CreaPDF(ByVal IDCriteria As String, ByVAL NomeReport As String, _
        Optional NotificaErrore As Boolean = False, Optional NotificaSovrascrive As Boolean = True, Optional Ordinamento As String) As Boolean
    ....
    
    Questo perchè i Parametri di Default sono passati ByRef, e se non è necessario, è sempre meglio evitarlo... quindi metterei ByVal per garanzia non possano essere alterate in nessun modo.
    Seconda cosa, sia il CRITERIO del Filtro che il FULLPATH di fatto si basano sul valore passato [rs!ID_AZIENDA], quindi ricostruisci i 2 parametri nella Funzione, ti sarà più comodo ed UNIVOCO il riferimento.

    Riprova il tutto e cerca di capire se, l'anomalia è stata casuale(anche se io non credo a queste casualità), o se riproducibile.
  • Re: Controllo report chiuso in ciclo stampa pdf

    Mutt, giusto per :
    - tu chiami la funzione CreaPDF passando al parametro NotificaErrore il valore False
    - se la funzione CreaPDF va in errore tu esci con il valore di ritorno False (senza segnalare nulla perché NotificaErrore = False)
    - quando esci dalla funzione CreaPDF NON testi se la funzione è stata eseguita correttamente ed esegui SEMPRE, COMUNQUE, DOVUNQUE, QUANTUNQUE la funzione EMAIL_CDO ... quale report invii ?

    Vedi un po' tu se ti sembra una gestione accettabile degli errori ...
    Se intercetti gli errori ma poi li ignori non fai prevenzione, purtroppo rimandi il problema a che deve poi risolvere gli eventuali bachi (e se sei sempre tu allora ti dai la zappa sui piedi).
    Diciamo che se riesci a rendere sicuro il tuo codice (e ripetibile) allora dopo possiamo anche cercare di capire se realmente la creazione dei report in PDF sia asincrona rispetto all'esecuzione del programma (io nutro dei dubbi ma potrei sbagliarmi).
  • Re: Controllo report chiuso in ciclo stampa pdf

    @Alex è un errore che è capitato boh... 3 volte in un anno?!
    ok per la modifica alla chiamata con i ByVal, hai ragione.

    Per questa cosa
    Seconda cosa, sia il CRITERIO del Filtro che il FULLPATH di fatto si basano sul valore passato [rs!ID_AZIENDA], quindi ricostruisci i 2 parametri nella Funzione, ti sarà più comodo ed UNIVOCO il riferimento.
    si in linea di teorica avresti ragione ma il report che passo è anch'esso un parametro ed il filtro non è sempre sull'id_azienda, per cui si, potrei mettere un case sul nome report dentro ma il filtro è variabile anche per stesso report...
    La CreaPDF è generica per qualsiasi cosa io faccia e mi era comoda così.

    per questa
    Riprova il tutto e cerca di capire se, l'anomalia è stata casuale(anche se io non credo a queste casualità), o se riproducibile.
    anch'io penso sempre che le cose non siano casuali ma questa mi sembra veramente assurda.



    @Max: nell'ultimo post ho messo tutto il codice della CreaPDF ma nei precedenti avevo omesso per brevità il codice del ciclo con tutti i controlli e la gestione errori. Chiaramente non viene inviato se non si crea il pdf ma lo registra in un registro eventi consultabile dall'utente.
    Il parametro NotificaErrore mi serve perchè, come detto sopra, essendo la CreaPDF unica in tutto il programma ho bisogno che se chiamata da una richiesta manuale (tipo per invii singoli) notifichi il tutto a video istantaneamente con un messaggio ma se richiamata da automatismo (tipo task di sistema) o per azioni cicliche, non segnali ogni anomalia ma le "accumuli" tutte per un'unica notifica finale.
  • Re: Controllo report chiuso in ciclo stampa pdf

    @Max: nell'ultimo post ho messo tutto il codice della CreaPDF ma nei precedenti avevo omesso per brevità il codice del ciclo con tutti i controlli e la gestione errori. Chiaramente non viene inviato se non si crea il pdf ma lo registra in un registro eventi consultabile dall'utente.
    Il parametro NotificaErrore mi serve perchè, come detto sopra, essendo la CreaPDF unica in tutto il programma ho bisogno che se chiamata da una richiesta manuale (tipo per invii singoli) notifichi il tutto a video istantaneamente con un messaggio ma se richiamata da automatismo (tipo task di sistema) o per azioni cicliche, non segnali ogni anomalia ma le "accumuli" tutte per un'unica notifica finale.
    [/quote]
    Se è così è puù facile analizzare il problema ...

    muttley005 ha scritto:


    @Alex è un errore che è capitato boh... 3 volte in un anno?!
    ...anch'io penso sempre che le cose non siano casuali ma questa mi sembra veramente assurda.
    Se sei in grado di ripetere l'anomalia direi che probabilmente si può arrivare a capirne il perché.
    Quindi, puoi ripetere l'esecuzione che ti ha dato problemi (quindi stessi dati su stesso PC) e verificarne il comportamento?
  • Re: Controllo report chiuso in ciclo stampa pdf

    muttley005 ha scritto:


    @Max: nell'ultimo post ho messo tutto il codice della CreaPDF ma nei precedenti avevo omesso per brevità il codice del ciclo con tutti i controlli e la gestione errori. Chiaramente non viene inviato se non si crea il pdf ma lo registra in un registro eventi consultabile dall'utente.
    Il parametro NotificaErrore mi serve perchè, come detto sopra, essendo la CreaPDF unica in tutto il programma ho bisogno che se chiamata da una richiesta manuale (tipo per invii singoli) notifichi il tutto a video istantaneamente con un messaggio ma se richiamata da automatismo (tipo task di sistema) o per azioni cicliche, non segnali ogni anomalia ma le "accumuli" tutte per un'unica notifica finale.
    Se è così è puù facile analizzare il problema ...

    muttley005 ha scritto:


    @Alex è un errore che è capitato boh... 3 volte in un anno?!
    ...anch'io penso sempre che le cose non siano casuali ma questa mi sembra veramente assurda.
    Se sei in grado di ripetere l'anomalia direi che probabilmente si può arrivare a capirne il perché.
    Quindi, puoi ripetere l'esecuzione che ti ha dato problemi (quindi stessi dati su stesso PC) e verificarne il comportamento?
    [/quote]
  • Re: Controllo report chiuso in ciclo stampa pdf

    max.riservo ha scritto:


    muttley005 ha scritto:


    @Max: nell'ultimo post ho messo tutto il codice della CreaPDF ma nei precedenti avevo omesso per brevità il codice del ciclo con tutti i controlli e la gestione errori. Chiaramente non viene inviato se non si crea il pdf ma lo registra in un registro eventi consultabile dall'utente.
    Il parametro NotificaErrore mi serve perchè, come detto sopra, essendo la CreaPDF unica in tutto il programma ho bisogno che se chiamata da una richiesta manuale (tipo per invii singoli) notifichi il tutto a video istantaneamente con un messaggio ma se richiamata da automatismo (tipo task di sistema) o per azioni cicliche, non segnali ogni anomalia ma le "accumuli" tutte per un'unica notifica finale.
    Se è così è più facile analizzare il problema ...

    muttley005 ha scritto:


    @Alex è un errore che è capitato boh... 3 volte in un anno?!
    ...anch'io penso sempre che le cose non siano casuali ma questa mi sembra veramente assurda.
    Se sei in grado di ripetere l'anomalia direi che probabilmente si può arrivare a capirne il perché.
    Quindi, puoi ripetere l'esecuzione che ti ha dato problemi (quindi stessi dati su stesso PC) e verificarne il comportamento?
  • Re: Controllo report chiuso in ciclo stampa pdf

    muttley005 ha scritto:


    @Max: nell'ultimo post ho messo tutto il codice della CreaPDF ma nei precedenti avevo omesso per brevità il codice del ciclo con tutti i controlli e la gestione errori. Chiaramente non viene inviato se non si crea il pdf ma lo registra in un registro eventi consultabile dall'utente.
    Il parametro NotificaErrore mi serve perchè, come detto sopra, essendo la CreaPDF unica in tutto il programma ho bisogno che se chiamata da una richiesta manuale (tipo per invii singoli) notifichi il tutto a video istantaneamente con un messaggio ma se richiamata da automatismo (tipo task di sistema) o per azioni cicliche, non segnali ogni anomalia ma le "accumuli" tutte per un'unica notifica finale.
    Se è così è più facile analizzare il problema ...

    muttley005 ha scritto:


    @Alex è un errore che è capitato boh... 3 volte in un anno?!
    ...anch'io penso sempre che le cose non siano casuali ma questa mi sembra veramente assurda.
    Se sei in grado di ripetere l'anomalia direi che probabilmente si può arrivare a capirne il perché.
    Quindi, puoi ripetere l'esecuzione che ti ha dato problemi (quindi stessi dati su stesso PC) e verificarne il comportamento?
  • Re: Controllo report chiuso in ciclo stampa pdf

    Allora poi
    appena ricevuta la segnalazione dell'errato invio (forse mezz'ora dopo?!) ho rifatto l'invio pari pari (ma inviate tutte le email a me e non ai teorici destinatari) direttamente dalla postazione del mio cliente e tutto è filato come previsto.
    Simulato e risimulato anche a casa agganciato alla loro banca dati cercando di ricreare l'anomalia... nulla.
  • Re: Controllo report chiuso in ciclo stampa pdf

    muttley005 ha scritto:


    Allora poi
    appena ricevuta la segnalazione dell'errato invio (forse mezz'ora dopo?!) ho rifatto l'invio pari pari (ma inviate tutte le email a me e non ai teorici destinatari) direttamente dalla postazione del mio cliente e tutto è filato come previsto.
    Simulato e risimulato anche a casa agganciato alla loro banca dati cercando di ricreare l'anomalia... nulla.
    Direi che siamo in un vicolo cieco ...
  • Re: Controllo report chiuso in ciclo stampa pdf

    Perfetto!
Devi accedere o registrarti per scrivere nel forum
30 risposte