Seite 1 von 1

mehrere Tabellen in einem Formular bearbeiten

Verfasst: Mo, 01.12.2014 13:04
von Malthea
Hallo,

ich bin newbie bei der Erstellung relationaler Datenbanken und hab mich mal an der von oO bereitgestellten versucht. Das hat bis jetzt auch ganz gut geklappt, die Datenbank ist fertig und die Formulare zur Bearbeitung der Datensätze funktionieren.

Die Datenbank besteht aus 4 Haupttabellen (eine hat 1:n Relationen auf die 3 anderen), 6 Nebentabellen - haupsächlich für die Anzeige - und einer Filtertabelle.

Um die spätere Datenpflege so einfach und sicher wie möglich zu gestalten, habe ich versucht, die 4 Formulare für die Bearbeitung der Haupttabellen in einem zusammen zu fassen. Die Anzeige der Datensätze in den einzelnen Unterformularen ist korrekt, aber leider ist die Bearbeitung der Tabellen nur in dem zuerst eingefügten Unterformular möglich.

Dieses Formular ist wie folgt aufgebaut:

Das oberste Formular bildet die Filtertabelle ab und beinhaltet die Suchmasken für die einzelnen Filtertabellenfelder sowie die 4 Unterformulare für die Haupttabellen.
Jedes Unterformular beruht auf einer Abfrage der jeweiligen Tabelle und beinhaltet ein grid zur Anzeige sowie Masken zur Datenänderung und buttons zum Aktualisieren bzw Speichern und Löschen und ein weiteres Unterformular für neue Datensätze.

Wie schon weiter oben gesagt, funktioniert jedes Unterformular als eigenständiges Formular genau so wie es soll. Sobald ein 2. Unterformular, das auf einer anderen Tabelle beruht, dazu kommt, ist in diesem 2. Unterformular nur die Anzeige korrekt, aber eine sichere Bearbeitung der Datensätze unmöglich.

Ich hoffe einer von euch hat einen Tipp für mich, in welche Richtung ich weiter probieren kann.

BS win8
open Office 4.1.1
open Office Datenbank

mfg Malthea

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Mo, 01.12.2014 17:58
von RobertG
Hallo Malthea,

die Beschreibung ist so nur schwer zu durchschauen. Ich versuche einmal das Ganze etwas anders an zu gehen.
Du hast ein Formular, mit dem Du die Filtertabelle bearbeitest.
Mit der Filtertabelle möchtest Du gleichzeitig mehrere Formulare aktualisieren. So etwas geht nur, wenn die Formulare voneinander abhängig sind. Dann legst Du in das erste Unterformular einen Button zum Aktualisieren des Formulars. Beim Aktualisieren wird zuerst der Filterwert abgespeichert.
Vermutlich willst Du aber gar nicht Formulare füllen, die direkt abhängig voneinander sidn. Dann musst Du Formulare neben dem Filterformular erstellen. Der Button reicht aber erst einmal nur aus, um ein einzelnes Formular zu aktualisieren. Hier musst Du gegebenenfalls mit einem Makro nachhelfen.

Bedenke immer: Wenn Du ein Unterformular erstellst, dann ist dies mit irgendwelchen Eingaben aus dem Hauptformular verbunden. Was für mich jetzt unklar ist, wie Du ein separates Formular zur Neueingabe mit dem Unterformular verbindest, das bestehende Daten beinhaltet.

Ohne konkreteres Beispiel werden wir da sicher nicht fündig, an welcher Stelle der Knoten steckt.

Gruß

Robert

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Mo, 01.12.2014 20:03
von Malthea
Hallo RobertG,

erstmal danke für deine schnelle Antwort. Ich versuche den Aufbau und die Relationen der Tabelle und des Bearbeitungsformulars genauer zu beschreiben:
RobertG hat geschrieben:Hallo Malthea,

die Beschreibung ist so nur schwer zu durchschauen. Ich versuche einmal das Ganze etwas anders an zu gehen.
Du hast ein Formular, mit dem Du die Filtertabelle bearbeitest.
Mit der Filtertabelle möchtest Du gleichzeitig mehrere Formulare aktualisieren. So etwas geht nur, wenn die Formulare voneinander abhängig sind. Dann legst Du in das erste Unterformular einen Button zum Aktualisieren des Formulars. Beim Aktualisieren wird zuerst der Filterwert abgespeichert.
Vermutlich willst Du aber gar nicht Formulare füllen, die direkt abhängig voneinander sidn. Dann musst Du Formulare neben dem Filterformular erstellen. Der Button reicht aber erst einmal nur aus, um ein einzelnes Formular zu aktualisieren. Hier musst Du gegebenenfalls mit einem Makro nachhelfen.

Bedenke immer: Wenn Du ein Unterformular erstellst, dann ist dies mit irgendwelchen Eingaben aus dem Hauptformular verbunden. Was für mich jetzt unklar ist, wie Du ein separates Formular zur Neueingabe mit dem Unterformular verbindest, das bestehende Daten beinhaltet.

