Uitvoer kan je eenvoudig doen in html-bestanden, die je lokaal schrijft en opent met een browser.
Daarvoor moeten we een bestand openen (een nieuw bestand maken) om in te schrijven, tekst naar het bestand schrijven, en het bestand sluiten.
Maak een module met alle printonderdelen, en met bovenaan
PUBLIC bToPrint AS Boolean
‘
PRIVATE hFile AS File
schrijf een bestand
OPEN sFilename FOR WRITE CREATE AS #hFile
pushHeader(bToPrint)
dat je begint met een kop die zo gemaakt wordt:
( de < en > tekens moeten natuurlijk aansluiten zonder spaties in je code)
PUBLIC SUB pushHeader(bToPrinter AS Boolean)
'
PRINT #hFile, " < html > "
PRINT #hFile, " < head > < title > " & Application.Name & " - by " & User.Name & " < /title > < /head > "
PRINT #hFile, " < body topmargin='0' leftmargin='0' fontsize='1'"
'
IF (bToPrinter) THEN
DEBUG "To printer ..."
PRINT #hFile, " onload='window.print()'"
' only works when java is on
ENDIF
'
PRINT #hFile, " > "
'
END
Daarna stuur je alle gegevenslijnen, eventueel in de vorm van een tabel, en sluit je het af met een “footer”
PUBLIC SUB pushFooter()
'
PRINT #hFile, " < br > < font size='1' > " & "FACS " & Application.Version
PRINT #hFile, " < i > via " & MCommon.sReportDir & " "
PRINT #hFile, "by " & User.Name & "." & System.Host & " at " & CStr(Date(Now())) & " - " & Left$(CStr(Time(Now())), 5)
PRINT #hFile, " < /i > "
PRINT #hFile, " < /font > "
PRINT #hFile, " < /body > "
PRINT #hFile, " < /html > "
'
END
Bestand afsluiten met CLOSE na het vullen:
…
pushTableHeadwSub(sTitle, arrColNames, sSql, arrColTotals)
pushTableLines(resCostcode, arrColTotals)
pushTableFooter()
pushFooter()
‘
CLOSE #hFile
Als de volledige bestandsnaam met het volledige pad in de variabele sFilename zit, bv:
sFilename = “/home/mijnnaam/Documents/ToPrint/test.html”
dan kan je de pagina openen in een browser:
EXEC ["konqueror", sFilename]
EXEC ["firefox", sFilename]
(dit is in de KDE omgeving uitgevoerd – Gnome heeft bv geen konqueror standaard geïnstalleerd)