Differenza report tra acOutputReport e acViewPreview

di fabionik2004 il
21 risposte

Ciao a tutti

ho un problema sul salvataggio di un report tramite command button.

Quando Faccio solo un acviewpreview, il report é visualizzato correttamente, con tutti campi calcolati che sono nell'evento apertura report.

Quando invece faccio acoutputreport  per salvarlo in pdf, il file viene salvato correttamente ma i campi calcolati non ci sono.

Cosa potrebbe essere?

ecco i due codici che utilizzo per la preview e per il salvataggio

stDocName = "test"
filtro = "Cod=" & Forms!Newc!casellaRicerca
DoCmd.OpenReport stDocName, acViewPreview, , filtro
stDocName = "test"
filtro = "Cod=" & Forms!Newc!casellaRicerca
DoCmd.OpenReport stDocName, acViewPreview, , filtro, acHidden
 DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, pth & headpdf & " _test.pdf"
  DoCmd.Close acReport, stDocName, acSaveNo

Ho anche provato ad inserire una msgbox nel codice di apertura report per vedere se il campo viene calcolato, ed il valore della msgbox é corretta

MsgBox (Report!Ter!txtSIG)

21 Risposte

  • Questo ò il codice che c'è all'apertura del report, i campi che non riesco a visualizzare nel pdf salvato sono questi, che si trovano in un sottoreport TGC

    Report!TGC!("txtSign" & I) = strRiga

    mentre quelli nel report principale vengono visualizzati correttamente

    Me("txtSign" & I) = strRiga

    Invece se faccio acpreview tutti  i campi sono visualizzati correttamente.

    Private Sub Report_Load()
    
    Dim rs As DAO.Recordset
    Dim strRiga As String
    Dim cod1, I As Integer
    cod1 = Forms.NewContract.Cod
    
    
    'Stampa Firme
    Set rs = CurrentDb.OpenRecordset("Select * From Persons WHERE Signature = True AND Cod Like '" & cod1 & "' ;")
    strRiga = ""
    If rs.EOF Then
    
    Else
    I = 0
    With rs
    Do Until I = 2 Or .EOF
    I = I + 1
    strRiga = strRiga & !Name & " " & !Surname
    Me("txtSign" & I) = strRiga
    Report!TGC!("txtSign" & I) = strRiga
    strRiga = ""
    .MoveNext
    Loop
    End With
    End If
    
    rs.Close
    
    
    End Sub
  • Prima di lanciarmi in analisi e correzioni varie (alcune già ci sono sul codice scritto ma non dovrebbero risolvere il problema), puoi dirmi se il campo calcolato che in esportazione non è visualizzato correttamente ha comunque un valore, seppur sbagliato, o riporta un messaggio d'errore tipo #Errore? o è proprio del tutto assente?

    Codice con rientri, per facilitare la lettura, ma da rivedere in un post successivo.

    Private Sub Report_Load()
        Dim rs As DAO.Recordset
        Dim strRiga As String
        Dim cod1, I As Integer
        cod1 = Forms.NewContract.Cod
    
        'Stampa Firme
        Set rs = CurrentDb.OpenRecordset("Select * From Persons WHERE Signature = True AND Cod Like '" & cod1 & "' ;")
        strRiga = ""
        If rs.EOF Then
    
        Else
            I = 0
            With rs
                Do Until I = 2 Or .EOF
                    I = I + 1
                    strRiga = strRiga & !Name & " " & !Surname
                    Me("txtSign" & I) = strRiga
                    Report!TGC!("txtSign" & I) = strRiga
                    strRiga = ""
                    .MoveNext
                Loop
            End With
        End If
    
        rs.Close
    End Sub
  • Ciao,

    i campi  Report!TGC!("txtSign" & I) = strRiga  nel pdf sono vuoti senza nessun errore

  • Prova a mettere un punto di interruzione su questa riga

     DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, pth & headpdf & " _test.pdf"

    Il codice si ferma prima di eseguirla, poi con F8 prosegui. E' un tentativo per vedere se l'esportazione avviene “troppo presto” rispetto all'apertura in anteprima di stampa. Un tentativo, senza pretese o grandi attese.

  • Ho provato, ma il risultato non cambia, i campi interessati rimangono vuoti.

    Ho notato che se faccio output in pdf dei singoli report, i campi vengono stampati correttamente. 

    Il problema si presenta quando ho un sottoreport dentro il report principale, ed in questo caso i campi calcolati sul sottoreport non vengono calcolati

  • Apri il report prima in modalità non visibile poi esegui l'output e poi chiudilo.

  • 19/10/2024 - @Alex ha scritto:


    Apri il report prima in modalità non visibile poi esegui l'output e poi chiudilo.

    E' quello che sto gia facendo credo

    stDocName = "test"
    filtro = "Cod=" & Forms!Newc!casellaRicerca
    DoCmd.OpenReport stDocName, acViewPreview, , filtro, acHidden
     DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, pth & headpdf & " _test.pdf"
      DoCmd.Close acReport, stDocName, acSaveNo

    tra l'altro se tolgo l'opzione achidden il report é corretto. Ma é proprio il pdf salvato che non é corretto

  • Forse se posti, su un sito di condivisione dati preferibilmente no onedrive, un esempio possiamo verificare direttamente ciò che accade e aiutarti più efficacemente.

  • Mi associo a Stifone.

  • Direi che qualche cosa di molto anomalo c'è come approccio… e mi riferisco al codice:

    Do Until I = 2 Or .EOF
    	I = I + 1
        strRiga = strRiga & !Name & " " & !Surname
        Me("txtSign" & I) = strRiga
        Report!TGC!("txtSign" & I) = strRiga
        strRiga = ""
        .MoveNext
    Loop

    Cercavo di capire perchè scrivi anche nel Report TGC… e non solo in quello aperto…?

    Report!TGC!("txtSign" & I) = strRiga

    poi volevo capire perchè strRiga la valorizzi così:

    strRiga = strRiga & !Name & " " & !Surname

    visto che poi azzeri strRiga…  il tutto è meglio scriverlo così:

    Do Until I = 2 Or .EOF
    	I = I + 1
        strRiga = !Name & " " & !Surname
        Me("txtSign" & I) = strRiga
        Report!TGC!("txtSign" & I) = strRiga
        .MoveNext
    Loop

    Domanda poi ignota… perchè limiti a 2 iterazioni o EOF…?

  • 24/10/2024 - fabionik2004 ha scritto:


    ho creato un piccolo DB di esempio.

    Confermo l'errore, anche su un database creato da zero. Non so il motivo e per qualche stratagemma ci devo pensare. Per la cronaca: il problema si verifica anche se provo a stampare il report aperto in anteprima con PDF Creator.

  • 25/10/2024 - Philcattivocarattere ha scritto:


    24/10/2024 - fabionik2004 ha scritto:


    ho creato un piccolo DB di esempio.

    Confermo l'errore, anche su un database creato da zero. Non so il motivo e per qualche stratagemma ci devo pensare. Per la cronaca: il problema si verifica anche se provo a stampare il report aperto in anteprima con PDF Creator.

    Si effettivamente non avevo fatto questa prova di stampare il report aperto e l'errore si presenta anche in quel caso

Devi accedere o registrarti per scrivere nel forum
21 risposte