Guten Tag liebe OpenOffice Gemeinde,
Meine Situation:
Ich habe eine Wareneingangs-Warenausgangs Datenbank anglegt die per Formulare gefüllt werden soll, nur das die Formulare nicht mitspielen -.- .
Mein Problem ist folgendes:
Ich habe zwei Tabellen 'Produkt' und 'Bearbeitet', beide sind über die BeaID verknüpft. In 'Produkt' wurden schon Daten eingegeben und 'Bearbeitet' ist leer. Jetzt ist es mein Ziel durch ein Formular Daten in 'Bearbeitet' hinzuzufühgen und BeaID in 'Produkte' zu "updaten", für das jeweilige Produkt. Ich habe dazu bis jetzt den Formular Assistenten genutzt, da ich keine Erfahrungen mit Formularen besitze, doch dieser legt mir nur neue Datensätze in der Tabelle 'Produkte' an. Ich habe auch schon verschiedene Einstellungen ausprobiert doch ohne Erfolge.
Die Tabellen:
Produkt(ProID(PK),Seriennr,Produkbez,Version, Kommentar, BeaID(FK))
Bearbeitet(BeaID(PK),bearbeitet, Beadat, Bear von)
Also die Frage die sich mir stellt ist wie sage ich dem Formular das ich die BeaID in 'Produkt' haben will ? per UPDATE oder INSERT INTO ??
MfG und danke im vorraus BNO
[gelöst] Datensätze aus zwei Tabellen mit einem Formular
Moderator: Moderatoren
[gelöst] Datensätze aus zwei Tabellen mit einem Formular
Zuletzt geändert von BNO am Di, 28.08.2012 11:14, insgesamt 1-mal geändert.
Re: Datensätze aus zwei Tabellen mit einem Formular bearbeit
Hallo BNO,
So, wie die Tabellenkonstruktion aussieht, gehst Du davon aus, dass zu einem Datensatz von "Bearbeitet" mehrere Datensätze von "Produkt" zugeordnet werden können. Ich würde zwar eher umgekehrt denken (ein Produkt hat mehrere Bearbeitungsstufen), aber das würde bedingen, dass in "Bearbeitet" eine "ProID(FK)" autauchen würde und nicht in "Produkt" eine "BeaID(FK)".
Bei Deiner Tabellenkonstruktion:
Bearbeitet ist das Hauptformular, als Unterformular wird Produkt ausgewählt. Wenn Du die Beziehungen vordefiniert hast, dann schlägt der Formularassistent genau diesen Weg vor.
Wenn Du diese Konstruktion hast, dann kannst Du beide Tabellen bearbeiten. Die Konstruktion sorgt dafür. dass die "BeaID" an "Produkt" weitergegeben wird.
Deine Konstruktion ist hier allerdings etwas anders gestrickt. Du möchtest einen Datensatz aus "Bearbeitet" an "Produkt" weitergeben. Dies geht über Listenfelder, die Du in ein Formular von "Produkt" einbaust. Nur kannst Du die Listenfeldinhalte natürlich nicht in diesem Formular bearbeiten.
Eine Version "Produkt" als Hauptformular und "Bearbeitet" als Unterformular geht nicht, weil die Beziehung bei Dir genau anders herum geht. Ich gehe hier von einem Denkfehler beim Erstellen der Datenbank aus. Denn es wäre bei den momentanen Tabellen kein Problem, Datensätze von "Bearbeitet" vorher zu erstellen und "Produkt" anschließend zuzuweisen. Du hast aber lauter Datensätze von "Produkt" vorliegen - das drückt für mich aus, dass auch Du eigentlich davon ausgehst, dass in "Bearbeitet" eine "ProID" als Fremdschlüssel gehört und nicht in "Produkt" eine "BeaID".
Gruß
Robert
Der erste Schritt ist, die Beziehungen zu klären - direkt unter Extras → Beziehungen.BNO hat geschrieben: Produkt(ProID(PK),Seriennr,Produkbez,Version, Kommentar, BeaID(FK))
Bearbeitet(BeaID(PK),bearbeitet, Beadat, Bear von)
So, wie die Tabellenkonstruktion aussieht, gehst Du davon aus, dass zu einem Datensatz von "Bearbeitet" mehrere Datensätze von "Produkt" zugeordnet werden können. Ich würde zwar eher umgekehrt denken (ein Produkt hat mehrere Bearbeitungsstufen), aber das würde bedingen, dass in "Bearbeitet" eine "ProID(FK)" autauchen würde und nicht in "Produkt" eine "BeaID(FK)".
Bei Deiner Tabellenkonstruktion:
Bearbeitet ist das Hauptformular, als Unterformular wird Produkt ausgewählt. Wenn Du die Beziehungen vordefiniert hast, dann schlägt der Formularassistent genau diesen Weg vor.
Wenn Du diese Konstruktion hast, dann kannst Du beide Tabellen bearbeiten. Die Konstruktion sorgt dafür. dass die "BeaID" an "Produkt" weitergegeben wird.
Deine Konstruktion ist hier allerdings etwas anders gestrickt. Du möchtest einen Datensatz aus "Bearbeitet" an "Produkt" weitergeben. Dies geht über Listenfelder, die Du in ein Formular von "Produkt" einbaust. Nur kannst Du die Listenfeldinhalte natürlich nicht in diesem Formular bearbeiten.
Eine Version "Produkt" als Hauptformular und "Bearbeitet" als Unterformular geht nicht, weil die Beziehung bei Dir genau anders herum geht. Ich gehe hier von einem Denkfehler beim Erstellen der Datenbank aus. Denn es wäre bei den momentanen Tabellen kein Problem, Datensätze von "Bearbeitet" vorher zu erstellen und "Produkt" anschließend zuzuweisen. Du hast aber lauter Datensätze von "Produkt" vorliegen - das drückt für mich aus, dass auch Du eigentlich davon ausgehst, dass in "Bearbeitet" eine "ProID" als Fremdschlüssel gehört und nicht in "Produkt" eine "BeaID".
Gruß
Robert
Re: Datensätze aus zwei Tabellen mit einem Formular bearbeit
Guten Morgen,
Danke Robert für die schnelle Antwort.
Also ich gehe bei meiner Tabellenkonstruktion davon aus das in 'Bearbeiten' und in 'Produkt' viele Datensätze stehen nur das viele Produkte von einer Person an einem Datum nur einmal bearbeitet werden. Das 'Bearbeiten' das Hauptformular und 'Produkt' das Unterformular war mein Erster Gedanke nur legt er mir hier nur einen neuen Datensatz an :/ und ich benutze das Listenfeld um mir die Seriennr anzeigen zu lassen.
Gruß
BNO
Danke Robert für die schnelle Antwort.
Also ich gehe bei meiner Tabellenkonstruktion davon aus das in 'Bearbeiten' und in 'Produkt' viele Datensätze stehen nur das viele Produkte von einer Person an einem Datum nur einmal bearbeitet werden. Das 'Bearbeiten' das Hauptformular und 'Produkt' das Unterformular war mein Erster Gedanke nur legt er mir hier nur einen neuen Datensatz an :/ und ich benutze das Listenfeld um mir die Seriennr anzeigen zu lassen.
Gruß
BNO
Re: Datensätze aus zwei Tabellen mit einem Formular bearbeit
Ok ich hab das Problem nach deinem Lösungsvorschlag gelöst Robert vielen Danke nochmal.
Ich habe die Seriennummer in 'Bearbeiten' hinzugefüht usw. und es hat geklappt
.Außerdem habe ich unnütze Datenfelder rausgeworfen bzw. durch sinnvolle ersetzt.
Nur habe ich ein neues Problem :/. Nun möchte ich für den Warenausgang ein Formular erstellen, dass ein Paketdatensatz erstellt und man die Produkte per Mehrfachauswahl "hinzufügen" kann also sprich das die Paketnummer als FK in Produkte geschrieben wird, die Tabellen sind schon erstellt und sehen wie folgt aus:
Produkt(Seriennummer(Pk), Produktbezeichnung, Version, Kommentar, ParketEinnummer(FK),ParketAusnummer(FK))
ProduktAus(ProduktAusnummer(PK), Ausgangsdatum, Sender, Empfaenger, Kommentar)
MfG BNO
Ich habe die Seriennummer in 'Bearbeiten' hinzugefüht usw. und es hat geklappt

