Daten in n:m-Verbindung eingeben
Timbo
- datenbank
Hallo zusammen,
ich brauche einmal eure Hilfe. Ich habe eine kleine Datendank, um die Noten meiner Studenten zu verwalten. Die bisherige Architektur funktioniert super (bei bestehenden Daten). Eigentlich habe ich recht gute Datenbankerfahrungen, aber hier stehe ich echt auf dem Schlauch ...
Meine Frage bezieht sich auf folgenden Ausschnitt, der aus 3 Tabellen besteht:
-----------------
|Klausurteilnehmer| (Welcher Student nimmt an welcher Klausur teil)
|-----------------|
|TeilnehmerID |
|FK_MatrikelNr |
|FK_KlausurID |
-----------------
-----------------
|Klausuraufgabe | (Welche Aufgaben hat die Klausur)
|-----------------|
|AufgabeID |
|FK_KlausurID |
|AufgabeNummer |
|Aufgabenstellung |
|möglichePunkte |
-----------------
-----------------
|Klausurantworten | (Wie hat der Student die Aufgabe beantwortet) (m:n Tabelle)
|-----------------|
|AntwortID |
|FK_AufgabeID |
|FK_TeilnehmerID |
|erreichtePunkte |
|Kommentar |
-----------------
Meine Problem hat nun mit dem Anlegen neuer Klausuren zu tun:
Als erstes gebe ich ein, welcher Student an der neuen Klausur teilgenommen hat (Tabelle 1). Danach definiere ich die Aufgaben, die es in der Klausur gibt (Tabelle 2).
Somit ist eigentlich klar, daß jeder Klausurteilnehmer jede Aufgabe beantworten muss. Doch Tabelle 3 ist natürlich noch "leer".
Im Access-Formular habe ich (Tabelle 2) als Hauptformular und Tabelle 3 als Unterformular, wo ich eigentlich nur noch die erreichten Punkte eintragen möchte, doch durch die fehlenden Einträge in Tabelle 3 ist dies nicht möglich. Ich muss erneut den Klausurteilnehmer eintragen.
Natürlich kann ich per VBA-Skript die Datensätze per "Knopfdruck" in Tabelle 3 erzeugen lassen, doch frage ich mich, ob das nicht erfacher geht.
Ich hatte schon an einen LEFT-JOIN gedacht. Dadurch erhalte ich zwar die Kombinationen, aber beim LEFT-JOIN sind die Daten ja nicht editierbar.
Kann mir jemand einen Tipp geben?
Vielen Dank und schönen Gruß
Tim
Tach!
|Klausurantworten | (Wie hat der Student die Aufgabe beantwortet) (m:n Tabelle)
|-----------------|
|AntwortID |
|FK_AufgabeID |
|FK_TeilnehmerID |
|erreichtePunkte |
Kommentar Im Access-Formular habe ich (Tabelle 2) als Hauptformular und Tabelle 3 als Unterformular, wo ich eigentlich nur noch die erreichten Punkte eintragen möchte, doch durch die fehlenden Einträge in Tabelle 3 ist dies nicht möglich. Ich muss erneut den Klausurteilnehmer eintragen.
Du willst Tabelle 3 bearbeiten, also muss diese die Haupttabelle im Formular sein und die Aufgaben und Teilnehmer jeweils Lookup-Felder (oder wie auch immer das bei Access heißt). Es ist dann jedoch ermüdend und potentiell fehlerträchtig, beide Werte für jede einzelne Antwort auszuwählen.
Natürlich kann ich per VBA-Skript die Datensätze per "Knopfdruck" in Tabelle 3 erzeugen lassen, doch frage ich mich, ob das nicht erfacher geht.
Schau mal vom Standpunkt des Anwenders aus. Der sollte es so einfach wie möglich haben und dem sollte sich das Programm unterordnen. Eine Kreuztabelle à la Excel hilft bei der Übersicht, wenn du Ergebnisse vergleichen willst. Aber für das Eingeben reicht es, wenn du eine Spalte (oder Zeile - je nach Anordnung) mit allen Antwort für einen Studenten darstellst. Du könntest also (auch ohne vorhandene Tabelle-3-Datensätze) für einen gerade gewählten Studenten und alle Aufgaben der Klausur die beiden Eingabefelder für Punkte und Kommentar darstellen. Dazu kannst du bereits bestehende Daten aus Tabelle 3 heranziehen, zum Beispiel um sie editieren zu können. Wenn es aber keine gibt, dann muss das Feld eben leer angezeigt werden.
Ich hatte schon an einen LEFT-JOIN gedacht. Dadurch erhalte ich zwar die Kombinationen, aber beim LEFT-JOIN sind die Daten ja nicht editierbar.
Joins sind für Abfragen. Für das Eingeben sind Lookup-Felder da.
dedlfix.
vielen Dank für die Antwort
Daraus entnehme ich, daß ich tatsächlich keine Möglichkeit habe das ganze zB über eine geschickte Abfrage zu lösen.
Ich habe das ganze jetzt so gelöst, daß automatisch nach einem neuen Teilnehmer bzw. nach einer neuen Aufgabe ein VBA-Skript startet, welches sämtliche neuen Kombinationen in Tabelle 3 hinzugefügt werden.
Schönen Gruß
Tim
Tach!
Daraus entnehme ich, daß ich tatsächlich keine Möglichkeit habe das ganze zB über eine geschickte Abfrage zu lösen.
Es gibt üblicherweise keine Abfrage, die nicht vorhandene Daten liefert. Wenn du solche brauchst, musst du sie dir vorher mit irgendwelchen Default-Werten generieren (oder die entpsrechenden leeren Felder dafür im Eingabeformular.
dedlfix.