Ohne konkreteres Beispiel werden wir da sicher nicht fündig, an welcher Stelle der Knoten steckt.

Gruß

Robert
Ich habe versucht, die Unterformulare an allen möglichen Stellen "unterzubringen", aber nichts hat zu einem Erfolg geführt. Auf einer Ebene mit dem Suchformular kann ich dieses (mit meinen jetzigen Kenntnissen) nicht nutzen. Als Unterformulare des Suchformulars zeigen sie die richtig selektierten Datensätze im grid und den jeweiligen Eingabemasken an - aber wie schon gesagt - eine Bearbeitung ist nicht möglich.
Vllt hilft eine genauere Erklärung der Tabellenstruktur weiter.

Tabelle1 besteht aus 2 Spalten: Name und Attribut. Tabelle2, 3 und 4 bilden verschiedene Objektgruppen ab und haben als erste Spalte jeweils die Spalte Name. Tabelle1.Name steht zu Tabelle2.Name, Tabelle3.Name und Tabelle4.Name jeweils in einer 1:n - Relation. Tabelle2, Tabelle3 und Tabelle4 sind unabhängig von einander.


Ich hab mal versucht, den Aufbau des Formulars schematisch darzustellen:

Hauptformular - Filtertabelle
|
|______Eingabemaske Filterfeld1
. . . . . .......
. . . . . .Eingabemaske Filterfeld5
. . . . . .Unterformular1 - Abfrage Tabelle1 - benötigt Filterfeld 1
. . . . . .|______grid
. . . . . .| Eingabemasken
. . . . . .| Buttons speichern / aktualisieren / löschen
. . . . . .| Unter-Unterformular neuer Datensatz - Tabelle
. . . . . .| . . . | Eingabemasken
. . . . . .| . . . |____Button speichern
. . . . . . Unterformular2 - Abfrage Tabelle2 - benötigt Filterfeld1 und Filterfeld3
. . . . . . ....

In jedem Unterformular bewirkt der jeweilige Button aktualisieren (der ja die Filtertabelle speichert) die korrekte Anzeige der Datensätze.
Filterfeld2 wird für dieses Formular nicht unbedingt benötigt, funktioniert aber auch zum selektieren. Alle Unterformulare benötigen Filterfeld1 und Unterformular2 bis ...4 jeweils eines, das speziell für die zugrunde liegende Tabelle filtert.
RobertG hat geschrieben:....

Was für mich jetzt unklar ist, wie Du ein separates Formular zur Neueingabe mit dem Unterformular verbindest, das bestehende Daten beinhaltet.

...
Malthea hat geschrieben: Jedes Unterformular beruht auf einer Abfrage der jeweiligen Tabelle und beinhaltet ..... und ein weiteres Unterformular für neue Datensätze.
Ich vermute, dass sich das darauf bezieht - es gibt kein separates Unterformular, sondern nur ein Unterformular im Unterformular.
Wie schon gesagt - ich bin noch ziemlich unwissend, was SQL und relationale Datenbanken angeht. Meine Versuche zur Datensatzänderung, Löschen und Einfügen neuer Datensätze in einem Unterformular waren nicht von Erfolg gekrönt - den brachte erst das Auslagern der neuen Datensätze in ein eigenes Unter-Unterformular, das direkt auf der zugrunde liegenden Tabelle beruht.

Ich hoffe, das das weiter hilft und nochmal thx - Malthea

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Mo, 01.12.2014 20:57
von RobertG
Hallo Malthea,

Deine Unterformulare beziehen sich auf Abfragen. Wie sehen die aus? Ist es möglich, in den Abfragen Daten zu ändern? Oder hast Du dort vielleicht vergessen, die Primärschlüssel der entsprechenden Tabellen mit ein zu beziehen?

Gruß

Robert

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Mo, 01.12.2014 21:28
von Malthea
Hallo RobertG,

da die Unterformulare als eigenständige Formulare funktionieren, denke ich nicht, dass das an den Abfragen liegt, die ja die gleichen sind und nur die Datensätze aus der jeweiligen Tabelle unter Berücksichtigung vom Namenssuchfeld und ggf Objektsuchfeld holen. Vllt ist noch folgendes wichtig: die Tabellen 2 bis 4 haben neben dem Primärschlüssel (ersten Spalte, Name) auch noch einen Sekundärschlüssel (um doppelte Datensätze zu vermeiden).

Vielleicht kann man anders an das Problem heran gehen: Wie würdest du (bzw würdet ihr) das Problem lösen, die 4 Tabellen in einem Formular mit Suchabfrage zu bearbeiten?

lG

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Mo, 01.12.2014 21:43
von RobertG
Hallo Malthea,

