SQL Statement beim Öffnen eines Berichts übergeben

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
hinki
**
Beiträge: 27
Registriert: So, 31.10.2010 06:45

SQL Statement beim Öffnen eines Berichts übergeben

Beitrag von hinki »

Hallo,

nach einigen tollen Fortschritten mit Hilfe dieses Forums bin ich mit meiner Datenbank jetzt im Reich der Berichte angekommen.

Hierfür erst einmal vielen Dank.

Jetzt aber, im Bereich der Berichte, stehe ich auch nach tagelangem Suchen vor einer Frage, die ich nicht beantworten (sprich:lösen) kann.

Ausgangssituation:

Ich habe ein Formular mit zwei Unterformularen (Kunden, Aufträge, Einzelposten der Aufträge). Dieses Formular funktioniert genau so, wie ich mir das vorstelle. Das Ergebnis dieses Formulars habe ich mit einer Abfrage nachgebaut, welche zur Zeit alle Einzelposten aller Aufträge alle Kunden darstellt.
So weit ist alles gut und wunderbar.

Mein Bericht bezieht sich auf diese Abfrage und ich bekomme, wen wundert es, alle Einzelposten, aller Aufträge, aller Kunden. Das ist nicht das, was ich haben wollte.

Lösungsversuch

Da ich diesen Bericht per Makro öffne/aufrufe, habe ich versucht der zugrunde liegenden Abfrage Parameter in Form von Variablen mitzugeben, was aber scheinbar wirkungslos ist.

Hier der Makrocode:

Code: Alles auswählen

Sub Rechnung_Stellung

'Aufgabe ist es aus dem Formular 'Abfrage_Rech_Kunde' die ausgewählte Ticket ID einer Variablen zuzuweisen.
'Mit dieser Variablen die Abfrage 'Abfrage_Rech_einzel' aufzurufen und den Bericht 'Abfrage_Rech_all' aufzurufen

oDoc = thisComponent
   oDrawPage = oDoc.Drawpage
   oForm = oDrawPage.Forms 'im Formular Abfrage_Rech_Kunde...
      oGrid = oForm.getByName("MainForm").getByName("TickForm").getByName("MainForm_Grid") '....das Grid auswählen
      
      oFeld = oGrid.getByName("Ticket_ID") 'Das Feld Ticket_ID auswählen
      sTick = oFeld.getCurrentValue 'Inhalt von Ticket_ID der Variablen sTick zuordnen
      
      MsgBox "Daten gleich " + sTick 'Kontrolle durch MsgBox
      
      
       RowSet = createUnoService("com.sun.star.sdb.RowSet")
    RowSet.DataSourceName = "Tickets"
    RowSet.CommandType = com.sun.star.sdb.CommandType.COMMAND
    'Aus der Abfrage 'Abfrage_Rech_einzel' mit der Variablen sTick separieren
    RowSet.Command = "SELECT (""Ticket_ID"") FROM ""Abfrage_Rech_einzel"" WHERE ""Ticket_ID"" = "& sTick &""
    RowSet.execute()
      
' Bericht öfnnen, der auf Abfrage_Rech_einzel basiert      
   
   Dim oDatenbankKontext AS Object, oDatenquelle As Object, oReportDoc As Object, oVerbindung As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue

oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "Tickets" )
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("Abfrage_Rech_all","_blank",0,Args)
oReportDoc.CurrentController.Frame.ContainerWindow.setFocus()
Fehler:
     

End Sub
Frage

Wie bekomme ich es hin den Bericht mit den Daten eines Auftrags zu füllen? Ist es machbar dem Bericht beim Aufruf ein passendes SQL-Statement mitzugeben?


Vielen Dank schon mal für all Eure Mühen.
NeoOffice 3.1.2 Patch 2 auf MacBookPro (OS 10.6.6)

If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.
Harold Kroto
_Alain_
*
Beiträge: 11
Registriert: Sa, 08.09.2007 14:10

Re: SQL Statement beim Öffnen eines Berichts übergeben

Beitrag von _Alain_ »

Hallo Hinki

Stelle mir prinzipiell genau die gleiche Frage. Leider bin ich nicht so bewandert mit Macrocode.

Hast du schon eine Lösung gefunden ?

Mein Lösungsansatz ist einfach in eine Tabelle die ID des aktuellen Datensatzes zu schreiben und die Abfrage entsprechend diesem Wert dieser Tabelle zu erstellen.
Aber ich hab keine Ahnung wie ich Base dazu bringe den Wert der ID in eine Tabelle zu schreiben.
Die Formulare verknüpfen geht auch nicht, zwar wird der Wert der ID in der Tabelle angezeigt aber nicht wirklich gespeichert.


Gruss Alain
_Alain_
*
Beiträge: 11
Registriert: Sa, 08.09.2007 14:10

Re: SQL Statement beim Öffnen eines Berichts übergeben

Beitrag von _Alain_ »

Hab mich jetzt mal einwenig mit Codebeispiel aus dem englischen Forum befasst.
Siehe hier: http://user.services.openoffice.org/en/ ... 73&start=0

Ich glaube die Lösung ist nicht schlecht, hoffe nur dass ich das auch auf meine Datenbank adaptieren kann :-)


Gruss Alain
_Alain_
*
Beiträge: 11
Registriert: Sa, 08.09.2007 14:10

Re: SQL Statement beim Öffnen eines Berichts übergeben

Beitrag von _Alain_ »

Cool, die Lösung hat funktioniert :-)
Antworten