[gelöst]BASE: Bericht aus Formular raus öffnen
Moderator: Moderatoren
[gelöst]BASE: Bericht aus Formular raus öffnen
Hi,
Ich habe eine Datenbank gebastelt, betehend aus
3 Tabellen
2 Abfragen
1 Formular mit einem Unterformular (verbunden mit einer Kundennummer)
1 Bericht
Alle Teile alleine funktionieren wunderbar.
Jetzt möchte ich den Bericht aus dem Formular heraus öffnen, dass ist auch kein Problem.
Das Problem besteht darin, dass immer der erste Datensatz im Bericht angezeigt wird und
nicht der des aktuellen aus dem Formular.
Wie bekomme ich es hin, dass übergeben wird welcher Datensatz im Bericht angezeigt wird.
Mit hilfe von Makros wahrscheinlich, aber wie habe leider keine Ahnung von Makros.
Das Ganze soll später mal daruf hinaus dass der Bericht direkt gedruckt werden soll.
Ich verwende:
OpenOffice 3.1 und Windows XP SP3
Brauche dringend Hilfe.
Gruß chairman
Moderation,4: Thema in BASIC-Unterbereich verschiben; Titel angepasst; CODE tags gesetzt
Ich habe eine Datenbank gebastelt, betehend aus
3 Tabellen
2 Abfragen
1 Formular mit einem Unterformular (verbunden mit einer Kundennummer)
1 Bericht
Alle Teile alleine funktionieren wunderbar.
Jetzt möchte ich den Bericht aus dem Formular heraus öffnen, dass ist auch kein Problem.
Das Problem besteht darin, dass immer der erste Datensatz im Bericht angezeigt wird und
nicht der des aktuellen aus dem Formular.
Wie bekomme ich es hin, dass übergeben wird welcher Datensatz im Bericht angezeigt wird.
Mit hilfe von Makros wahrscheinlich, aber wie habe leider keine Ahnung von Makros.
Das Ganze soll später mal daruf hinaus dass der Bericht direkt gedruckt werden soll.
Ich verwende:
OpenOffice 3.1 und Windows XP SP3
Brauche dringend Hilfe.
Gruß chairman
Moderation,4: Thema in BASIC-Unterbereich verschiben; Titel angepasst; CODE tags gesetzt
Zuletzt geändert von chairman am Mi, 13.05.2009 00:52, insgesamt 1-mal geändert.
Re: Bericht aus Formular raus öffnen
Hallo,
ich habe das Problem so gelöst, daß ich dafür eine kleine Drucktabelle erstellt habe. Dort schreibe ich per Makro beispielsweise die ID des Datensatzes rein. Im Report verwende ich dann zum Drucken keine Tabelle sondern eine Abfrage, die als Steuerungstabelle eben die o.g. Drucktabelle verwendet. So existieren für den Bericht immer nur die Daten, die ich drucken will.
Hilft Dir das?
Gruß eBayer
ich habe das Problem so gelöst, daß ich dafür eine kleine Drucktabelle erstellt habe. Dort schreibe ich per Makro beispielsweise die ID des Datensatzes rein. Im Report verwende ich dann zum Drucken keine Tabelle sondern eine Abfrage, die als Steuerungstabelle eben die o.g. Drucktabelle verwendet. So existieren für den Bericht immer nur die Daten, die ich drucken will.
Hilft Dir das?
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
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
Re: Bericht aus Formular raus öffnen
Hi,
danke für die schnelle Antwort.
Könnte mein Problem beheben.
Aber wie gesagt habe keine Ahnung von Makros,
Ein kleines Beispiel wäre nett.
chairman
danke für die schnelle Antwort.
Könnte mein Problem beheben.
Aber wie gesagt habe keine Ahnung von Makros,
Ein kleines Beispiel wäre nett.
chairman
Re: Bericht aus Formular raus öffnen
Schau Dir dieses hier mal an:
Hoffe, das hilft Dir weiter...... mußt natürlich den Berichtsnamen, Formular- und Datenbank-Namen anpassen.
Dann legst Du dieses Makro auf den PushButton, mit dem Du den Druck starten willst und fertig ist die Kiste.
Gruß und viel Erfolg
eBayer
Code: Alles auswählen
Sub DruckAuftrag
Dim sText As String, sSQL As String
Dim oStatement As Object, oReportDoc As Object, oVerbindung As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim oDataBaseContext As Object, oDataSource As Object
' die folgende Zeile übernimmt die Ausweis-Nummer aus einem Feld des aktiven Formulars
sText = thisComponent.drawpage.forms.getByName("Kundendaten").getByName("Ausweis_Nr").Text ' Bericht für genau diesen Kunden drucken!
oDataBaseContext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDataSource = oDataBaseContext.getByName( "Kunden" )
oVerbindung = oDataSource.getConnection( "" , "" )
oStatement = oVerbindung.createStatement
sSQL = "UPDATE ""DruckSteuerung"" SET ""Ausweis_Nr"" = " + sText ' Hilfstabelle mit der Ausweisnummer des aktiven Kunden beschreiben
oStatement.executeUpdate( sSQL )
Args(0).Name="ActiveConnection" : Args(0).Value=oVerbindung
Args(1).Name="OpenMode" : Args(1).Value="open"
on Error goto Fehler
oReportDoc=oDataSource.DatabaseDocument.ReportDocuments.loadComponentFromURL("meinBericht,"_self",2,Args) ' Aufruf des Berichts
oReportDoc.CurrentController.Frame.ContainerWindow.setFocus()
Fehler:
End Sub
Dann legst Du dieses Makro auf den PushButton, mit dem Du den Druck starten willst und fertig ist die Kiste.
Gruß und viel Erfolg
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
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
Re: Bericht aus Formular raus öffnen
Ich weiß ist so langsam peinlich
aber was ist was?
Kunden (klar) = Datenbank
meinBericht (auch klar) =Bericht
Kundendaten = Name des Formulars?
Ausweis_Nr bei mir Kundennummer?
Muss sonst noch was geändert werden?
Ansonsten kommt bei mir ein Laufzeitfehler in der Zeile mit sText = ....
Es ist eine Exception aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .
aber was ist was?
Kunden (klar) = Datenbank
meinBericht (auch klar) =Bericht
Kundendaten = Name des Formulars?
Ausweis_Nr bei mir Kundennummer?
Muss sonst noch was geändert werden?
Ansonsten kommt bei mir ein Laufzeitfehler in der Zeile mit sText = ....
Es ist eine Exception aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .
Re: Bericht aus Formular raus öffnen
Kundendaten = Dein Formular
Ausweis_Nr = Kundennummer
Du mußt darauf achten, daß Dein Formular den ritigen Namen unter Formular-Eigenschaften hat (ganz wichtig)
1. irgendein Kontrollelement des Formulars mit der rechten Maustaste anklicken
2. dann Formular anklicken
3. unter Allgemein bei Name den richtigen Namen eintragen
Nun kannst Du Dich mal etwas weiter vortasten.
Viel Spaß
eBayer
Ausweis_Nr = Kundennummer
Du mußt darauf achten, daß Dein Formular den ritigen Namen unter Formular-Eigenschaften hat (ganz wichtig)
1. irgendein Kontrollelement des Formulars mit der rechten Maustaste anklicken
2. dann Formular anklicken
3. unter Allgemein bei Name den richtigen Namen eintragen
Nun kannst Du Dich mal etwas weiter vortasten.
Viel Spaß
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
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
Re: Bericht aus Formular raus öffnen
Hi eBayer!
Hilft alles nichts bleibt bei der Fehlermeldung. An der gleichen Stelle.
Hab mal ein Bild vom Bildcschirm drangehängt, wo zusehen ist was passiert wenn ich auf den Button drücke.
Und unten den Kompletten Code
Zuerklärung:
Reitschule2 = Name des Formulars
Kundenummer Klar Primärschlüssel (nicht im Formular angezeigt)
Reitschule = Name der Datenbank
Karten = Name des Berichts
chairman
Hilft alles nichts bleibt bei der Fehlermeldung. An der gleichen Stelle.
Hab mal ein Bild vom Bildcschirm drangehängt, wo zusehen ist was passiert wenn ich auf den Button drücke.
Und unten den Kompletten Code
Zuerklärung:
Reitschule2 = Name des Formulars
Kundenummer Klar Primärschlüssel (nicht im Formular angezeigt)
Reitschule = Name der Datenbank
Karten = Name des Berichts
chairman
Code: Alles auswählen
Sub DruckAuftrag
Dim sText As String, sSQL As String
Dim oStatement As Object, oReportDoc As Object, oVerbindung As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim oDataBaseContext As Object, oDataSource As Object
' die folgende Zeile übernimmt die Ausweis-Nummer aus einem Feld des aktiven Formulars
sText = thisComponent.drawpage.forms.getByName("Reitschule2").getByName("Kundennummer").Text ' Bericht für genau diesen Kunden drucken!
oDataBaseContext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDataSource = oDataBaseContext.getByName( "Reitschule" )
oVerbindung = oDataSource.getConnection( "" , "" )
oStatement = oVerbindung.createStatement
sSQL = "UPDATE ""DruckSteuerung"" SET ""Kundennummer"" = " + sText ' Hilfstabelle mit der Ausweisnummer des aktiven Kunden beschreiben
oStatement.executeUpdate( sSQL )
Args(0).Name="ActiveConnection" : Args(0).Value=oVerbindung
Args(1).Name="OpenMode" : Args(1).Value="open"
on Error goto Fehler
oReportDoc=oDataSource.DatabaseDocument.ReportDocuments.loadComponentFromURL("Karten","_self",2,Args) ' Aufruf des Berichts
oReportDoc.CurrentController.Frame.ContainerWindow.setFocus()
Fehler:
End Sub
- Dateianhänge
-
- Screenshot
- screen.jpg (126.67 KiB) 2754 mal betrachtet
Re: Bericht aus Formular raus öffnen
Hallo Chairman,
erlaube mir bitte eine kritische Anmerkung......
Dieses Forum soll Dir Hilfe zur Selbsthilfe bieten, also Anstöße geben, die Dich in die Lage versetzen, SELBST weiterzudenken. OK?
Und nun zu Deinem Problem. Du hast doch die Lösung schon selbst vorgegeben.
Logisch, daß Dein Makro meckert. Wenn das Formular das Feld nicht kennt, kann es Dir auch nicht den Inhalt zur Verfügung stellen.
Wenn Du den Primärschlüssel (Kundennummer) brauchst, dann mußt Du ihn Dir halt besorgen. Der einfachste Weg ist, Du definierst Dir im Formular ein Feld, welches Du mit der Kundennummer in der Tabelle verbindest. Setze dann die Eigenschaften des Feldes auf "NICHT editierbar" und kein Tabstop. Dann kannst Du erst einmal testen. Wenn der Test erfolgreich ist, verkleinerst Du das Feld im Formular auf die kleinste mögliche Größe und versteckst es irgendwo im Formular. Es sollte nicht mehr im Formular sichtbar sein - notfalls änderst Du noch die Hintergrundfarbe des Feldes in die Formularfarbe.
Diese Lösung habe ich mir selbst erarbeitet, da ich auch ohne Unterstüzung schnell weiterkommen mußte. Kann sein, daß jemand eine bessere Lösung hat, aber sie ist wirklich die einfachste und mir gefällt sie.
So, jetzt besinne Dich auf Deine Fantasie und schau, daß Du vorankommst. Ich denke, die meisten haben so angefangen.
Viel Erfolg und besten Gruß
eBayer
ps. über eine Rückmeldung zu Deinem Fortschritt würde ich mich freuen
erlaube mir bitte eine kritische Anmerkung......
Dieses Forum soll Dir Hilfe zur Selbsthilfe bieten, also Anstöße geben, die Dich in die Lage versetzen, SELBST weiterzudenken. OK?
Und nun zu Deinem Problem. Du hast doch die Lösung schon selbst vorgegeben.
Logisch, daß Dein Makro meckert. Wenn das Formular das Feld nicht kennt, kann es Dir auch nicht den Inhalt zur Verfügung stellen.
Wenn Du den Primärschlüssel (Kundennummer) brauchst, dann mußt Du ihn Dir halt besorgen. Der einfachste Weg ist, Du definierst Dir im Formular ein Feld, welches Du mit der Kundennummer in der Tabelle verbindest. Setze dann die Eigenschaften des Feldes auf "NICHT editierbar" und kein Tabstop. Dann kannst Du erst einmal testen. Wenn der Test erfolgreich ist, verkleinerst Du das Feld im Formular auf die kleinste mögliche Größe und versteckst es irgendwo im Formular. Es sollte nicht mehr im Formular sichtbar sein - notfalls änderst Du noch die Hintergrundfarbe des Feldes in die Formularfarbe.
Diese Lösung habe ich mir selbst erarbeitet, da ich auch ohne Unterstüzung schnell weiterkommen mußte. Kann sein, daß jemand eine bessere Lösung hat, aber sie ist wirklich die einfachste und mir gefällt sie.
So, jetzt besinne Dich auf Deine Fantasie und schau, daß Du vorankommst. Ich denke, die meisten haben so angefangen.
Viel Erfolg und besten Gruß
eBayer
ps. über eine Rückmeldung zu Deinem Fortschritt würde ich mich freuen
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
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
Re: Bericht aus Formular raus öffnen
Hi eBayer,
hab jetzt das Makro am laufen,
aber es passiert genau das Gleich wie bei dem normalen öffnen mit folgendem Makro.
Öffnet den Bericht mit dem aller ersten Datensatz der DB.
chairman
hab jetzt das Makro am laufen,
aber es passiert genau das Gleich wie bei dem normalen öffnen mit folgendem Makro.
Öffnet den Bericht mit dem aller ersten Datensatz der DB.
chairman
Code: Alles auswählen
Sub Open_Karten
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("Reitschule")
oVerbindung = oDatenquelle.getConnection( "" , "" )
Args(0).Name="ActiveConnection" : Args(0).Value=oVerbindung
Args(1).Name="OpenMode" : Args(1).Value="open"
oReportDoc=oDatenquelle.DatabaseDocument.ReportDocuments.loadComponentFromURL("Karten","_self",2,Args)
oReportDoc.CurrentController.Frame.ContainerWindow.setFocus()
End Sub
Re: Bericht aus Formular raus öffnen
ja logisch....... Du mußt natürlich Deinen Bericht anpassen, damit die Steuerung des Berichts über die Drucksteuerungstabelle erfolgen kann. Also nicht direkt auf die Tabelle gehen, sondern eine Abfrage im Bericht definieren, die Dir nur den Datensatz zur Verfügung stellt, der in der Drucksteuerungstabelle angefordert wird.
Hast Du denn zunächst mal kontrolliert, ob die Drucksteuerungstabelle ordnungsgemäß beschrieben wird?
Das wäre die erste Voraussetzung.
In der Abfrage müsste dann die Verbindung zur Drucksteuerungstabelle so ähnlich mit einer WHERE-Bedingung hergestellt werden:
SELECT........................... WHERE `Kundendatei`.`Ausweis_Nr` = `DruckSteuerung`.`Ausweis_Nr`
Gruß eBayer
Hast Du denn zunächst mal kontrolliert, ob die Drucksteuerungstabelle ordnungsgemäß beschrieben wird?
Das wäre die erste Voraussetzung.
In der Abfrage müsste dann die Verbindung zur Drucksteuerungstabelle so ähnlich mit einer WHERE-Bedingung hergestellt werden:
SELECT........................... WHERE `Kundendatei`.`Ausweis_Nr` = `DruckSteuerung`.`Ausweis_Nr`
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
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
Re: Bericht aus Formular raus öffnen
Hi,
muss ich mal aus probieren.
Problem ist nur das die Tabelle leer bleibt.
Was brauch ich an Spalten in der Tabelle wenn ich das richtig verstehe brauch ich doch nur eine Spalte mit dem Namen Kundennummer.
chairman
muss ich mal aus probieren.
Problem ist nur das die Tabelle leer bleibt.
Was brauch ich an Spalten in der Tabelle wenn ich das richtig verstehe brauch ich doch nur eine Spalte mit dem Namen Kundennummer.
chairman
Re: Bericht aus Formular raus öffnen
das ist richtig....
jetzt kümmere Dich erst einmal um den Bericht.
Pflege manuell in die Drucksteuerungstabelle irgendeine Nummer ein und bring den Bericht zum laufen!
Die leere Tabelle wird wohl damit zusammen hängen, daß Du den falschen Datentyp verwendest. Um das ganze abzukürzen kann ich Dir auch anbieten, daß Du mir Deine Anwendung mit ein paar Testdaten zur Verfügung stellst. Entweder ich bringe dann die Korrekturen an oder ich teile Dir mit was zu machen ist.
Gruß eBayer
jetzt kümmere Dich erst einmal um den Bericht.
Pflege manuell in die Drucksteuerungstabelle irgendeine Nummer ein und bring den Bericht zum laufen!
Die leere Tabelle wird wohl damit zusammen hängen, daß Du den falschen Datentyp verwendest. Um das ganze abzukürzen kann ich Dir auch anbieten, daß Du mir Deine Anwendung mit ein paar Testdaten zur Verfügung stellst. Entweder ich bringe dann die Korrekturen an oder ich teile Dir mit was zu machen ist.
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
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
Re: Bericht aus Formular raus öffnen
Hi eBayer,
so jetzt funktioniert es so dass man auch nur den aktuellen Datensatz angezeigt bekommt.
Wenn man natürlich Zeichen im Spaltennamen der Hilfstabelle verdreht, dann kann das ja auch nicht klappen
.
Vielen vielen Dank für deine Hilfe.
chairman
PS:
Vielleicht kannste mir noch veraten, wie ich das jetzt so hin bekomme,
damit der Bericht sofort gedruckt wird(ohne das man manuell noch auf irgendetwas klicken muss)
und wieder geschlossen wird.
so jetzt funktioniert es so dass man auch nur den aktuellen Datensatz angezeigt bekommt.
Wenn man natürlich Zeichen im Spaltennamen der Hilfstabelle verdreht, dann kann das ja auch nicht klappen

Vielen vielen Dank für deine Hilfe.
chairman
PS:
Vielleicht kannste mir noch veraten, wie ich das jetzt so hin bekomme,
damit der Bericht sofort gedruckt wird(ohne das man manuell noch auf irgendetwas klicken muss)
und wieder geschlossen wird.
Re: Bericht aus Formular raus öffnen
na super..... ist doch schön, wenn man sich durchgekämpft hat.
Für die Frage nach dem Druck solltest Du Dich mal stark machen und mir dann das Ergebnis mitteilen
Ich suche dafür auch nach einer Lösung.
Gruß eBayer
Für die Frage nach dem Druck solltest Du Dich mal stark machen und mir dann das Ergebnis mitteilen

Ich suche dafür auch nach einer Lösung.
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
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