alle Schlüsselfelder einer Tabelle müssen in der Abfrage enthalten sein - sonst ist sie nicht editierbar. Du brauchst doch nur einmal die Abfrage selbst zu testen: Aufrufen außerhalb des Formulars. Lässt sich da etwas löschen? Du hast die datenbank vorliegen - ich hier nicht. Ist nur ein Klick.

Stelle doch einfach Deine DB hier (ohne Daten oder mit irgendwelchen anonymisierten Daten) einmal ein - dann können wir weiter forschen.

Gruß

Robert

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Mo, 01.12.2014 22:23
von Malthea
Hallo RobertG,

"Du brauchst doch nur einmal die Abfrage selbst zu testen: Aufrufen außerhalb des Formulars. Lässt sich da etwas löschen?" Was meinst du genau mit: ausserhalb des Formulars? In der Ausgabetabelle der SQL-Ansicht kann ich nichts löschen. Und in einem eigenen Formular funktionierte sie wie sie sollte - ich hab in der Zwischenzeit nur einen sort hinzu gefügt.

Ich werd die db morgen mal hoch laden.

lG

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Di, 02.12.2014 15:49
von Malthea
Hallo @all,

ich hab die DB hochgeladen. Im Formular AnzeigeDaten funktioniert alles im grossen und ganzen - da muss nur noch etwas Feinarbeit geleistet werden.

Das Problem ist im Formular MitgliedBearbeiten zu finden, das ich auf zwei Unterformulare "gekürzt" habe. Im Unterformular BearbeitenMitglied funktioniert alles wie es soll, im Unterformular ProdStaetteBearbeiten geht leider nichts so wie es sollte.

lG Malthea

FoE_Datenbank.odb
(45.32 KiB) 205-mal heruntergeladen

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Di, 02.12.2014 20:32
von RobertG
Hallo Malthea,

das ist doch genau das, was ich beschrieben habe. Die Abfrage, die dem Formular zugrunde liegt, ist nicht bearbeitbar. Also ist auch nicht das Formular bearbeitbar, das auf die Abfrage zugreift. Dementsprechend kannst Du aus dem Unterformular "ProStaettenBearbeiten" auch nichts löschen. Du kannst sehr wohl in dem Unterformular etwas eingeben, da das von dem darüberliegenden Formular völlig getrennt ist. Nur habe ich z.B. bei einer Eingabe sofort bemerken können, dass ich damit einen anderen Datensatz aus dem darübergehenden Formular entfernt habe, nachdem ich das darüberliegende Formular aktualisiert habe. Die Zusammenhänge scheinen da nicht sehr durchdacht zu sein.
Die Abfrage "SucheProduktion" muss editierbar sein. Leider fußt diese Abfrage wieder auf einer Abfrage, nämlich "AbfrageProdmitZA", die ebenfalls nicht editierbar ist, da dort ein Primärschlüssel der beiden betroffenen Tabellen fehlt.
Füge der Abfrage "AbfrageProdmitZA" das Feld "ProduktionsstaetteTab"."Produktionsstaette" hinzu. Sie wird editierbar.
Ersteze die Abfrage "SucheProduktion" durch eine direkte Abfrage ohne Zwischenstation:

Code: Alles auswählen

SELECT "MitgliedProdTab"."MitgliedProd", "MitgliedProdTab"."Prodstaette", "MitgliedProdTab"."Anzahl", "MitgliedProdTab"."ErstellDatProd", "MitgliedProdTab"."AenderDatProd", "ProduktionsstaetteTab"."ZeitalterProd", "ProduktionsstaetteTab"."Produktionsstaette" FROM "ProduktionsstaetteTab", "MitgliedProdTab" WHERE "ProduktionsstaetteTab"."Produktionsstaette" = "MitgliedProdTab"."Prodstaette"
Auch diese Abfrage wird editierbar.
Das Formular wird editierbar.
Eine Neuzugabe bei der Produktion darf jetzt aber immer noch nicht die bestehenden Werte anzeigen. Das Formular muss entsprechend auf "Nur Daten hinzufügen" eingestellt werden. Ob die Einstellung der Listenfelder so korrekt ist wage ich nicht zu sagen. Ich habe da entsprechend Probleme mit Fremdschlüssel, Primärschlüssel u.a., da ich Texte für so etwas nicht verwende.

Gruß

Robert

Re: mehrere Tabellen in einem Formular bearbeiten

Verfasst: Di, 02.12.2014 22:26
von Malthea
Nochmal vielen Dank für deine Hilfe, RobertG.

Da wäre ich allein niemals drauf gekommen, weil ich dachte, dass ich die Tabelle ProduktionsstaetteTab durch das Setzen der Relation sauber eingefügt habe.

Und ich weiss jetzt auch, das man eine Abfrage durch einen Doppelklick starten kann - und so herausfinden kann ob sie editierbar ist.

Morgen setz ich mich nochmal an das Formular und werde natürlich eine Rückmeldung geben.

nochmal thx und lG