Einen Bericht ueber ein makro oeffnen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Vegaerion
Beiträge: 2
Registriert: So, 05.10.2008 16:43
Wohnort: NRW

Einen Bericht ueber ein makro oeffnen

Beitrag 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 ^^
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Einen Bericht ueber ein makro oeffnen

Beitrag 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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vegaerion
Beiträge: 2
Registriert: So, 05.10.2008 16:43
Wohnort: NRW

Re: Einen Bericht ueber ein makro oeffnen

Beitrag 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
______________________________________________________________________________________________________
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Einen Bericht ueber ein makro oeffnen

Beitrag 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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Antworten