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
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.