Nur habe ich ein neues Problem :/. Nun möchte ich für den Warenausgang ein Formular erstellen, dass ein Paketdatensatz erstellt und man die Produkte per Mehrfachauswahl "hinzufügen" kann also sprich das die Paketnummer als FK in Produkte geschrieben wird, die Tabellen sind schon erstellt und sehen wie folgt aus:
Produkt(Seriennummer(Pk), Produktbezeichnung, Version, Kommentar, ParketEinnummer(FK),ParketAusnummer(FK))
ProduktAus(ProduktAusnummer(PK), Ausgangsdatum, Sender, Empfaenger, Kommentar)
MfG BNO
Re: Datensätze aus zwei Tabellen mit einem Formular bearbeit
Hallo BNO,
Grundregel: Hauptformular zu Unterformular haben das Verhältnis 1:n. Listenfelder zu einer Tabelle haben das Verhältnis n:1 - in Deinem speziellen Fall aber das Verhältnis 1:1. Eigentlich dürfte also die Beschickung des Listenfeldes bei jedem Datensatz neu bestimmt werden (geht über Makro), so dass nur die Datensätze noch auftauchen, die noch nicht vergeben sind.
Gruß
Robert
Dein Hauptformular ist "ProduktAus". Ich nehme an, dass die Nummer in der Tabelle "Produkt" auch "ProduktAusnummer(FK)" heißen wird, so dass der Primärschlüssel über das Formular an das Unterformular weitergegeben wird. Das Unterformular soll am besten eine weitere (von Dir nicht geplante) Tabelle bestücken, in der nur die Seriennummer(als Primärschlüssel) und die ProduktAusnummer steht. In dem Unterformular arbeitest Du mit einem Tabellenkontrollfeld. Die Seriennummer wird durch ein Listenfeld weitergegeben. Dadurch, dass Du diese Nummer als Primärschlüssel definierst wird ausgeschlossen, dass das gleiche Produkt mehrmals auftaucht. Ob Du in dem Unterformular noch mehr unterbringen willst ist dem geschuldet, was vorher schon in der Tabelle "Produkt" steht. Da der Primärschlüssel in der neuen Tabelle und der alten Produkt-Tabelle gleich ist, kannst Du hier noch Felder hinzufügen, die jetzt erst ausgefüllt werden sollen, aber eigentlich zum Produkt gehören.BNO hat geschrieben: Nur habe ich ein neues Problem :/. Nun möchte ich für den Warenausgang ein Formular erstellen, dass ein Paketdatensatz erstellt und man die Produkte per Mehrfachauswahl "hinzufügen" kann also sprich das die Paketnummer als FK in Produkte geschrieben wird, die Tabellen sind schon erstellt und sehen wie folgt aus:
Produkt(Seriennummer(Pk), Produktbezeichnung, Version, Kommentar, ParketEinnummer(FK),ParketAusnummer(FK))
ProduktAus(ProduktAusnummer(PK), Ausgangsdatum, Sender, Empfaenger, Kommentar)
Grundregel: Hauptformular zu Unterformular haben das Verhältnis 1:n. Listenfelder zu einer Tabelle haben das Verhältnis n:1 - in Deinem speziellen Fall aber das Verhältnis 1:1. Eigentlich dürfte also die Beschickung des Listenfeldes bei jedem Datensatz neu bestimmt werden (geht über Makro), so dass nur die Datensätze noch auftauchen, die noch nicht vergeben sind.
Gruß
Robert
Re: Datensätze aus zwei Tabellen mit einem Formular bearbeit
Guten Morgen,
Nochmals Danke für deinen Antwort Robert.
wie soll die Tabelle dann aussehen die ich nicht geplant habe ?
so: ProduktAus(Seriennummer(PK), PaketAusnummer(FK)) ?
BNO
Nochmals Danke für deinen Antwort Robert.
wie soll die Tabelle dann aussehen die ich nicht geplant habe ?
so: ProduktAus(Seriennummer(PK), PaketAusnummer(FK)) ?
wie ist das gemeint. Hab noch nicht so viel mit Formularen gearbeitet und ich benutze auch den Assisteneten dazuIn dem Unterformular arbeitest Du mit einem Tabellenkontrollfeld. Die Seriennummer wird durch ein Listenfeld weitergegeben.

