Come esportare PDF di una pagina filtrata

di il
31 risposte

31 Risposte - Pagina 2

  • Re: Come esportare PDF di una pagina filtrata

    Mostra il nuovo codice che, senza l'uso di tutti quei Filter, FilterOn… assume tutto un altro significato.
  • Re: Come esportare PDF di una pagina filtrata

    E' un problema di sovrapposizione.
    Siccome il processo che vai ad inserire nel CICLO non è SINCRONO, va in coda, e non dai al sistema il tempo di smaltirlo.

    Un metodo da provare, è di inserire un ritardo prima di [.MoveNext].

    Puoi ad esempio usare l'API SLEEP
    
    ' Codice da mettere in alto:
    Option Compare Database
    Option Explicit
    
    #If VBA7 Then
        Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
    #Else
        Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    #End If
    Poi la usi così
    
    ....
    Sleep 1000
    .MoveNext
    ....
  • Re: Come esportare PDF di una pagina filtrata

    OsvaldoLaviosa ha scritto:


    Mostra il nuovo codice che, senza l'uso di tutti quei Filter, FilterOn… assume tutto un altro significato.
    
    Dim rs                    As DAO.Recordset
        Dim rpt                   As Access.Report
        Dim sFolder               As String
        Dim sFile                 As String
        Const sReportName = "Report1"
    
        On Error GoTo Error_Handler
    
        sFolder = "C:\Users\Mafra8\Desktop\Master\"
    
        Set rs = Me.RecordsetClone
        With rs
            If .RecordCount <> 0 Then
                'Open the Report
                DoCmd.OpenReport sReportName, acViewPreview, , , acHidden
                'Define a report object so we can manipulate it below
                Set rpt = Reports(sReportName).Report
                
                .MoveFirst
                Do While Not .EOF
                    'Build the PDF filename we are going to use to save the PDF with
                    sFile = Nz(![Titolo_FILE], "") & " " & Nz(![Titolo], "") & " " & ".pdf"
                    sFile = sFolder & sFile
                
                    rpt.Filter = "[ID]=" & ![ID]
                    rpt.FilterOn = True
                    DoEvents
                    DoCmd.OutputTo acOutputReport, sReportName, acFormatPDF, sFile, , , , acExportQualityPrint
                   Call Sleep(1000)
                    .MoveNext
                Loop
                DoCmd.Close acReport, sReportName
            End If
        End With
    
    Error_Handler_Exit:
        On Error Resume Next
        If Not rpt Is Nothing Then Set rpt = Nothing
        If Not rs Is Nothing Then
            rs.Close
            Set rs = Nothing
        End If
        Exit Sub
    
    Error_Handler:
        If Err.Number <> 2501 Then
            MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
                   "Error Number: " & Err.Numero & vbCrLf & _
                   "Error Source: cmd_Click" & vbCrLf & _
                   "Error Description: " & Err.Description & _
                   Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
                   , vbOKOnly + vbCritical, "An Error has Occured!"
        End If
        Resume Error_Handler_Exit
    End Sub
    
    
  • Re: Come esportare PDF di una pagina filtrata

    @Alex ha scritto:


    E' un problema di sovrapposizione.
    Siccome il processo che vai ad inserire nel CICLO non è SINCRONO, va in coda, e non dai al sistema il tempo di smaltirlo.

    Un metodo da provare, è di inserire un ritardo prima di [.MoveNext].

    Puoi ad esempio usare l'API SLEEP
    
    ' Codice da mettere in alto:
    Option CompareDatabase
    Option Explicit
    
    #If VBA7 Then
        Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
    #Else
        Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    #End If
    Poi la usi così
    
    ....
    Sleep 1000
    .MoveNext
    ....
    Mi da errore sul else dell'if
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  • Re: Come esportare PDF di una pagina filtrata

    Ho provato anche questo ma mi da comunque errore sul declare:
    
    Option Explicit
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Sub Main()
    
       
        Sleep 3000
    
    End Sub
  • Re: Come esportare PDF di una pagina filtrata

    Mafra8 ha scritto:


    Ho provato anche questo ma mi da comunque errore sul declare:
    
    Option Explicit
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Sub Main()
    
       
        Sleep 3000
    
    End Sub
    Se COPI/INCOLLI questo non può dare problemi, l'ho incollato adesso da un mio progetto funzionante:
    
    Option Compare Database
    Option Explicit
    
    #If VBA7 Then
        Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
    #Else
        Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    #End If
    Che versione di ACCESS USI...?
  • Re: Come esportare PDF di una pagina filtrata

    Copiato e incollato ma non fa
    Allegati:
    29201_cdefbdbf411e90a24bcf136128fae9d6.png
    29201_cdefbdbf411e90a24bcf136128fae9d6.png
  • Re: Come esportare PDF di una pagina filtrata

    @Alex ha scritto:


    Mafra8 ha scritto:


    Ho provato anche questo ma mi da comunque errore sul declare:
    
    Option Explicit
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Sub Main()
    
       
        Sleep 3000
    
    End Sub
    Se COPI/INCOLLI questo non può dare problemi, l'ho incollato adesso da un mio progetto funzionante:
    
    Option Compare Database
    Option Explicit
    
    #If VBA7 Then
        Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
    #Else
        Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    #End If
    Che versione di ACCESS USI...?
    Versione di access 2013
  • Re: Come esportare PDF di una pagina filtrata

    Prova a lasciare solo questa (non è che sia una 64Bit..?)
    
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
  • Re: Come esportare PDF di una pagina filtrata

    @Alex ha scritto:


    Prova a lasciare solo questa (non è che sia una 64Bit..?)
    
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
    Si è a 64bit. non funziona lo stesso
  • Re: Come esportare PDF di una pagina filtrata

    Se non ricordo male la vcersione 2013 non ha la costante VBA7, quindi non riconosce il condizionante.
    Tuttavia se metti solo l'ultima dichiarazione dovrebbe andare.
    Cosa significa ora con solo quella riga "non funziona lo stesso"...?
  • Re: Come esportare PDF di una pagina filtrata

    @Alex ha scritto:


    Se non ricordo male la vcersione 2013 non ha la costante VBA7, quindi non riconosce il condizionante.
    Tuttavia se metti solo l'ultima dichiarazione dovrebbe andare.
    Cosa significa ora con solo quella riga "non funziona lo stesso"...?
    mi accetta l'ultima dichiarazione ma poi quando torno sulla maschera e clicco sul pulsante mi da questa schermata:
    Allegati:
    29201_1c878d90b39c3bc6b871791065eb45a0.png
    29201_1c878d90b39c3bc6b871791065eb45a0.png
  • Re: Come esportare PDF di una pagina filtrata

    Manca il PRIVATE in effetti... davanti al Declare
  • Re: Come esportare PDF di una pagina filtrata

    @Alex ha scritto:


    Manca il PRIVATE in effetti... davanti al Declare
    Grazie, con il private davanti funziona.
    ma comunque arriva al nono e si ferma
    non so perchè..
  • Re: Come esportare PDF di una pagina filtrata

    Mafra8 ha scritto:


    @Alex ha scritto:


    Manca il PRIVATE in effetti... davanti al Declare
    Grazie, con il private davanti funziona.
    ma comunque arriva al nono e si ferma
    non so perchè..
    Adesso devi imparare a capire cosa stai guardando...!
    Devi DEBUGGARE in autonomia altrimenti non ne andiamo fuori.
    Esempio, se segui il codice mettendo un BreakPoint e seguendo Passo-Passo con F8, puoi introdurre un
    
    Debug.Print Me.RecordsetClone.RecordCount appena dopo il controllo del RecordCount>0
    Nello specifico:
    
    If .RecordCount <> 0 Then
        Debug.Print "NUMERO RECORDS=" & .RecordCount
                'Open the Report
    Se apri la fiunestra Immediata in Esecuzione Codice(CTRL+G) troverai Stampato il NUMERO dei Records, partiamo dal verificare che quello che elabora il codice sia quello che ti aspetti... quindi con il Valore reale se >9 serve proseguire e capire perchè al 9° si blocca...
    Questa attività richiede METODO e conoscenza... cose che devi forzatamente acquisire perchè noi non abbiamo il tuo applicativo da testare.
Devi accedere o registrarti per scrivere nel forum
31 risposte