durch http://www.oooforum.de/viewtopic.php?f= ... 2174d0c1c7 bin ich auf http://members.aon.at/schardinger/openoffice/index.html aufmerksam geworden.
Dort findet sich ein Codeschnipsel, mit dessen Hilfe Formulare via Makro aufgerufen werden können. Meine Abwandlung zum Aufruf eines Berichtes (mit SRB erstellt) ist die folgende:
Code: Alles auswählen
sub evCtl_OpenReport_Rechnungen
dim oController as object
oController = ThisDatabaseDocument.CurrentController
If ( Not oController.isConnected() ) Then
oController.connect()
End If
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.REPORT, "ber_1", FALSE ) 'FALSE non-Edit mode
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.REPORT, "ber_2", FALSE ) 'FALSE non-Edit mode
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.REPORT, "ber_3", FALSE ) 'FALSE non-Edit mode
end sub
Nicht sinnvoll ist ein Aufruf dann, wenn die Abfrage, auf welcher der Bericht beruht, kein Ergebnis liefert - also leer ist. Dies kann je nach Datenlage in den Basistabellen auftreten.
Wie muss ich also das folgende Codeschnipsel ändern:
Code: Alles auswählen
sub evCtl_OpenReport_Rechnungen
dim oController as object
oController = ThisDatabaseDocument.CurrentController
If ( Not oController.isConnected() ) Then
oController.connect()
End If
If (nicht leer <Abfrage_1-in-ber_1>) Then
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.REPORT, "ber_1", FALSE ) 'FALSE non-Edit mode
endif
If (nicht leer <Abfrage_2-in-ber_2>) Then
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.REPORT, "ber_2", FALSE ) 'FALSE non-Edit mode
endif
If (nicht leer <Abfrage_3-in-ber_3>) Then
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.REPORT, "ber_3", FALSE ) 'FALSE non-Edit mode
endif
end sub
Vielen Dank im voraus.
HPott