Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: EDateBaseError: Feld ID kann nicht verändert werden

  Alt 1. Apr 2008, 12:09
Zitat von ereetzer:
Ja, habe AutoInc Felder benutzt. Das ist der Fehler? Also sollte ich dann die ID-Felder besser manuell mit Werten füllen?
Ja, das ist ein Problem, vorallem bei Master-Detail-Tabellen.
Angenommen du erzeugst einen neuen Datensatz in der Mastertabelle.
Dann darf man den Wert des AutoInc-Feldes nicht angeben, das macht die Datenbank.
Nur blöd, jetzt hast du einen neuen Datenssatz eingefügt und kennst den Primärschlüssel nicht !!
Man müsste den zuletzt eingefügten Datensatz nochmals lesen.
Da man aber den Primärschlüssel nicht kennt ist es eine unsichere Sache, da man dann einen Ersatzschlüssel braucht um den zuletzt eingefügten Datensatz zu erkennen.
Wie man es dreht und wendet: AutoInc-Felder sollte man unbedingt vermeiden, wenn man den Primärschlüssel noch für eine Detailtabelle braucht.



Zitat von ereetzer:
Zum besseren Verständnis: warum sollte ich die Bezeichnung DataModule weglassen? Ich konnte nicht feststellen, daß dadurch irgendwas nicht funktionieren würde?
1.) es ist unnötig, da ja der versteckte Parameter self vorhanden ist
2.) es ist regelrecht falsch. Wenn es mehrere Instanzen deines Datenmoduls geben würde, dann würdest du immer nur auf eine bestimmte Instanz zugreifen.
Es gibt zwar nur ein Datenmodul, aber du solltest dir solche falschen Zugriffe gleich abgewöhnen.
Bei mehreren Formularen der gleichen Klasse kann dies andernfalls ganz bösartige Fehler ergeben.
Andreas
  Mit Zitat antworten Zitat