BNO
Re: Datensätze aus zwei Tabellen mit einem Formular bearbeit
Hallo BNO,
Das Feld "Seriennummer" wird Primärschlüssel dieser Tabelle, so dass es auch nur einmal gewählt werden kann.
Für Hauptformular und Unterformular werden vom Assistenten Anordnungen vorgeschlagen. Die Standardeinstellung ist die Anordnung in Tabellenkontrollfeldern. Beim Unterformular würde ich das auf jeden Fall so belassen.
Wählst Du jetzt im Hauptformular ein Paket, so kannst Du es im Unterformular mit den Produkten bestücken. Direkt nach der Beendigung des Assistenten musst Du aber leider die Seriennummern per Hand eingeben. Und daran würde ich weiter arbeiten: Statt der fehleranfälligen Handeingabe ein Listenfeld bauen, in dem auch mehr Informationen als nur die Seriennummer eingebaut werden können, das aber die Seriennummer an die dem Formular zugrundeliegende Tabelle weitergibt.
Vielleicht hilft Dir bei dem Ganzen doch ein Blick in LO-Handbuch, besonders das Kapitel zur Formularerstellung:
http://wiki.documentfoundation.org/imag ... re_V35.pdf
Gruß
Robert
Wenn ich die Tabellen richtig lese, werden dort die beiden Primärschlüssel der Tabellen "Produkt" und "ProduktAus" zusammengeführt. Obige Tabelle dürfte also nicht auch "ProduktAus" heißen. Ich nenne sie jetzt einmal "Produkt_Paket". "Seriennummer" ist der Primärschlüssel in "Produkt", "ProduktAusnummer" ist der in "ProduktAus" - also nicht "PaketAusnummer". Aber vielleicht verstehe ich da ja auch die Tabelle "ProduktAus" falsch - schließlich hast Du zwei Fremdschlüssel in Deiner ursprünglichen Tabelle "Produkt" untergebracht, die sich auf "Paket" beziehen - wovon ich erst einmal nichts weiß.BNO hat geschrieben: wie soll die Tabelle dann aussehen die ich nicht geplant habe ?
so: ProduktAus(Seriennummer(PK), PaketAusnummer(FK)) ?
Das Feld "Seriennummer" wird Primärschlüssel dieser Tabelle, so dass es auch nur einmal gewählt werden kann.
Du hast ein Hauptformular, basierend auf der Tabelle "ProduktAus". Hier fügst Du im Assistenten ein Unterformular hinzu. Die richtige Tabelle wird nur dann vorgeschlagen, wenn Du vorher die Beziehungen geklärt hast. Ansonsten musst Du die Tabelle wählen: "Produkt_Paket". Verbindung zwischen dem Hauptformular und dem Unterformular ist das Feld "ProduktAusnummer", das in beiden Tabellen existiert, in der einen außerdem der Primärschlüssel ist.BNO hat geschrieben:wie ist das gemeint. Hab noch nicht so viel mit Formularen gearbeitet und ich benutze auch den Assistenten dazuIn dem Unterformular arbeitest Du mit einem Tabellenkontrollfeld. Die Seriennummer wird durch ein Listenfeld weitergegeben.![]()
Für Hauptformular und Unterformular werden vom Assistenten Anordnungen vorgeschlagen. Die Standardeinstellung ist die Anordnung in Tabellenkontrollfeldern. Beim Unterformular würde ich das auf jeden Fall so belassen.
Wählst Du jetzt im Hauptformular ein Paket, so kannst Du es im Unterformular mit den Produkten bestücken. Direkt nach der Beendigung des Assistenten musst Du aber leider die Seriennummern per Hand eingeben. Und daran würde ich weiter arbeiten: Statt der fehleranfälligen Handeingabe ein Listenfeld bauen, in dem auch mehr Informationen als nur die Seriennummer eingebaut werden können, das aber die Seriennummer an die dem Formular zugrundeliegende Tabelle weitergibt.
Vielleicht hilft Dir bei dem Ganzen doch ein Blick in LO-Handbuch, besonders das Kapitel zur Formularerstellung:
http://wiki.documentfoundation.org/imag ... re_V35.pdf
Gruß
Robert
Re: Datensätze aus zwei Tabellen mit einem Formular bearbeit
Hallo Robert,
Ja ich hab bei der vergabe der Tabellennamen nicht aufgepasst meine schuld !
Also ich hab die Tablle "ProduktPaketAus_Tab", wie du's erklärt hast, erstellt und das Formular nach deinen Vorgaben angefertigt.
Und es funktioniert!!
und vielen vielen Danke für deinen Hilfe
BNO
Ja ich hab bei der vergabe der Tabellennamen nicht aufgepasst meine schuld !
Also ich hab die Tablle "ProduktPaketAus_Tab", wie du's erklärt hast, erstellt und das Formular nach deinen Vorgaben angefertigt.
Und es funktioniert!!
und vielen vielen Danke für deinen Hilfe
BNO