Seite 1 von 1

Dateneingabe im Formular in eine Tabelle

Verfasst: Mo, 28.05.2007 17:55
von Eugen
Hallo,

ich bin Anfänger und habe folgende Frage:

Ein ganz normales Datenbank-Szenario:
Es gibt drei Tabellen: Vorgang, Person, Vorgangsart.
Vorgang enthält Person_ID, Vorgangs_ID, Datum und weitere Felder.
Person enthält ID, Name, Vorname.
Vorgangsart enthält ID, Vorgangsbeschreibung.

Ich möchte nun ein Formular mit Eingabemöglichkeiten für die Tabelle Vorgang machen. Dabei ist der Inhalt der Tabelle Vorgangsart fest und kann nicht geändert werden. Anders soll es bei der Tabelle Person sein; hier soll zunächst festgestellt werden, ob die einzutragende Person bereits in der Tabelle Person enthalten ist; falls ja, soll die ID für diese Person ü

Verfasst: Di, 29.05.2007 17:03
von berndkli
Hallo Eugen

Ja das geht.
Öffne ein neues Formulardokument in der Entwurfsansicht und rufe den Formularnavigator auf. Rechtsklick auf "Formulare" => neu => Formular. Jetzt hast du ein Icon mit dem Namen "Standard". Ziehe bei markiertem Icon ein Tabellenkontrollfeld auf und verbinde es mit deiner Personen Tabelle (geht per Assistent). Dadurch hast du direkten Zugriff auf deine Personentabelle, kannst Namen usw. neu eintragen.
Rechtsklkick auf das "Standard" Icon => neu => Formular. Ziehe jetzt noch ein Tabellenkontrollfeld auf das du aber mit der Tabelle "Vorgang" verbindest. Jetzt hast du ein Unterformular, das du mit dem Hauptformular über die Personen ID verbinden kannst. Dazu Rechtsklick auf das Unterformular Icon => Eigenschaften. Auf dem Reiter "Daten" bei "Verknüpfen von /nach" auf das Feld mit den 3 Punkten klicken und die Spalten auswählen die verknüpft werden sollen.
Deine "Vorgang" Tabelle braucht übrigens auch noch eine eigene Primärschlüsselspalte. Da stand in deiner Beschreibung nix von drin.
Die ID aus der Tab. "Vorgangsart" bekommst du über ein Listenfeld:
Das Unterformularicon markieren und das Listenfeld aufziehen. Gib im folgenden Dialog die ID Spalte der "Vorgangsart" Tabelle als Quelle an und die Vorgangs_ID Spalte der "Vorgang" Tabelle als Ziel. Fertig.
Der Eintrag aus dem Listenfeld wird erst in die "Vorgang" Tabelle geschrieben wenn der Datensatz gespeichert wird.

Viel Spass

Bernd

Verfasst: Do, 31.05.2007 11:15
von Toastbrot
Hallo Bernd,
danke für deine Antwort. Den Ansatz verstehe ich, die genaue Umsetzung jedoch nicht.
Es soll also ein leere Formular in der Entwurfsansicht erstellt werden. OK
Dann soll darin ein Tabellenkontrollfeld eingefügt werden. OK
Dieses Feld (oder besser das Formular) mit der Personen-Tabelle verbinden. OK
Dann noch ein Tabellenkontrollfeld erstellen. Im gleichen Formular? Wie erstelle ich das Subformular?
Und wenn ich das Subformular drin habe, habe ich ja trotzdem erst 2 der 3 Tabellen integriert. Ich würde mich über eine etwas genauere Beschreibung freuen! Schonmal vielen Dank!

Verfasst: Do, 31.05.2007 17:27
von berndkli
Hallo

