Öffnen Form aus Abfrage/Bericht
Moderator: Moderatoren
Öffnen Form aus Abfrage/Bericht
Hallo,
was ich möchte: Aus meinen Datensätzen wählte ich nach Kriterien welche aus und benutze dazu eine Abfrage. Von den ausgewählten Datensätze sind einige zu ändern. Ich möchte den zu ändernden Datensatz markieren und per Schaltfläche die zu diesem Datensatz gehörigen Form öffnen.
Was habe ich bisher gemacht: Eine Abfrage, läuft einwandfrei. Im Forum nach einer Lösung gesucht und diesen Macro gefunden...
sub open_form
ThisDatabaseDocument.formdocuments.getbyname("Name").open
end sub
In der Abfrage kann ich einen Datensatz markieren/auswählen, aber ich finde keinen Weg, wie ich zur Abfrage eine Schaltfläche erstellen kann um diese mit dem Macro zu verknüpfen. Erstelle ich aus der Abfrage einen Bericht, kann ich die gewünschte Schaltfläche in dem Bericht mit dem Macro erstellen, aber ich kann keinen Datensatz in dem Bericht markieren/selektieren.
Der Macro selbst öffnet immer den ersten Datensatz aus der Datenbank, hier fehlt noch der Weg, dass der Macro den zuvor markierten Datensatz öffnet.
Weiss jemand Rat ? Vorab schon mal vielen Dank.
was ich möchte: Aus meinen Datensätzen wählte ich nach Kriterien welche aus und benutze dazu eine Abfrage. Von den ausgewählten Datensätze sind einige zu ändern. Ich möchte den zu ändernden Datensatz markieren und per Schaltfläche die zu diesem Datensatz gehörigen Form öffnen.
Was habe ich bisher gemacht: Eine Abfrage, läuft einwandfrei. Im Forum nach einer Lösung gesucht und diesen Macro gefunden...
sub open_form
ThisDatabaseDocument.formdocuments.getbyname("Name").open
end sub
In der Abfrage kann ich einen Datensatz markieren/auswählen, aber ich finde keinen Weg, wie ich zur Abfrage eine Schaltfläche erstellen kann um diese mit dem Macro zu verknüpfen. Erstelle ich aus der Abfrage einen Bericht, kann ich die gewünschte Schaltfläche in dem Bericht mit dem Macro erstellen, aber ich kann keinen Datensatz in dem Bericht markieren/selektieren.
Der Macro selbst öffnet immer den ersten Datensatz aus der Datenbank, hier fehlt noch der Weg, dass der Macro den zuvor markierten Datensatz öffnet.
Weiss jemand Rat ? Vorab schon mal vielen Dank.
Open Office 4.0.1
Windows 7 home premium SP 1
Windows 7 home premium SP 1
Re: Öffnen Form aus Abfrage/Bericht
Ob du ein Makro durch eine Abfrage auslösen kannst, weiß ich nicht. Ich mache so etwas auf jeden Fall über ein Formular:
- Benutze ein Tabellenkontrollfeld, dessen Datenquelle die Abfrage ist.
- Die Schaltfläche startet über das Ereignis "Aktion ausführen" ein Makro.
- Das Makro notiert den aktuellen Datensatz, startet das gewünschte Formular und übergibt Daten an dieses Formular.
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: Öffnen Form aus Abfrage/Bericht
Hallo juetho,
vielen Dank für Deinen Beitrag. Leider komme ich damit nicht weiter. Um Datensätze zu selektieren brauche ich die Abfrage; und in die Abfrage bekomme ich keine Schaltfläche und auch kein Tabellen-Kontrollfeld hinzugefügt. Vielleicht geht das ja, ich weiss nur nicht, wie man das macht.
vielen Dank für Deinen Beitrag. Leider komme ich damit nicht weiter. Um Datensätze zu selektieren brauche ich die Abfrage; und in die Abfrage bekomme ich keine Schaltfläche und auch kein Tabellen-Kontrollfeld hinzugefügt. Vielleicht geht das ja, ich weiss nur nicht, wie man das macht.
Open Office 4.0.1
Windows 7 home premium SP 1
Windows 7 home premium SP 1
Re: Öffnen Form aus Abfrage/Bericht
Nicht unbedingt. Die Abfrage liefert erst einmal eine Menge von Datensätzen. Wie damit umgegangen wird, habe ich im ersten Teil meines Vorschlags gesagt:bello15 hat geschrieben:Um Datensätze zu selektieren brauche ich die Abfrage;
Das geht sogar ganz einfach mit dem Formular-Assistenten.juetho hat geschrieben:Ich mache so etwas auf jeden Fall über ein Formular:
* Benutze ein Tabellenkontrollfeld, dessen Datenquelle die Abfrage ist.
Das geht dann über die von mir angegebenen Punkte 2 und 3.bello15 hat geschrieben:Von den ausgewählten Datensätze sind einige zu ändern. Ich möchte den zu ändernden Datensatz markieren und per Schaltfläche die zu diesem Datensatz gehörigen Form öffnen.
Da niemand sonst sich zu deiner Frage geäußert hat, ist das vermutlich der richtige Weg. Also solltest du ihn gehen und nicht darauf beharren, dass zu einer Abfrage keine Schaltfläche möglich ist. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: Öffnen Form aus Abfrage/Bericht
Hallo Bello15,
in der Abfrage kannst Du keine Makros starten, keine Buttons unterbringen usw.
All dies kannst Du in Formularen, wobei Du zusätzlich auf Deine Abfragen zugreifen kannst und entsprechende Filterungen vom Formular aus vornehmen kannst.
Abfragen sind als Grundlagen für Berichte und Formulare gedacht. Die Hauptschnittstelle vom Datenbanknutzer zur Datenbank bildet aber eben das Formular.
Wenn Du unbedingt das Tabellenaussehen haben willst, dann ist im Formular das Tabellenkontrollfeld das Element, das Du wählen solltest. Du kannst auch das Tabellenkontrollfeld und andere Elemente zusammen in einem Formular kombinieren.
Das Tabellenkontrollfeld bietet neben allem, was die Abfrageansicht bietet, zusätzlich eben auch die Möglichkeit, bestimmte Feldtypen zu integrieren und auch Makros zu starten. Ich wüsste nicht, warum das Feld für Dein Vorhaben ungeeignet ist.
Gruß
Robert
in der Abfrage kannst Du keine Makros starten, keine Buttons unterbringen usw.
All dies kannst Du in Formularen, wobei Du zusätzlich auf Deine Abfragen zugreifen kannst und entsprechende Filterungen vom Formular aus vornehmen kannst.
Abfragen sind als Grundlagen für Berichte und Formulare gedacht. Die Hauptschnittstelle vom Datenbanknutzer zur Datenbank bildet aber eben das Formular.
Wenn Du unbedingt das Tabellenaussehen haben willst, dann ist im Formular das Tabellenkontrollfeld das Element, das Du wählen solltest. Du kannst auch das Tabellenkontrollfeld und andere Elemente zusammen in einem Formular kombinieren.
Das Tabellenkontrollfeld bietet neben allem, was die Abfrageansicht bietet, zusätzlich eben auch die Möglichkeit, bestimmte Feldtypen zu integrieren und auch Makros zu starten. Ich wüsste nicht, warum das Feld für Dein Vorhaben ungeeignet ist.
Gruß
Robert
Re: Öffnen Form aus Abfrage/Bericht
Hallo juetho, hallo RobertG
sorry, hat gedauert, aber jetzt habe ich kapiert. Das Formular ist die Schnittstelle. Also habe ich ein neues Formular erstellt, ein Tabellen-Kontrollfeld eingefügt und diesem Feld meine Abfrage zugewiesen. Die Abfrage erscheint korrekt in diesem Feld als Tabelle und ich kann einen beliebigen Datensatz markieren (den, den ich ändern will). Auch kann ich in diesem Formular Schaltflächen mit zugewiesenen Macros platzieren.
Um nun einen Macro zu erstellen, der mir von der ausgewählten Spalte das passende Formular öffnet habe ich aus den Hinweisen von juetho diesen macro gefunden und probiert
oForm = ThisComponent.Drawpage.Forms.MainForm 'Wenn das Formular im Formularnavigator MainForm heißt
nID = oForm.getint(1)
Da kommt leider ein Fehler "Basic Laufzeitfehler Eigenschaft/Methode nicht gefunden Drawpage.
Wenn ich statt <ThisComponent.Drawpage.Forms> <ThisDatabaseDocument.FormDocuments> verwende wird als Fehler Objektvariable nicht belegt angezeigt nID = oForm.getint(1).
Die DatensatzID steht bei mir in Spalte 1.
Sicher sehen die Fachleute mit meinen Macrokenntnissen ist nicht weit her.
Darf ich trotzdem nochmal um einen Tipp bitten. Danke!
sorry, hat gedauert, aber jetzt habe ich kapiert. Das Formular ist die Schnittstelle. Also habe ich ein neues Formular erstellt, ein Tabellen-Kontrollfeld eingefügt und diesem Feld meine Abfrage zugewiesen. Die Abfrage erscheint korrekt in diesem Feld als Tabelle und ich kann einen beliebigen Datensatz markieren (den, den ich ändern will). Auch kann ich in diesem Formular Schaltflächen mit zugewiesenen Macros platzieren.
Um nun einen Macro zu erstellen, der mir von der ausgewählten Spalte das passende Formular öffnet habe ich aus den Hinweisen von juetho diesen macro gefunden und probiert
oForm = ThisComponent.Drawpage.Forms.MainForm 'Wenn das Formular im Formularnavigator MainForm heißt
nID = oForm.getint(1)
Da kommt leider ein Fehler "Basic Laufzeitfehler Eigenschaft/Methode nicht gefunden Drawpage.
Wenn ich statt <ThisComponent.Drawpage.Forms> <ThisDatabaseDocument.FormDocuments> verwende wird als Fehler Objektvariable nicht belegt angezeigt nID = oForm.getint(1).
Die DatensatzID steht bei mir in Spalte 1.
Sicher sehen die Fachleute mit meinen Macrokenntnissen ist nicht weit her.
Darf ich trotzdem nochmal um einen Tipp bitten. Danke!
Open Office 4.0.1
Windows 7 home premium SP 1
Windows 7 home premium SP 1
Re: Öffnen Form aus Abfrage/Bericht
Dieser Fehler tritt üblicherweise dann auf, wenn das Makro aus dem Makro-Editor heraus gestartet wird. Das darf nicht sein! Du musst im Formular-Designer die Eigenschaften der Schaltfläche öffnen, auf der Seite "Ereignisse" unter "Aktion ausführen" dein Makro auswählen und zuordnen. Dann wird das Makro beim Drücken der Schaltfläche korrekt gestartet. Jürgenbello15 hat geschrieben:Da kommt leider ein Fehler "Basic Laufzeitfehler Eigenschaft/Methode nicht gefunden Drawpage.Code: Alles auswählen
oForm = ThisComponent.Drawpage.Forms.MainForm 'Wenn das Formular im Formularnavigator MainForm heißt nID = oForm.getint(1)
PS. Bitte gewöhne dir die Code-Markierung an!
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: Öffnen Form aus Abfrage/Bericht
Hallo,
schönen Dank juetho! Wenn ich Deinem Vorschlag folge, bekomme ich als Fehlermeldung "Eigenschaft/Methode nicht gefunden: selected_dat."
selected_data ist der Name des Formulars mit den ausgewählten Datensätzen. Hier ist der code
Weiter habe ich ausprobiert
Die beiden ersten Varianten ergeben die gleiche Fehlermeldung ("Eigenschaft/Methode nicht gefunden: selected_dat.") , die letzte Variante kommt mit dem Fehler "Variable erwartet.
schönen Dank juetho! Wenn ich Deinem Vorschlag folge, bekomme ich als Fehlermeldung "Eigenschaft/Methode nicht gefunden: selected_dat."
selected_data ist der Name des Formulars mit den ausgewählten Datensätzen. Hier ist der code
Code: Alles auswählen
Sub Open_depending_ID
oForm = ThisComponent.Drawpage.Forms.selected_data 'Wenn das Formular im Formularnavigator MainForm heißt
nID = oForm.getint(1)
End Sub
Code: Alles auswählen
oForm = ThisComponent.Drawpage.Forms. selected_data
oForm = ThisComponent.Drawpage.Forms. "selected_data"
oForm = ThisComponent.Drawpage.Forms. ("selected_data")
Open Office 4.0.1
Windows 7 home premium SP 1
Windows 7 home premium SP 1
Re: Öffnen Form aus Abfrage/Bericht
Hallo bello15,
Du verwendest mit "_" ein Sonderzeichen, das vielleicht Probleme bereitet:
führt da schon sicherer zum Ergebnis.
Folgendes musst Du wissen: Mit dem Punkt zwischen den begriffen werden die verschiedenen Ebenen abstufend verbunden. "ThisComponent" ist die höchte Ebene. Da liegt alles mögliche drin, unter anderem eben die Darstellung grafischer Elemente in der sichtbaren "Drawpage". Die "Drawpage" wiederum kann verschiedene Elemente, unter anderem Formulare, enthalten: "Forms". Zusammen wird daraus eben ThisComponent.Drawpage.Forms
In Deinen Versuchen baust eine Leertaste ein. Alles nach dieser Leertaste gehört nicht mehr zu der Variablen, die Du definierst. Deswegen führen so schon alle 3 zuletzt aufgezeichneten Versuche in die Irre.
Gruß
Robert
Du verwendest mit "_" ein Sonderzeichen, das vielleicht Probleme bereitet:
Code: Alles auswählen
oForm = ThisComponent.Drawpage.Forms.GetByName("selected_data")
Folgendes musst Du wissen: Mit dem Punkt zwischen den begriffen werden die verschiedenen Ebenen abstufend verbunden. "ThisComponent" ist die höchte Ebene. Da liegt alles mögliche drin, unter anderem eben die Darstellung grafischer Elemente in der sichtbaren "Drawpage". Die "Drawpage" wiederum kann verschiedene Elemente, unter anderem Formulare, enthalten: "Forms". Zusammen wird daraus eben ThisComponent.Drawpage.Forms
In Deinen Versuchen baust eine Leertaste ein. Alles nach dieser Leertaste gehört nicht mehr zu der Variablen, die Du definierst. Deswegen führen so schon alle 3 zuletzt aufgezeichneten Versuche in die Irre.
Gruß
Robert
Re: Öffnen Form aus Abfrage/Bericht
Schönen Dank RobertG,
mein code sieht nun so aus
Bei dem Formularnamen habe ich den Unterstrich rausgenommen und in dem code GetByName eingefügt. Jetzt bekomme ich :
Basic Laufzeitfehler Exception aufgetreten Type: com.sun.star.container.NoSuchElementException Message:,
Für diese kleine Aufgabe ist nun schon soviel Zeit verwendet worden, sodass ich es aufgebe.
An den "Helfern" recht herzlichen Dank.
mein code sieht nun so aus
Code: Alles auswählen
Sub Open_depending_ID
oForm = ThisComponent.Drawpage.Forms.GetByName("selecteddata")
nID = oForm.getint(1)
End Sub
Basic Laufzeitfehler Exception aufgetreten Type: com.sun.star.container.NoSuchElementException Message:,
Für diese kleine Aufgabe ist nun schon soviel Zeit verwendet worden, sodass ich es aufgebe.
An den "Helfern" recht herzlichen Dank.
Open Office 4.0.1
Windows 7 home premium SP 1
Windows 7 home premium SP 1
Re: Öffnen Form aus Abfrage/Bericht
Hallo bello15,
"NoSuchElement" kommt an welcher Position?
Was soll nID = ... eigentlich bewirken? Was soll das Makro erreichen? So tut es momentan sowieso nichts, auch wenn alle Elemente da sind, auch wenn in Spalte 1 Deines Formular eine ID steht, die integer ist.
Vermutlich willst Du ja einen Filter setzen, nur das kommt in Deinem Makro gar nicht vor. Das sehe ich dann, wenn ich den Link weitergehe, den Jürgen in der ersten Antwort gepostet hat.
Gruß
Robert
"NoSuchElement" kommt an welcher Position?
Was soll nID = ... eigentlich bewirken? Was soll das Makro erreichen? So tut es momentan sowieso nichts, auch wenn alle Elemente da sind, auch wenn in Spalte 1 Deines Formular eine ID steht, die integer ist.
Vermutlich willst Du ja einen Filter setzen, nur das kommt in Deinem Makro gar nicht vor. Das sehe ich dann, wenn ich den Link weitergehe, den Jürgen in der ersten Antwort gepostet hat.
Gruß
Robert
Re: Öffnen Form aus Abfrage/Bericht
Hallo Robert
In der Abfrage, die im Formular steht, habe ich einen Datensatz markiert. Der Macro soll von dem markierten Datensatz die ID verwenden um das andere Formular mit dem passenden Datensatz zu öffnen. Hier erkenne ich ein Fehler von mir. Bisher hat der Macro noch nicht den Namen des Inputformulars.
die code Zeile oForm = ThisCom...bis einschließlich selecteddata") ist blau unterlegt. Ich nehme an, das ist es, wonach Du fragts.RobertG hat geschrieben: "NoSuchElement" kommt an welcher Position?
Hallo RobertRobertG hat geschrieben:Was soll nID = ... eigentlich bewirken? Was soll das Makro erreichen? So tut es momentan sowieso nichts, auch wenn alle Elemente da sind, auch wenn in Spalte 1 Deines Formular eine ID steht, die integer ist.
In der Abfrage, die im Formular steht, habe ich einen Datensatz markiert. Der Macro soll von dem markierten Datensatz die ID verwenden um das andere Formular mit dem passenden Datensatz zu öffnen. Hier erkenne ich ein Fehler von mir. Bisher hat der Macro noch nicht den Namen des Inputformulars.
Sorry, warum man einen Filter braucht, was der tut und wie der aussehen muss habe ich leider keine Ahnung. Ich vermute, es ist zuviel verlangt, einem Anfänger das alles zu erklären. Auf jeden Fall vielen Dank für die Mühe !RobertG hat geschrieben:Vermutlich willst Du ja einen Filter setzen, nur das kommt in Deinem Makro gar nicht vor. Das sehe ich dann, wenn ich den Link weitergehe, den Jürgen in der ersten Antwort gepostet hat
Open Office 4.0.1
Windows 7 home premium SP 1
Windows 7 home premium SP 1
Re: Öffnen Form aus Abfrage/Bericht
Hi Robert,RobertG hat geschrieben:Hallo Bello15,
in der Abfrage kannst Du keine Makros starten, keine Buttons unterbringen usw.
All dies kannst Du in Formularen, wobei Du zusätzlich auf Deine Abfragen zugreifen kannst und entsprechende Filterungen vom Formular aus vornehmen kannst.
Abfragen sind als Grundlagen für Berichte und Formulare gedacht. Die Hauptschnittstelle vom Datenbanknutzer zur Datenbank bildet aber eben das Formular.
Wenn Du unbedingt das Tabellenaussehen haben willst, dann ist im Formular das Tabellenkontrollfeld das Element, das Du wählen solltest. Du kannst auch das Tabellenkontrollfeld und andere Elemente zusammen in einem Formular kombinieren.
Das Tabellenkontrollfeld bietet neben allem, was die Abfrageansicht bietet, zusätzlich eben auch die Möglichkeit, bestimmte Feldtypen zu integrieren und auch Makros zu starten. Ich wüsste nicht, warum das Feld für Dein Vorhaben ungeeignet ist.
Gruß
Robert
ich suche verzweifelt einen Weg, Datensätze zu filtern, und zwar sollen nur diejenigen angezeigt werden, bei denen Wert1 < Wert2 ist.
Hast du eine Idee, ob und wie das mit dem Tabellenkontrollfeld* funktioniert?
* Viel kontrollieren kann ich damit derzeit leider nicht...

LG, Marcel
Liebe Grüße, Marcel
Re: Öffnen Form aus Abfrage/Bericht
Gefiltert wird nicht das, was das Tabellenkontrollfeld zeigt, sondern die Datenmenge des Formulars. Öffne also in der Formulardefinition den Formular-Navigator, wähle des (Haupt-) Formular und dafür die Eigenschaften. Im Register "Daten" gibt es ein Feld "Filter". Das sieht zwar so aus, dass ein Feldinhalt nur mit einem festen Wert verglichen werden könnte; aber du kannst den Filter auch manuell eintragen:Masl75 hat geschrieben:ich suche verzweifelt einen Weg, Datensätze zu filtern, und zwar sollen nur diejenigen angezeigt werden, bei denen Wert1 < Wert2 ist.
Hast du eine Idee, ob und wie das mit dem Tabellenkontrollfeld* funktioniert?
Code: Alles auswählen
( "Artikelstammdaten"."Bestand" < "Artikelstammdaten"."Mindestbestand" )
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC