Formular aus mehreren Tabellen erstellen

stud3

Aktives Mitglied
hallo,
mich würde interessieren, wie kann man ein Formular mit Hilfe von nur bestimmten Spalten aus verschiedenen Tabellen erstellen, bzw. wie funktioniert es beim Insert, Update und Delete, wenn es um mehrere Tabellen geht.
Was für eine Vorgehensweise sollte ich folgen um ein Formular aus mehreren Tabellen zu erstellen? sollte ich mit Views arbeiten? für eine Antwort wäre ich dankbar
 
Also das Formular kann so aussehen, wie man will. Dem kommt es nicht drauf an, welche Felder aus welchen Tabellen es darstellt. Lediglich die Relation zwischen den Tabellen hat einen gewissen Einfluss, da bei 1:n-Beziehungen die n-Tabelle mehrere entsprechende Datensätze enthalten kann. Das Formular muss in diesem Fall das Hinzufügen/Entfernen von Detaildatensätzen unterstützen.

Für das Holen der Daten (SELECT) könnte eine View verwendet werden, was aber nur bei 1:1-Beziehungen Sinn macht. Für das Einfügen resp. Ändern von Datensätzen würde ich keine View verwenden, da bei INSERT/UPDATE nur eine der Tabellen, die der View zugrunde liegen, gleichzeitig geändert werden kann. Es muss also sowieso für jede Tabelle ein separates SQL abgesetzt werden, und da ist es übersichtlicher, das gleich für die Tabelle zu machen und nicht den Umweg über eine View zu nehmen.

Tricky wirds mit Auto-Werten, wenn ein neuer Datensatz für die 1-Seite einer Beziehung eingefügt wird, und danach noch ein oder mehrere Datensätze für die n-Seite. In der n-Seite muss dann der Schlüsselwert der 1-Tabelle gespeichert werden, und wenn das ein Autowert ist, muss man den erstmal herausfinden. Beim SQL Server geht das mit der Funktion IDENT_CURRENT.

Griessli
Irene
 
hallo Irene,
dane für den Tip, aber ich komme mit Formularen nicht ganz klar. Ich gebe Ihnen ein Beispiel. Vermuten wir mal, dass ich 2 Tabellen habe, die eine 1:n Beziehung haben:

Tabelle Kunde:

Kunden_ID Kunde GruppenID KstStellenKnoten
1 Mayer 2 5
2 Müller 3 5

Tabelle Vertrag:

VID Vertragsname Vertragsversion Vertragsdatum Kunden_ID
1 fff 33 14.12.04 1
2 hhh 44 15.01.05 1 (sorry, dass es so aussieht)

In meinem Formular will ich alle Felder der Tabelle Vertrag und nur die Felder Kunde und GruppenID der Tabelle Kunde einsetzen, wobei ich die beiden durch select und joins verknüpfen würde. Was würde mit der Tabelle Kunde passieren, wenn ich in der Tabelle Vertrag den Datensatz mit der VID 1 lösche oder ändere?, Gruß.
 
Hallo

Wohl nichts. Um hier aber eine qualifizierte Antwort geben zu können, wäre es besser, wenn Du das SQL Statement, mit dem Du den Record löschen willst publizieren würdest. ich nehem an dass das in etwa so aussieht:

DELETE FROM 'Vertrag' WHERE 'VID' = '1' LIMIT 1

Dann ändert sich nichts in der Tabelle Kunden.

Greez
 
QUOTE (pippolino @ Mi 9.2.2005, 17:58)DELETE FROM 'Vertrag' WHERE 'VID' = '1' LIMIT 1

Das LIMIT gibts nicht in SQL Server, und da die VID ein Schlüsselfeld sein dürfte, kann man das ja weglassen.

Ansonsten stimme ich Pippolino zu; an der Tabelle Kunde ändert sich dadurch nichts. Der 1-Seite ist es egal, was an ihren n-Records geändert wird. Die Relation "zieht" von der n-Seite her.

Ein Problem könnte es höchstens dann geben, wenn die Daten mittels Join geholt und zwischengespeichert (z.B. in der Session) werden. Wenn danach ein Datensatz gelöscht oder auch geändert wird, spiegeln die zwischengespeicherten Daten natürlich nicht mehr den aktuellen Datenstand. Jeder Zugriff auf gelöschte Datensätze führt dann zu einem Fehler. Aber das ist ein grundsätzliches Problem in Multiuser-Umgebungen.

Griessli
Irene
 
Zurück
Oben