Page 1 of 1
[Solved] Open Base Report from Writer
Posted: Thu Mar 26, 2015 12:35 pm
by fuzzyluzzi
I've seen this code for opening a report. It works well if run directly from the database. How would I change it to use an active connection with a registered Database from a Writer document.
Thanks
Code: Select all
Sub OpenMyReport(oEvent As Object)
Dim RptName as string
RptName = "Date Query"
'the name of the report I want to open
ThisDatabaseDocument.ReportDocuments.getByName(RptName).open
End Sub
Re: Open Base Report from Writer
Posted: Thu Mar 26, 2015 4:06 pm
by Villeroy
The following code has mostly been recorded using the MRI object inspection tool.
[Tutorial] Introduction into object inspection with MRI
The code can open any report from any form control that is attached to any form connected to any data source. Just add the name of your report to the form control's "Additional Info". In your particular case you set "Date Query" (without quotes) as "Additional Info" of your push button.
Code: Select all
Sub OpenReportByTag(oInitialTarget As Object)
Dim oSource As Variant
Dim oModel As Variant
Dim oParent As Variant
Dim oActiveConnection As Variant
Dim oParent2 As Variant
Dim oDatabaseDocument As Variant
Dim oReportDocuments As Variant
Dim sRepName, oReport
oSource = oInitialTarget.Source
oModel = oSource.getModel()
sRepName = oModel.Tag
oParent = oModel.getParent()
oActiveConnection = oParent.ActiveConnection
oParent2 = oActiveConnection.getParent()
oDatabaseDocument = oParent2.DatabaseDocument
oReportDocuments = oDatabaseDocument.getReportDocuments()
oReport = oReportDocuments.getByName(sRepName)
oReport.open()
End Sub
So far this code finds the correct database document and the correct report document therein. It does even open the requested report but it won't be filled with data unless I have visible instance of that database with its own active connection (one click on the tables section connects the database). The form's connection is not able to fill the report. This is beyond me. I don't have the time to get behind this. I'm happy with my Calc reports that work out of the box. These things used to work so much better in OpenOffice 1.x when there were no Base documents and all forms and reports were stand-alone Writer documents.
Re: Open Base Report from Writer
Posted: Fri Mar 27, 2015 6:38 am
by fuzzyluzzi
so because there is no active connection, which is the error I get, I cannot run this report from anywhere but the actual database file. lame.
Re: Open Base Report from Writer
Posted: Sat Mar 28, 2015 4:09 pm
by Villeroy
I'm 90% sure it can be done but I don't have the time nor patience to find out how.
Re: Open Base Report from Writer
Posted: Sat Mar 28, 2015 9:02 pm
by F3K Total
Villeroy wrote:I'm 90% sure ...
now you can be 100% sure ...
Code: Select all
Sub OpenReportByTag(Event As Object)
Dim oParms(0) As New com.sun.star.beans.PropertyValue
oButton = Event.Source.Model
sRepName = oButton.tag
oParent = oButton.Parent
oActiveConnection = oParent.ActiveConnection
oDatabaseDocument = oActiveConnection.Parent.DatabaseDocument
oReportDocuments = oDatabaseDocument.ReportDocuments
oParms(0).name = "ActiveConnection"
oParms(0).value = oActiveConnection
ocomponent = oReportDocuments.loadComponentFromURL(sRepName, "", 0, oParms())
End Sub
R
Re: Open Base Report from Writer
Posted: Sat Mar 28, 2015 10:36 pm
by Villeroy
Thank you. How could I find out that "ActiveConnection" can be used as a property argument to loadComponentFromURL?
Re: Open Base Report from Writer
Posted: Sat Mar 28, 2015 11:15 pm
by F3K Total
here? (details)
... but i just copied the code from somewhere else ...
R
Re: [Solved] Open Base Report from Writer
Posted: Mon Mar 30, 2015 10:35 am
by fuzzyluzzi
Thanks. That opened it perfectly. Would it be possible to modify this macro to automatically save/export the report or should I do that from inside the report?
Re: [Solved] Open Base Report from Writer
Posted: Mon Mar 30, 2015 12:18 pm
by Villeroy
It's a Writer document. Click the PDF button on the standard toolbar.