Report da esportare per Web in unica schermata

di il
8 risposte

Report da esportare per Web in unica schermata

Se apro un report in Visualizzazione report mi appare lungo in una sola videata (scorrevole). Vorrei esportarlo così come lo vedo in un formato compatibile per il web. Questo articolo untitled dice che esportando in html, per i report risulta impossibile in una sola unica schermata, che devo optare per esportare la query sottostante.
Devo arrendermi? C'è una soluzione alternativa?

8 Risposte

  • Re: Report da esportare per Web in unica schermata

    Ciao,

    o esponi in html una query al posto del report e in questo caso hai una esposizione scorrevole comedicitu

    o dal report esporti in pdf e poi lo passi come documento alla pagina web

    o crei il report direttamente in html. In questo caso basta conoscere il linguaggio html per impostare le fields formattate e posizionate come faresti nel report.
    In pratica crei direttamente un file html con la stessa struttura che hai impostato nel report e te la gestisci a tuo piacimento.

    Invece per il report vale la documentazione che hai postato, ovviamente se fai quel tipo di export verranno rispettate le regole di formattazione dei report. Quindi avrai tante pagine html tante quante sono le pagine del report. 

    Nel caso tu voglia scrivere in vba direttamente in html, se ci pensi bene per agevolarti il lavoro, puoi prendere spunto dai file html che vengono creati dall'export del report. Fai molto prima a scrivere il codice.

  • Re: Report da esportare per Web in unica schermata

    Pare che la trasformazione sia riferita alla/alle singola/e pagina/e. crea un html per ogni pagina.

    alternative? essendo un html, quindi di tipo statico, puoi esportare il report in pdf e mostrare l'html con il pdf del report.

    https://pdf.wondershare.it/how-to/embed-pdf-in-html.html

    considera che qualunque soluzione in html sarà sempre statica. 

    ogni volta devi creare il report e pubblicarlo in html ma puoi sempre mantenere sempre lo stesso nome del file sovrascrivendo quello esistente ma non vedrai l'aggiornamento finchè non ricarichi la pagina.

  • Re: Report da esportare per Web in unica schermata

    Franco mi hai anticipato...

  • Re: Report da esportare per Web in unica schermata

    03/04/2025 - sihsandrea ha scritto:

    Franco mi hai anticipato...

    Ciao... capita....  ;-)

    Personalmente, per conservare eventuali automatismi delprogetto, etc etc.. , io adotterei lascrittura dell'html da codice vba ... molto semplice e veloce.
    Alla fine basta aprire e leggere il recordset che viene passato al report e posizionare e formattare i vari campi come nel report. 
    Una Open , una While e scrvi direttamente il file Html.  (molto molto semplice)

    Oppure si exporta il report in Html, si prendono gli enne file html che ha generato ed eliminando le intestazioni e piè di report in eccesso si fa la join dei file per ottenere un solo file html. Anche questo si può fare direttamente da codice Vba automatizzando il tutto.

  • Re: Report da esportare per Web in unica schermata

    03/04/2025 - By65Franco ha scritto:

    dal report esporti in pdf e poi lo passi come documento alla pagina web

    Questa soluzione l'ho trovata valida per report lunghissimi, il fatto che vedo i numeri pagina e le intestazioni ripetute, alla fin fine agevola la lettura di chi scorre. Molto comodo lo scorrimento barra laterale (interno). Valido per cataloghi.
    Una soluzione di compromesso (alla mia portata) sarebbe, diciamo per report minori di 10 pagine, eliminare il piè di pagina e la ripetizione delle intestazioni. In questo modo ottengo un risultato relativamente simile a ciò che avrei voluto...poco disturba l'occhio il salto di pagina... Valido per elencazioni di eventi annuali, liste soci annuali (per quest'ultimo va anche bene la query direttamente).

    Vi ringrazio, alla fine penso che ripiegherò su questa/e soluzione/i.

  • Re: Report da esportare per Web in unica schermata

    03/04/2025 - OsvaldoLaviosa ha scritto:

    03/04/2025 - By65Franco ha scritto:

    dal report esporti in pdf e poi lo passi come documento alla pagina web

    Questa soluzione l'ho trovata valida per report lunghissimi, il fatto che vedo i numeri pagina e le intestazioni ripetute, alla fin fine agevola la lettura di chi scorre. Molto comodo lo scorrimento barra laterale (interno). Valido per cataloghi.
    Una soluzione di compromesso (alla mia portata) sarebbe, diciamo per report minori di 10 pagine, eliminare il piè di pagina e la ripetizione delle intestazioni. In questo modo ottengo un risultato relativamente simile a ciò che avrei voluto...poco disturba l'occhio il salto di pagina... Valido per elencazioni di eventi annuali, liste soci annuali (per quest'ultimo va anche bene la query direttamente).

    Vi ringrazio, alla fine penso che ripiegherò su questa/e soluzione/i.

    L'altra alternativa è PHP eti costruisci il report senza passare da access. Non so se è intranet collegandoti al PC web server o su host. 

    Nel secondo caso esporti le tabelle e sempre con pho ti crei il report. In questo caso puoi anche decidere in base al login cosa mostrare (non sarebbe statico ma dinamico). In effetti il futuro è smart non più PC.

    P.s. anche il lavoro è diventato smart.

  • Re: Report da esportare per Web in unica schermata

    03/04/2025 - sihsandrea ha scritto:

    L'altra alternativa è PHP eti costruisci il report senza passare da access. Non so se è intranet collegandoti al PC web server o su host. 

    Si si si ... molto carino! e poi dinamico. 

    Io avrei preparato una sorta di demo per scrivere direttamente in vba il file html... me piace come solution ;-))
    ... fatto tanto per passare il tempo, quindi chiedo venia per eventuali imprecisioni.. ;-)

    Esempio, poniamo di avere una Query e un Report.
    Si prende il recordset che alimenta il report , in questo caso la Query.

    Poi si prende il Vba e si scrive il file Html.
    Questo il codice di esempio molto molto semplice:

    Sub ExportToHTMLVr2()
        Dim db As Database
        Dim rs As Recordset
        Dim htmlFile As Integer
        Dim filePath As String
        
        ' Set fullpath html file
        filePath = "C:\Document\xxxxxxxxxx\Query_File.html"
        ' Create file html
        htmlFile = FreeFile
        Open filePath For Output As htmlFile
        
        ' Initialize html and css style
        Print #htmlFile, "<HTML><HEAD><META HTTP-EQUIV=""Content-Type"" CONTENT=""text/html;charset=windows-1252"">"
        Print #htmlFile, "<TITLE>ReportTbl_Demo</TITLE>"
        Print #htmlFile, "<STYLE>"
        Print #htmlFile, "BODY {font-family: 'Franklin Gothic Book', sans-serif; font-size: 11pt; color: #404040; text-align: center;} "
        Print #htmlFile, "TABLE {border-collapse: collapse; width: 50%; max-width: 900px; margin: 0 auto;}"
        Print #htmlFile, "TD, TH {border: 1px solid #ccc; padding: 5px 10px; text-align: left;}"
        Print #htmlFile, "TH {background-color: #f2f2f2; font-weight: bold; color: blue;}"
        Print #htmlFile, "TR:nth-child(even) {background-color: #f9f9f9;}"
        Print #htmlFile, "TD.right-align, TH.right-align {text-align: right;}"
        Print #htmlFile, "H1 {font-size: 16pt; font-weight: bold; color: #2C3E50; text-align: center; padding-bottom: 2px;}"
        Print #htmlFile, "</STYLE>"
        Print #htmlFile, "</HEAD><BODY>"
        ' Add title
        Print #htmlFile, "<H1>Demo Report" & "&nbsp;&nbsp;&nbsp;&nbsp;" & Date & "</H1>"
        ' Add columns of the table
        Print #htmlFile, "<TABLE>"
        Print #htmlFile, "<TR>"
        Print #htmlFile, "<TH WIDTH='225'>Name</TH>"
        Print #htmlFile, "<TH WIDTH='225'>City</TH>"
        Print #htmlFile, "<TH WIDTH='100' class='right-align'>Double Nr</TH>"
        Print #htmlFile, "<TH WIDTH='100' class='right-align'>Date</TH>"
        Print #htmlFile, "<TH WIDTH='70'  class='right-align'>Flag</TH>"
        Print #htmlFile, "</TR>"
        
        ' Open recordset
        Set db = CurrentDb
        Set rs = db.OpenRecordset("QueryTbl_Demo", dbOpenSnapshot)
        ' Read and write
        Do While Not rs.EOF
            ' Populate all cells
            Print #htmlFile, "<TR>"
            Print #htmlFile, "<TD WIDTH='225'>" & rs.Fields("DemoTxt").Value & "</TD>"
            Print #htmlFile, "<TD WIDTH='225'>" & rs.Fields("DemoMemo").Value & "</TD>"
            Print #htmlFile, "<TD WIDTH='100' class='right-align'>" & rs.Fields("DemoDbl").Value & "</TD>"
            Print #htmlFile, "<TD WIDTH='100' class='right-align'>" & Format(rs.Fields("DemoDate").Value, "DD/MM/YYYY") & "</TD>"
            Print #htmlFile, "<TD WIDTH='70' class='right-align'>" & IIf(rs.Fields("DemoBln").Value = True, _
                             "<span style='color:#2ECC71'>&#10004;</span>", "&#10006;") & "</TD>"
            Print #htmlFile, "</TR>"
            ' Move record next
            rs.MoveNext
        Loop
        
        ' Close body and html
        Print #htmlFile, "</TABLE></BODY></HTML>"
        ' Close file html
        Close htmlFile
        ' Close recordset
        rs.Close
        Set rs = Nothing
        Set db = Nothing
        
        ' Message end
        MsgBox "HTML completed export"
    End Sub
    

    ... e si ottiene il nostro Html :

    Ecco l'elenco che si scorre come un unica pagina
    (penso  che intendevi ottenere tale effetto) 

    .... detail   ;-)

    Molto semplice e veloce .... a proprio piacimento si imposta lo stile e la formattazione che si desidera, proprio come si fa nel designer per il report.

    Ovviamente, in questo caso, non ti serve più creare il report, ti basta una Query o una Sql string con le Select, join, Where, Order By,etc etc.... e puoi fare tutto da Vba.

    Se ti vuoi divertire OsvaldoLaviosa, con questa piccola demo, una base adesso ce l'hai...  male non fa...  ...prova a provare  ;-)  

  • Re: Report da esportare per Web in unica schermata

    Ciao OsvaldoLaviosa,

    rimetto una versione aggiornata dove sono presenti alcuni controlli che rendono più fruibile la funzione

    Sarà sufficiente implementare tali metodi al fine di ottenere maggiori controlli e stabilità:

    1. Ottimizzazione scrittura del file html
    2. Intercettazione di un qualsiasi imponderabile errore con On Error
    3. Funzione per normalizzare l'eventuale presenza di caratteri speciali nelle stringhe e dannosi per l'interprete html
    4. Funzione di formattazione per rappresentare le colonne numeriche 

    .
    Questo solo uno spunto di come meglio organizzare e ottimizzare il proprio codice:

    ' EXPORT TO HTML with error handling
    Sub ExportToHTMLVr3()
        On Error GoTo ErrorHandler
        Dim db As Database
        Dim rs As Recordset
        Dim htmlFile As Integer
        Dim filePath As String
        Dim fs As Object
        
        ' Set fullpath html file
        filePath = "C:\xxxxxxxxxx\Query_File.html"
        ' Create file html
        htmlFile = FreeFile
        Open filePath For Output As htmlFile
        
        ' Initialize html and css style
        Print #htmlFile, "<HTML><HEAD><META HTTP-EQUIV=""Content-Type"" CONTENT=""text/html;charset=windows-1252"">"
        Print #htmlFile, "<TITLE>ReportTbl_Demo</TITLE>"
        Print #htmlFile, "<STYLE>"
        Print #htmlFile, "BODY {font-family: 'Franklin Gothic Book', sans-serif; font-size: 11pt; color: #404040; text-align: center;} "
        Print #htmlFile, "TABLE {border-collapse: collapse; width: 50%; max-width: 900px; margin: 0 auto;}"
        Print #htmlFile, "TD, TH {border: 1px solid #ccc; padding: 5px 10px; text-align: left; font-size: 12pt; font-family: Arial, sans-serif;}"
        Print #htmlFile, "TH {background-color: #f2f2f2; font-weight: bold; color: blue;}"
        Print #htmlFile, "TR:nth-child(even) {background-color: #f9f9f9;}"
        Print #htmlFile, "TD.right-align, TH.right-align {text-align: right;}"
        Print #htmlFile, "H1 {font-size: 16pt; font-weight: bold; color: #2C3E50; text-align: center; padding-bottom: 2px;}"
        Print #htmlFile, "</STYLE>"
        Print #htmlFile, "</HEAD><BODY>"
        ' Add title
        Print #htmlFile, "<H1>Demo Report" & "&nbsp;&nbsp;&nbsp;&nbsp;" & Date & "</H1>"
        ' Add columns of the table
        Print #htmlFile, "<TABLE><TR>" & _
                         "<TH WIDTH='225'>Name</TH>" & _
                         "<TH WIDTH='225'>City</TH>" & _
                         "<TH WIDTH='100' class='right-align'>Double Nr</TH>" & _
                         "<TH WIDTH='100' class='right-align'>Date</TH>" & _
                         "<TH WIDTH='70'  class='right-align'>Flag</TH>" & _
                         "</TR>"
        ' Open recordset
        Set db = CurrentDb
        Set rs = db.OpenRecordset("QueryTbl_Demo", dbOpenSnapshot)
        ' Read recordset and write html detail
        Do While Not rs.EOF
            Print #htmlFile, "<TR>" & _
                             "<TD WIDTH='225'>" & MyHNString(rs.Fields("DemoTxt").Value) & "</TD>" & _
                             "<TD WIDTH='225'>" & MyHNString(rs.Fields("DemoMemo").Value) & "</TD>" & _
                             "<TD WIDTH='100' class='right-align'>" & MyHNNumber(rs.Fields("DemoDbl").Value) & "</TD>" & _
                             "<TD WIDTH='100' class='right-align'>" & Format(rs.Fields("DemoDate").Value, "DD/MM/YYYY") & "</TD>" & _
                             "<TD WIDTH='70' class='right-align'>" & IIf(rs.Fields("DemoBln").Value = True, _
                             "<span style='color:#2ECC71'>&#10004;</span>", "<span style='color:#FF0000'>&#10006;</span>") & "</TD>" & _
                             "</TR>"
            ' Move record next
            rs.MoveNext
        Loop
        
        ' Close body and html
        Print #htmlFile, "</TABLE></BODY></HTML>"
        ' Close file html
        Close htmlFile
        ' Close recordset and cleanup
        rs.Close
        Set rs = Nothing
        Set db = Nothing
    
        ' Check if file exists and show message
        Set fs = CreateObject("Scripting.FileSystemObject")
        If fs.FileExists(filePath) Then MsgBox "HTML completed export", vbInformation Else MsgBox "HTML Export: ERROR", vbCritical
        Set fs = Nothing
        ' Exit
        Exit Sub
    
    ' Error handler
    ErrorHandler:
        ' Message show
        MsgBox "An error occurred: " & Err.Description, vbCritical, "Error " & Err.Number
        On Error Resume Next
        If Not rs Is Nothing Then If rs.RecordCount > 0 Then rs.Close
        Close htmlFile
        Set rs = Nothing
        Set db = Nothing
        Set fs = Nothing
    End Sub
    
    
    ' NORMALIZE STRING HTML SPECIAL CHAR
    Function MyHNString(str As String) As String
        If IsNull(str) Then str = ""
        str = Replace(str, vbCrLf, " ")
        str = Replace(str, vbCr, " ")
        str = Replace(str, vbLf, " ")
        str = Replace(str, "&", "&amp;")
        str = Replace(str, "<", "&lt;")
        str = Replace(str, ">", "&gt;")
        str = Replace(str, """", "&quot;")
        str = Replace(str, "'", "&apos;")
        str = Replace(str, "©", "&copy;")
        str = Replace(str, "®", "&reg;")
        str = Replace(str, "€", "&euro;")
        ' Return the normalized string
        MyHNString = str
    End Function
    
    
    ' NORMALIZE AND FORMAT NUMBERS
    Function MyHNNumber(v As Variant, Optional formatString As String = "#,##0.00") As String
        If IsNumeric(v) Then MyHNNumber = Format(v, formatString) Else MyHNNumber = ""
    End Function
Devi accedere o registrarti per scrivere nel forum
8 risposte