I have uploaded 9.4.5 pre-release into the beta directories for those with premium support and others who have access to this.

This version has many improvements to Reporting, Printing, Viewing and Emailing reports as well as email integration with SendGrid.

  • New ArticleView and articles.
    - See blog article at https://www.lianja.com/community/ent...-in-Lianja-9-4
  • New SendGrid integration for sending email.
    - signup for SendGrid at https://sendgrid.com
    - set your SendGrid API KEY in the SENDGRID_APIKEY environment variable.
    - set your SendGrid SENDGRID_SENDERIDENTITY environment variable
    - set your SendGrid SENDGRID_REPLYTO and SENDGRID_REPLYTONAME environment variable
    Lianja.sendmail(cTo, cFrom, cSubject, cBody [, cAttachments] )
    - cAttachments is a comma separated list of filenames
  • Improved Report printing and a new Report Viewer.
    - Design reports in the Report Builder.
    - See documentation at https://www.lianja.com/doc/index.php/Report_Builder
    - See blog article at https://www.lianja.com/community/ent...-in-Lianja-9-4
    Lianja.showReportViewer(cReportName [, cPrintArgs [, cTitle [, cFilter [, bCanFilter [,bCanEmail] ] ] ] ])
    - cFilter is a where condition e.g. “orderid=10428”
    - if bCanFilter is true then a “Filter” button allows use of the Query Builder to filter the records selected
    cReportName may be:
    - The name of a report designed in the Report Builder
    - The name of a .rsp, .pysp or .jssp file that will dynamically generate the HTML to be printed
    Lianja.previewReport(cReportName [, cPrintArgs [, cFilter] ] )
    Lianja.printReport(cReportName [, cPrintArgs [, lPreview[, cFilter]]] )
    Lianja.printFile(cPrinter, cFilename)
    Lianja.printHtml(cInput, cOutputfile, cPrintArgs)
    - cInput may be:
    — HTML text
    — The name of a .rsp, .pysp or .jssp file that will dynamically generate the HTML to be printed
    Lianja.printHtmlFile(cHtmlFile, cOutputfile, cPrintArgs)
    Lianja.emailReport(cName, cFilter, cEmailto, cEmailfrom, cSubject, cMessage)
    Lianja.exportReport(cName, cType, cOutputfilename, cFilter)
    Lianja.saveReportAsPdf(cName, cOutputfilename [, cFilter] ))
  • New the item() method on a Tree (TreeGrid in Canvas) now takes a third parameter which can be used to update the text in a specific row/column.
    otree = Lianja.get(“page1.section1.field1”)
    otree.clear()
    otree.addItems(“select * from southwind!orders”)
    otree.item(1, 1, “text”)
  • New Virtual Tables now handle NULL values. Specify the VT properties nulls=1 and nullifempty=1 to handle NULL values in MSSQL, MySQL and other third party databases.
  • Improved the getFile() method in the "networkrequest" class now handles reading of binary files.
    orequest = createObject("networkrequest")
    orequest.getFile("https://somedomain.com/somefile.png", "somefile.png", cUid, cPwd, lBinary)
  • Critical fixed an issue with SQL SELECT GROUP BY on joined tables
  • Improved the "New Form" menuitem in the "Develop" menu now provides the ability to select the scripting languuage for the form being created.
  • Minor UI improvements.
  • Bug fixes and performance improvements