BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Letzten Datensatz ins Formular Laden
Letzten Datensatz ins Formular Laden
Hallo
Habe 2 Tabellen mit jeweils zwei Zahlfelder, die eine Beziehung zwischen ihren Primärschlüssel id haben also eine 1-1 Beziehung. Im Formular sind sie auch so als MainForm und SubForm abgebildet. Hier gibt es auch 3 Buttons die jeweils ihrem Namen analoge Aktion eingestellt haben. (Speichern, Neuer Datensatz und Letzter Datensatz)
Wenn ich normal Daten eingebe und dann auf den Speichern Button drücke funktioniert es wie erwartet. Wenn ich auf Neuer Datensatz Drücke werden die Felder beider Formulare geleert wie erwartet. Der Button Letzter Datensatz wird erst aktiv wenn ich den Button neuer Datensatz gerückt habe, weiss nicht wieso er vorher micht aktiv wird . Er ist dem MainForm zugeordnet, wenn ich ihn der SubForm zuordne wird er nie aktiviert. Mein Hauptproblem ist wenn ich den Button Letzter Datensatz klicke wird nur im oberen Mainform der letzte Datensatz geschrieben, das Subformular bleibt leer. Wenn ich jetzt versuche daten einzugeben im Subformular gibt’s beim speichern ein sql exception da ja die Primärschlüssel nicht übereinstimmen. Ich möchte das in beide Formulare der jeweiliger letzte Datensatz geladen wird. Habe auch zusätzlich versucht beim button Letzter Datensatz unter Ereigniss „Aktion Ausführen“ folgendes Makro auszuführen, es hat aber nichts gebracht.
Sub LadeLetztenDatensatz
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
oSubForm = oForm.getByName("SubForm")
oForm.last()
oSubForm.last()
End Sub
Was auch nicht geht: wollte das beim Laden des Formulars der letzte Datensatz geladen wird. Habe im Mainform und SubForm als Ereignes „Beim Laden“ obige Makro hinzugefügt. Da passiert leider gar nichts beim laden.
Hat jemand eine Idee was ich in diesen beiden Fällen (letzter Datensatz laden beim öffnen des Formulars und letzter Datensatz laden per Button) machen muss ?
Danke
[img][img]
Habe 2 Tabellen mit jeweils zwei Zahlfelder, die eine Beziehung zwischen ihren Primärschlüssel id haben also eine 1-1 Beziehung. Im Formular sind sie auch so als MainForm und SubForm abgebildet. Hier gibt es auch 3 Buttons die jeweils ihrem Namen analoge Aktion eingestellt haben. (Speichern, Neuer Datensatz und Letzter Datensatz)
Wenn ich normal Daten eingebe und dann auf den Speichern Button drücke funktioniert es wie erwartet. Wenn ich auf Neuer Datensatz Drücke werden die Felder beider Formulare geleert wie erwartet. Der Button Letzter Datensatz wird erst aktiv wenn ich den Button neuer Datensatz gerückt habe, weiss nicht wieso er vorher micht aktiv wird . Er ist dem MainForm zugeordnet, wenn ich ihn der SubForm zuordne wird er nie aktiviert. Mein Hauptproblem ist wenn ich den Button Letzter Datensatz klicke wird nur im oberen Mainform der letzte Datensatz geschrieben, das Subformular bleibt leer. Wenn ich jetzt versuche daten einzugeben im Subformular gibt’s beim speichern ein sql exception da ja die Primärschlüssel nicht übereinstimmen. Ich möchte das in beide Formulare der jeweiliger letzte Datensatz geladen wird. Habe auch zusätzlich versucht beim button Letzter Datensatz unter Ereigniss „Aktion Ausführen“ folgendes Makro auszuführen, es hat aber nichts gebracht.
Sub LadeLetztenDatensatz
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
oSubForm = oForm.getByName("SubForm")
oForm.last()
oSubForm.last()
End Sub
Was auch nicht geht: wollte das beim Laden des Formulars der letzte Datensatz geladen wird. Habe im Mainform und SubForm als Ereignes „Beim Laden“ obige Makro hinzugefügt. Da passiert leider gar nichts beim laden.
Hat jemand eine Idee was ich in diesen beiden Fällen (letzter Datensatz laden beim öffnen des Formulars und letzter Datensatz laden per Button) machen muss ?
Danke
[img][img]
Re: Letzten Datensatz ins Formular Laden
Hallo ogan,
da fehlen mir Informationen zu dem, wie Du das Formular einsetzt. Wenn "Letzter Datensatz" nicht aktiv ist, dann müsstest Du Dich bereits auf dem letzten Datensatz befinden. Das bedeutet für mich, dass das Formular anscheinend nur zur Neueingabe von Daten genutzt wird.
Wenn Du auf "Neuer Datensatz" drückst, dann springt das Formular bei "Letzter Datensatz" auf den letzten eingegebenen Datensatz - also zurück. Der neue Datensatz existiert ja noch gar nicht. Das ist dann auch nicht oForm.last(), sondern wäre oForm.afterLast().
Das Unterformular wird durch den Fremdschlüssel aus dem Hauptformular bestimmt. Da es eine 1:1-Beziehung ist kannst Du da nicht navigieren. Das Unterformular kann keine anderen Daten schreiben, zu denen kein Primärschlüssel existiert.
Wenn der erste Absatz stimmt und Du nur Neueingaben machst, dann kann es sein, dass diese Aktion mit dem letzten Datensatz eigentlich ein Bug ist. Da dürfte gar keine Navigation zurück möglich sein. Und deswegen auch keine Navigation zurück für das Unterformular möglich sein.
Zeige hier einmal die Eigenschaften von Hauptformular und Unterformular.
Gruß
Robert
da fehlen mir Informationen zu dem, wie Du das Formular einsetzt. Wenn "Letzter Datensatz" nicht aktiv ist, dann müsstest Du Dich bereits auf dem letzten Datensatz befinden. Das bedeutet für mich, dass das Formular anscheinend nur zur Neueingabe von Daten genutzt wird.
Wenn Du auf "Neuer Datensatz" drückst, dann springt das Formular bei "Letzter Datensatz" auf den letzten eingegebenen Datensatz - also zurück. Der neue Datensatz existiert ja noch gar nicht. Das ist dann auch nicht oForm.last(), sondern wäre oForm.afterLast().
Das Unterformular wird durch den Fremdschlüssel aus dem Hauptformular bestimmt. Da es eine 1:1-Beziehung ist kannst Du da nicht navigieren. Das Unterformular kann keine anderen Daten schreiben, zu denen kein Primärschlüssel existiert.
Wenn der erste Absatz stimmt und Du nur Neueingaben machst, dann kann es sein, dass diese Aktion mit dem letzten Datensatz eigentlich ein Bug ist. Da dürfte gar keine Navigation zurück möglich sein. Und deswegen auch keine Navigation zurück für das Unterformular möglich sein.
Zeige hier einmal die Eigenschaften von Hauptformular und Unterformular.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Letzten Datensatz ins Formular Laden
Hallo Robert
Ich habe die Navigationsleiste der Formulare ausgeschaltet und möchte das Formular nur für die Neueingabe verwenden. Es soll also nicht über die Datensätze navigiert werden. Aber zusätzlich möchte ich dass man den allerletzten eingegebenen Datensatz laden und ändern kann.
Ich will gar nicht im Unterformular navigieren. Ich will nur neue Daten eingeben oder den letzten Datensatz sehen. Und wenn der Button Letzter Datensatz aktiv ist und ich ihn drücke werden auch im Hauptformular die richtige Daten geladen aber im SubFormular nicht, dieser bleibt leer. Daher verstehe ich das mit dem oForm.afterLast(). nicht.
Aber ich habe mir nochmals die Eigenschaften der Formulare angeschaut , da war «nur daten hinzufügen» jeweils auf ja gesetzt, dieses habe ich auf nein geändert und jetzt funktioniert es wie erwartet. Also ist mein problem gelöst. Danke für deinen Input, das hat mich darauf gebracht.
Formulareigenschaften sind jetzt wie folgt.
MainForm:
Allgemein
Art des Inhaltes : Tabelle
Inhalt : Tabelle3
Daten hinzufügen : Ja
Daten ändern: Ja
Daten löschen: Nein
Nur Daten hinzufügen: Nein
Symbolleiste Navigation: Nein
Zyklus aktuelle Seite
Ereignisse:
Beim Laden: Standard.Module1.LadeLetztenDatensatz (document, Basic)
SubForm:
Allgemein
Art des Inhaltes : Tabelle
Inhalt : Tabelle4
Verknüpfen von: id
Verknüpfen nach: id
Daten hinzufügen : Ja
Daten ändern: Ja
Daten löschen: Nein
Nur Daten hinzufügen: Nein
Symbolleiste Navigation: Nein
Zyklus aktuelle Seite
Ereignisse:
Beim Laden: Standard.Module1.LadeLetztenDatensatz (document, Basic)
Noch eine zusätzliche Frage: Um eine 1-1 Beziehung abzubilden die primärschlüssel zweier Tabellen zu verbinden, ist das eine gute Lösung ? Habe jedenfalls keine andere gefunden. Wenn man einen seperaten Fremdschlüssel nimmt und über diesen verbindet, wird es von LibreOffice als 1-n Beziehung interpretiert und umgesetzt.
Gruss
Ogan
Ich habe die Navigationsleiste der Formulare ausgeschaltet und möchte das Formular nur für die Neueingabe verwenden. Es soll also nicht über die Datensätze navigiert werden. Aber zusätzlich möchte ich dass man den allerletzten eingegebenen Datensatz laden und ändern kann.
Ich will gar nicht im Unterformular navigieren. Ich will nur neue Daten eingeben oder den letzten Datensatz sehen. Und wenn der Button Letzter Datensatz aktiv ist und ich ihn drücke werden auch im Hauptformular die richtige Daten geladen aber im SubFormular nicht, dieser bleibt leer. Daher verstehe ich das mit dem oForm.afterLast(). nicht.
Aber ich habe mir nochmals die Eigenschaften der Formulare angeschaut , da war «nur daten hinzufügen» jeweils auf ja gesetzt, dieses habe ich auf nein geändert und jetzt funktioniert es wie erwartet. Also ist mein problem gelöst. Danke für deinen Input, das hat mich darauf gebracht.
Formulareigenschaften sind jetzt wie folgt.
MainForm:
Allgemein
Art des Inhaltes : Tabelle
Inhalt : Tabelle3
Daten hinzufügen : Ja
Daten ändern: Ja
Daten löschen: Nein
Nur Daten hinzufügen: Nein
Symbolleiste Navigation: Nein
Zyklus aktuelle Seite
Ereignisse:
Beim Laden: Standard.Module1.LadeLetztenDatensatz (document, Basic)
SubForm:
Allgemein
Art des Inhaltes : Tabelle
Inhalt : Tabelle4
Verknüpfen von: id
Verknüpfen nach: id
Daten hinzufügen : Ja
Daten ändern: Ja
Daten löschen: Nein
Nur Daten hinzufügen: Nein
Symbolleiste Navigation: Nein
Zyklus aktuelle Seite
Ereignisse:
Beim Laden: Standard.Module1.LadeLetztenDatensatz (document, Basic)
Noch eine zusätzliche Frage: Um eine 1-1 Beziehung abzubilden die primärschlüssel zweier Tabellen zu verbinden, ist das eine gute Lösung ? Habe jedenfalls keine andere gefunden. Wenn man einen seperaten Fremdschlüssel nimmt und über diesen verbindet, wird es von LibreOffice als 1-n Beziehung interpretiert und umgesetzt.
Gruss
Ogan
Re: Letzten Datensatz ins Formular Laden
Hallo Ogan,
wenn Du nur neue Daten eingeben willst, dann würde ich zumindest das Hauptformular so eingestellt lassen. Das springt ja anscheinend auf den gerade eingegebenen Datensatz zurück. Beim Unterformular kannst Du das so lassen, dass auch bestehende Daten geladen werden. Da wird ja sowieso durch das Hauptformular gefiltert.
Eine 1:1-Abbildung wird immer durch Verbindung der Primärschlüssel gemacht. So eine Konstruktion wendest Du aber nur dann an, wenn Du merkst: Bestimmte Felder in meiner Tabelle brauche ich so selten, die kann ich besser auslagern. Oft reicht mir dir Grundtabelle.
Gruß
Robert
wenn Du nur neue Daten eingeben willst, dann würde ich zumindest das Hauptformular so eingestellt lassen. Das springt ja anscheinend auf den gerade eingegebenen Datensatz zurück. Beim Unterformular kannst Du das so lassen, dass auch bestehende Daten geladen werden. Da wird ja sowieso durch das Hauptformular gefiltert.
Eine 1:1-Abbildung wird immer durch Verbindung der Primärschlüssel gemacht. So eine Konstruktion wendest Du aber nur dann an, wenn Du merkst: Bestimmte Felder in meiner Tabelle brauche ich so selten, die kann ich besser auslagern. Oft reicht mir dir Grundtabelle.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Letzten Datensatz ins Formular Laden
Hallo Robert
Was macht man wenn man alle Daten gleichermassen braucht, aber dann eine riessen Tabelle hätte mit sehr vielen Spalten. Ich dachte es wäre dann gut wenn man sie dann auf 2 oder mehreren Tabellen mit 1:1 Beziehung aufteilt.
Gruss
Ogan
Was macht man wenn man alle Daten gleichermassen braucht, aber dann eine riessen Tabelle hätte mit sehr vielen Spalten. Ich dachte es wäre dann gut wenn man sie dann auf 2 oder mehreren Tabellen mit 1:1 Beziehung aufteilt.
Gruss
Ogan
Re: Letzten Datensatz ins Formular Laden
Hallo Ogan,
ich würde die Daten in einer Tabelle zusammenhalten. Dadurch kannst Du viel besser in den Daten suchen und filtern. Der einzige Nachteil, den ich sehe, ist, wenn Du die Eingabe über die Tabelle selbst regeln willst. Ansonsten kannst Du auch für eine einzelne Tabelle mehrere Tabellenkontrollfelder in Deinem Formular haben - oder eben entsprechend viele Einzelfelder.
Gruß
Robert
ich würde die Daten in einer Tabelle zusammenhalten. Dadurch kannst Du viel besser in den Daten suchen und filtern. Der einzige Nachteil, den ich sehe, ist, wenn Du die Eingabe über die Tabelle selbst regeln willst. Ansonsten kannst Du auch für eine einzelne Tabelle mehrere Tabellenkontrollfelder in Deinem Formular haben - oder eben entsprechend viele Einzelfelder.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️