Öffne den Formular-Navigator (in der Formular Entwurf Symbolleiste).
Ganz oben steht "Formular", daneben ein Icon/Symbol, das aussieht wie ein Ordner mit einer Karteikarte. Bei dir sollte jetzt darunter ein Icon zu sehen sein, das aussieht wie nur eine Karteikarte und daneben steht "Standard". Das ist das Formular das dein Tabellenkontrollfeld (Table Control - ist in das Formular Icon eingehangen) mit der Tabelle Personen verbindet.
Jetzt mit rechts auf das Formular Icon oder "Standard" klicken=> im Kontext menü auf "neu" dann "Formular". Jetzt hast du ein Unterformular. Benenne es per Rechtsklick=> Umbenennen in "Standard2" um.
Ziehe bei markiertem "Standard2" Icon ein Tabellenkontrollfeld auf und verbinde es (mit dem Assistenten) mit deiner Tabelle "Vorgang".
Jetzt wieder Rechtsklick in das Standard2 Icon => Eigenschaften. Auf dem Reiter "Daten" bei "Verknüpfen von /nach" auf das Feld mit den 3 Punkten klicken und die Spalten auswählen die verknüpft werden sollen, also von der Tabelle "Personen" die ID Spalte und von der Tabelle "Vorgang" die ID_Personen Spalte.
Jetzt fehlt noch die ID aus der "Vorgangsart" Tabelle.
Markiere das Standard2 Icon und ziehe ein Listenfeld auf. Der Assistent fragt welche Tabelle die Grundlage für den Listeninhalt sein soll; in deinem Fall "Vorgangsart". Dann kannst du auswählen welches Feld der Tabelle dargestellt werden soll. Entscheide dich für "Vorgangsbeschreibung".
Im dritten Schritt fragt er nach der Feldverknüpfung. In der Wertetabelle ("Vorgang") gibts du das Feld Vorgangs_ID an und für die Listentabelle ("Vorgangsart") das Feld ID. Schalte den Bearbeitungsmodus aus.
Wenn du jetzt im Tabellenkontrollfeld "Personen" auf einen Datensatz klickst, wird die entsprechende ID der "Personen" Tabelle in die ID_Personen Spalte der Tabelle "Vorgang" geschrieben. Wähle dann im Listenfeld die Vorgangsart aus und speichere den Datensatz (unten in der Datensatz Navigationsleiste, nicht zu verwechseln mit dem Datei speichern Icon). In der Vorgangs_ID Spalte steht jetzt die zur Vorgangsbeschreibung entsprechende ID.

Wenn noch was unklar ist, frag nochmal nach

Gruss Bernd

Verfasst: Do, 31.05.2007 19:03
von Toastbrot
Hallo,
vielen Dank für deine schnelle und auf den ersten Blick auch sehr Ausführliche Anleitung! Gerade habe ich wenig Zeit, werde es aber später auf jeden Fall ausprobieren und melde mich dann wieder hier...

Verfasst: Di, 05.06.2007 11:36
von Eugen
Hallo Bernd,

komme erst jetzt dazu, mich für deine Hilfe zu bedanken. Ich denke, dass mein Problem damit gelöst ist.

Also, noch mal vielen Dank.

Gruß Eugen.

Re: Dateneingabe im Formular in eine Tabelle

Verfasst: Fr, 08.06.2007 09:53
von Toastbrot
Hallo Bernd,
ich versuche gerade deine Anleitung umzusetzen, jedoch verstehe ich diese so, dass auch sie nur dazu verwendet werden kann, jeweils einen Datensatz mit einem anderen zu verknüpfen und nicht direkt mehrere auf einen Schlag, oder?! Diese Lösung habe ich bereits funktionsfähig. Sogar ohne UNterformular, lediglich mit 2 vorgefertigten Abfragen. Der Vorteil hierbei ist, dass ich 2 Auswahlfelder habe und nicht ein Tabellenkontrollfeld nutzen muss. Bei Interesse kann ich diesen Weg hier auch erläutern.

Re: Dateneingabe im Formular in eine Tabelle

Verfasst: Fr, 08.06.2007 17:11
von berndkli
Hallo Eugen

Was meinst du mit
und nicht direkt mehrere auf einen Schlag
Wo und wie willst du mit welchen Tabellen mehrere Datensätze verknüpfen?

Gruss Bernd

Re: Dateneingabe im Formular in eine Tabelle

