korzystam z poniższego makra, zresztą zapożyczonego chyba z jednej z przykładowych baz kolegi belstar. Makro pobiera z formularza konkretne dane i tworzy raport o konkretnym rekordzie. Makro działa super, ale zamarzyło mi się żeby robiło troszkę więcej. Chciałbym aby generowany raport (plik writera) przyjmował nazwę taką samą jak pobiera aby przefiltrować raport, czyli w poniższym przykładzie "txtnumer_zamowienia"
Kod: Zaznacz cały
Sub ReportStart4(oEvent As Object)
On Error Goto ErrorHandler
Dim oPrzycisk As Object
Dim oPolaczenie As Object
Dim oRaport As Object
Dim oFormModel As Object
Dim FormController As Object
Dim oAktualnaKontrolka As Object
Dim oAktualnyRek As Object
oPrzycisk = oEvent.source.model
If oPrzycisk.FocusOnClick = true Then
oPrzycisk.FocusOnClick = false
End If
oFormModel = oPrzycisk.parent
oFormController = thiscomponent.currentcontroller.getFormController(oFormModel)
frm = ThisComponent.Drawpage.Forms.Formularz
oAktualnaKontrolka = frm.getbyname("subform")
oAktualnyRek = oAktualnaKontrolka.getByName("txtnumer_zamowienia")
oPolaczenie = oFormModel.Activeconnection
oRaport = oPolaczenie.parent.DatabaseDocument.ReportDocuments
If oRaport.hasByHierarchicalName("wz_ogolne") Then
openReport4(oPolaczenie, oRaport, "wz_ogolne" , ( "zamowienia.numer_zamowienia =" & "'" & oAktualnyRek.text & "'" ))
Else
print "Nie ma takiego raportu"
End If
ErrorHandler:
End SUB
Function openReport4(oConnection, oReportsDocuments, aReportName, sFilter) As Object
Dim aProp(2) as new com.sun.star.beans.PropertyValue
Dim oReportDesign
aProp(1).Name = "ActiveConnection"
aProp(1).Value = oConnection
aProp(0).Name = "Hidden"
aProp(0).Value = true
aProp(2).Name = "OpenMode"
aProp(2).Value = "openDesign"
'Otwarcie raportu w widoku projektu
oReportDesign = oReportsDocuments.loadComponentFromURL(aReportName ,"", 0, aProp())
'Wpisanie nowego filtra
oReportDesign.filter = sFilter
aProp(0).Value = false
aProp(2).Value = "open"
'Przełączenie raportu z widoku project na normalny
'poniżej występuje wyjątek
openReport4 = oReportsDocuments.loadComponentFromURL(aReportName ,"", 23, aProp())
End function
znam BASICa jedynie na tyle aby "pożyczyć" jakieś makro i zmodyfikować je pod siebie. Próbowałem pytać na forum angielskim openoffica, dowiedziałem się jedynie że trzeba tu coś kombinować z funkcją SetTitle. Wątek skończył się:
Szukam w internecie czegoś o SetTitle, próbuje wykorzystać podaną wskazówkę, ale nic nie wychodzi. Czy ktoś może ma taką wiedzę, aby coś więcej podpowiedzieć? Może ktoś kiedyś zrobił podobną rzecz i się udało?The function openreport returns an object to the report just generated. This is an object and can be used for other things in this case: set the name of a frame.
openReport("Place here the parameters for the function").currentcontroller.frame.settitle("raport_name")