Seite 1 von 1

Einen Bericht ueber ein makro oeffnen

Verfasst: Do, 29.01.2009 23:30
von Vegaerion
Hallo

das Forum ist echt super und hat mir schon das eine und andere mal geholfen.

Aber nun hab ich eine Frage wo ich nicht weite komme weil mir das Makro wissen fehlt.

Ich will über ein Button in einem Formular einen vorhanden und der der Datenbank gespeichert Bericht öffnen.

Folgendes ist gegeben:
Datenbankname: Buecherei_DB
Formularname: 4._Abfrageverwaltung
Berichtname: Ausleihe_groesser_35Tage

Bedanke mich jetzt schon einmal für eure Hilfe und macht weiter so in diesem Forum ^^

Re: Einen Bericht ueber ein makro oeffnen

Verfasst: Fr, 30.01.2009 11:55
von eBayer
Hallo, bin auch noch relativ frisch bei OO.....
Aber meine Berichte erstelle ich im Regelfall aus einem Formular heraus.
Habe einen PushButton mit dem Aufruf des Berichte belegt und das klappt super.
Der Einfachheit halber kopiere ich mal ein passendes Macro hier hinein... Einfach den PushButton damit verbinden und fertig. Natürlich muß das Macro vorher in Deinem Sinn angepasst werden.
----------------------------------------------------------------------------------
Sub DruckListe
Dim oDatenbankKontext AS Object
Dim oVerbindung As Object
Dim oDatenquelle As Object
Dim oReportDoc As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue

oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "DeineDatenbank" )
oVerbindung = oDatenquelle.getConnection( "" , "" )

Args(0).Name="ActiveConnection" : Args(0).Value=oVerbindung
Args(1).Name="OpenMode" : Args(1).Value="open"
on Error goto Fehler oReportDoc=oDatenquelle.DatabaseDocument.ReportDocuments.loadComponentFromURL("DeineListe","_self",2,Args)
oReportDoc.CurrentController.Frame.ContainerWindow.setFocus()
Fehler:
oVerbindung.close() ' immer daran denken, die Verbindung zu schließen!!
oVerbindung.dispose() ' und vorsichtshalber zu zerstören
End Sub
----------------------------------------------------------------------------------

Ich hoffe, das hilft Dir
Gruß eBayer

Re: Einen Bericht ueber ein makro oeffnen

Verfasst: Fr, 30.01.2009 13:08
von Vegaerion
Hallo

bessten dank für deine schnelle Hilfe eBayer, dass Makro passt zwar nicht ganz aber konnte auf Basis deines Makro´s eins für meine Zecke machen ^^



Hier die Lösung wenn auch einer mal das Problem hat, damit kann man sich dann den Bericht anschauen und wenn man mag auch Ausdrucken oder es lassen.
______________________________________________________________________________________________________

Sub Open_Report
Dim oDatenbankKontext AS Object
Dim oVerbindung As Object
Dim oDatenquelle As Object
Dim oReportDoc As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue

oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName("DB_Name")
oVerbindung = oDatenquelle.getConnection( "" , "" )

Args(0).Name="ActiveConnection" : Args(0).Value=oVerbindung
Args(1).Name="OpenMode" : Args(1).Value="open"
oReportDoc=oDatenquelle.DatabaseDocument.ReportDocuments.loadComponentFromURL("Bericht_Name","_self",2,Args)
oReportDoc.CurrentController.Frame.ContainerWindow.setFocus()

End Sub
______________________________________________________________________________________________________

Re: Einen Bericht ueber ein makro oeffnen

Verfasst: Fr, 30.01.2009 15:43
von eBayer
Hallo Vega,
das freut mich....... aber tu Dir selber einen Gefallen und schließe die Verbindung wieder.
.... Einfach das Macro um das folgende Statement erweitern (vor End Sub)

oVerbindung.close() ' immer daran denken, die Verbindung zu schließen!!

Wenn Du das nicht tust, kann es Dir passieren, daß Du Probleme mit der Datenbank bekommst und evtl. sogar Daten verlierst.
Du wirst sicher schon festgestellt haben, daß bei geöffneter Datenbank eine Datei mit dem Namen der Datenbank und der Extension ".lck" im Verzeichnis Deiner Datenbank steht. Wenn die DB ordnungsgemäß geschlossen ist, verschwindet die ".lck"-Datei wieder..... Dann ist alles in Ordnung. In Deinem Fall (ohne die Verbindung zu schließen) wird die ".lck" vermutlich immer stehenbleiben, was bedutet, daß Deine Anwendung noch immer aktiv ist. Kannst es leicht prüfen indem Du dann mal versuchst, die Datenbank zu renamen.
Weiter viel Spaß bei der Arbeit
eBayer