Verfasst: Fr, 08.06.2007 18:40
von Toastbrot
Hallo,
ich habe in meinem Szenario Personen, Mannschaften und deren Zuordnung. Eine Person kann in mehreren Mannschaften sein, bis jetzt kann ich immer einer Person eine Mannschaft zuordnen und im nächsten Schritt der gleichen Person nochmal eine andere Mannschaft. (Also in etwa das gleiche, wie du hier beschrieben hast) Ich möchte aber eine Person wählen und dann direkt mehrere Mannschaften dazu selektieren. Dazu müssen dann N Datensätze für die Zuordnung geschrieben werden. Wahrscheinlich benötigt man dazu aber ein Script, Makro o.ä. ?!

Re: Dateneingabe im Formular in eine Tabelle

Verfasst: Fr, 08.06.2007 19:01
von berndkli
Hallo Eugen

Heissen deine Tabellen immernoch Personen, Vorgang, Vorgangsart? Wenn ja, was ist was, also z.B. Vorgang = Manschaft?
Ich möchte aber eine Person wählen und dann direkt mehrere Mannschaften dazu selektieren.
Wie soll das Markieren von statten gehen? Willst du eine Liste aller Manschaften und daraus die ausgewählten mit einem Markierfeld markieren und die sollen dann der Person zudeordnet werden, ist es das?

Gruss Bernd

Re: Dateneingabe im Formular in eine Tabelle

Verfasst: Sa, 09.06.2007 15:51
von Eugen
Hallo Bernd,

nur zur Klarstellung:

Die letzten Fragen kamen nicht von mir, sondern von Toastbrot: Personen, Vorgang, etc. waren meine Tabellen, Personen, Mannschaften etc. die von Toastbrot.

MfG

Eugen.

Re: Dateneingabe im Formular in eine Tabelle

Verfasst: Sa, 09.06.2007 17:45
von berndkli
Hallo Eugen

Danke für die Aufklärung .

Gruss Bernd

Re: Dateneingabe im Formular in eine Tabelle

Verfasst: So, 10.06.2007 21:44
von Toastbrot
Hallo,
tut mir leid, dass es hier zu irretationen gekommen ist. Dass die Namen hier im neuen Forum rechts stehen halte ich für sehr bedenklich *räusper* ;)

Naja, zurück zum Thema: Wie bereits erwähnt, habe ich 2 Tabellen mit Datensätzen (Mannschaften und Personen) und eine mit der Zuordnung von jeweils 1 Mannscahft zu 1 Person. Eine Person kann jedoch in mehreren Mannscahften sein, dazu müssen dann N Datensätze vorhanden sein. Ich möchte im Formular "in einem Rutsch" alle Mannschaften für eine Person auswählen. Dazu würde ich gerne eine Listenbox mit Mehrfachselektion bzw. eine Kombobox verwenden.

Ich habe bereits ein Forumlar mit Listenfeld, funktioniert auch alles bis auf das, dass ich jeweils nur eine Mannschaft auswählen kann, da ja mit einem "normalen" Formular nur ein Datensatz geändert wird.

Re: Dateneingabe im Formular in eine Tabelle

Verfasst: Mo, 11.06.2007 16:28
von berndkli
Hallo Toastbrot

Für Listbox und Mehrfachselektion brauchst du Makros.
Die Alternative sind Tabellenkontrollfelder. Erstelle eins für die Spielertabelle und eins für die Zuordnungstabelle.Im Formular Navigator hängst du das Formular der Zuordnungstabelle in das der Spielertabelle ein und verbindest sie über die Spieler ID.
Im Tabellenkontrollfeld der Zuordnungstabelle Rechtsklick auf den Spaltenkopf der Spalte in die die Mannschaften eingetragen werden sollen => Ersetzen durch=> Listenfeld. Im Kontrollfeld der Spalte (Rechtsklick=> Spaltenkopf=> Spalte...)unter dem Reiter Daten bei "Art des Listeninhalts" SQL auswÄhlen, bei "Listeninhalt"schreibst du folgenden SQL Befehl

Code: Alles auswählen

SELECT "Manschaftsspalte","Manschaftsspalte" FROM "Mannschaftstabelle"
In der Zuordnungstabelle hast du hast du jetzt in jeder Zeile ein Listenfeld aus dem du eine Mannschaft auswählen kannst die dann dem in der Spielertabelle angewähltem Spieler zugeordnet wird.

Gruss Bernd