PDA

Vollständige Version anzeigen : Datenbank -->Aktualisierungsweitergabe


ajusic
04.08.2005, 17:31
Hallo liebe Gemeinschaft,

hab mal wieder ein problemchen1

Wann wird denn die Aktualisierungsweitergabe an verwandte Felder ausgelöst.
Ich hab zwei Tabellen 1:1 Beziehung mit folgenden Eigenschaften:
Tab1 -> Fragen_ID (PK, autowert)
Tab2 -->Fragen_ID (PK, kein autowert)

Wenn ich nun in Tab1 was ändere, so aktualisiert er mir nicht die Fragen_ID's in Tab2.



rs.Open "SELECT * FROM tbl_Fragen_HDVD WHERE Hauptdokument_ID = " & objCheck.hauptdokumentIDGet & "", _
CurrentProject.AccessConnection, adOpenKeyset, adLockOptimistic
If rs.EOF And rs.BOF Then
MsgBox "Update der DB-Tabelle Hauptdokument in Function saveHD() (Fragen) fehlgeschlagen, kein Datensatz gefunden!"
Exit Function
End If

For i = 1 To objCheck.getAnzahlQuestion
Set objFrage = objCheck.stpGetQuestion(i)

rs.Fields!Hauptdokument_ID.Value = objCheck.hauptdokumentIDGet
rs.Fields!fragentext.Value = objFrage.qXGet
rs.Fields!icode.Value = objFrage.qIcodeGet
rs.Fields!Fragenposition.Value = objFrage.qFragenpositionGet
rs.Fields!Kategorie.Value = objFrage.qKlasseGet
rs.Fields!Auswertung.Value = objFrage.qValueGet
rs.Fields!Pruefmerkmal.Value = objFrage.qPruefmerkmalGet
rs.Fields!bemerkung.Value = objFrage.qBemerkungGet
rs.Fields!asra.Value = objFrage.qAsraGet
rs.Fields!wis.Value = objFrage.qWisGet
rs.Fields!fehlercode.Value = objFrage.qFehlercodeGet
rs.Fields!ursache.Value = objFrage.qUrsacheGet
rs.Fields!verursacher.Value = objFrage.qVerursacherGet
rs.Fields!fehlerklasse.Value = objFrage.qFehlerklasseGet
rs.Fields!istAKtiv.Value = objFrage.qIsAktivGet
rs.Update
rs.MoveNext
Next


Liegt es vielleicht an meiner SQL-Anweisung, ich überschreibe einfach die Daten der Tab1, ich glaube ich habe damit meine Frage selbst beantwortet.
(Denn die Fragen sind zwar immer gleich (und von der Menge her), aber auf unterschiedlichen Positionen) :boah:

Sorry, aber würde dennoch wissen, wie man die SQL Anweisung für ein Update gestalten muss, damit die Aktualisierungsweitergabe angestoßen wird.

Gruß AJ.

Johnny Loser
05.08.2005, 06:19
Eine Aktualisierungsweitergabe dient dazu, die referentielle Integrität zwischen zwei in Beziehung stehende Tabellen (1:1 oder 1:n) aufrecht zu erhalten.
Wenn der Primärschlüssel in der Haupttabelle geändert wird, wird automatisch auch das in Beziehung stehende Feld der Untertabelle auf den neuen Wert geändert.

Angenommen Du würdest die Fragen_ID aus Tab1 von 7 auf 17 ändern, so würde entsprechend in Tab2 auch die Fragen_ID 7 auf 17 geändert werden.

In Deinem Fall hast Du aber in der Haupttabelle den Primärschlüssel als Autowert festgelegt, wodurch die Aktualisierungsweitergabe eh hinfällig wird, da ein Autowert nicht geändert werden kann.

ajusic
05.08.2005, 09:33
Aha, ein lichtlein ist aufgegangen. D.h. wenn ich in Tabelle 1 nicht die ID (PK) ändere, so aktualisiert Access auch nicht die ID in Tab.2. Aber da die ID in Tab1 (Autowert) nicht änderbar ist, funzt die ganze Sache nicht. Ich dachte die Aktualisierung findet statt sobald ich ein Attribut in einer Zeile geändert habe.

Danke für die Antwort.