Autor Beitrag
NightHawk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Sa 15.05.04 19:40 
Hallo,

Ich bin dafür bekannt, wirklich spezielle Fehler herauszuprovozieren... denke ich zumindest, da ich bisher dazu hier im Forum keinen bereits existierenden Beitrag finden konnte. Wie auch immer...

Mein Problem ist folgendes:
Ich habe zwei ADO-Tabellen. Eine ist die Haupttabelle - Artikel - und die andere Tabelle - Standorte - ist dafür da, die Standorte der Artikel festzuhalten.

Die Stanorte werden dabei über ein DBGrid aufgelistet - dient gleichzeitig zum Navigieren durch diese - und angewählt. Zum Editieren sind neben dem DBGrid auch DBText-Felder, die zum Ändern der Daten verwendet werden.

Die Tabelle "Standorte" besitzt einen Fremdschlüssel zur Artikelnummer. Immer wenn ich nun einen Datensatz zur Tabelle "Standorte" einfüge, wird diese zwar korrekt im DBGrid angezeigt, allerdings kann ich keine Änderungen in den DBText Felder vornehmen, weil ich dann die Fehlermeldung "Datensatz kann nich aktualisiert werden. Aktueller Datensatz wurde nicht gefunden" erhalte. Wenn ich die Tabellen schließe und wieder aufmache, kann ich den gerade hinzugefügten Datensatz wunderbar verändern; aber nicht, wenn ich ihn gerade hinzugefügt habe. Komisch.

Ich füge den Datensatz übrigens über den Befehl "Insert" hinzu.

Kennt jemand diesen Fehler? Ich habe wahrscheinlich keine Erfahrung mit Delphi ADO-Komponenten. Wenn ich diesen dummen Fehler nicht herausbekomme, werde ich langsam anfangen - mir reicht es nähmlich mit all den Bug's - eigene Kompos herzustellen...

Naja. Vielleicht ärgere ich mich auch nur umsonst.... würde mich über einen Tip freuen...Danke.

NightHawk

_________________
Delphi - Die Sprache der Engel


Zuletzt bearbeitet von NightHawk am So 16.05.04 23:19, insgesamt 1-mal bearbeitet
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 16.05.04 01:00 
Hängt da eventuell irgendwo ein COMMIT dazwischen ?

_________________
Gruß
Hansa
NightHawk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: So 16.05.04 01:16 
Hallo Hansa,

Tut mir leid aber ich kann mit COMMIT nichts anfangen; bin leider nicht so sehr in der Materie. Das was ich will, ist eigentlich nichts außergewöhnliches. Habe es mit Access tausende mal programmiert. Nur die ADO-Komponenten scheinen ein problem damit zu haben, wenn man mit einem DB-Grid und DB-Text gleichzeitig arbeitet.

Vielleicht macht sich ja jemand die Mühe und kreiert schnell 2 ADO-Tables - die verknüpft sind - und versucht beim zweiten table einen datensatz hinzuzufügen - muß im db-grid angezeigt werden - und sofort in diesen - über ein db-text - einen Text editiert.

Naja. Danke trotzdem.

Gruß,
NightHawk

_________________
Delphi - Die Sprache der Engel
NightHawk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: So 16.05.04 23:19 
Ok, habe eine "Lösung" gefunden...

Der Fehler ist folgend. In der Tabelle "Standorte" existiert kein Primärschlüssel, nur ein Index. Zwei Felder sind indiziert. Zum einen ist es der Fremdschlüssel "Artikel-Nr" und zum anderen ist es der Fremdschlüssel "Standort-ID".

Seltsamerweise wird "Artikel-Nr" sofort von ADO heraus gesetzt, während Standort den Wert "NULL" erhält. Das bedeutet, dass ich keinen Refresh ausrufen kann (ich brauche den Refresh, damit ich die von der Datenbank gesetzten Standardwerte sichtbar machen kann), da das Feld "Standort-ID" NULL ist und daher nicht eindeutig ist, da es zu einem Index gehört.

Also. Falls jemand anderes solche Probleme hat, dann sollte er mal nach den Indexes schauen. Dies scheint meiner Meinung nach ein Bug zu sein, da der Standartwert für "Standort-ID" eigentlich auf 0 gesetzt worden ist und beim Refresh keine Probleme verursachen sollte. Ich habe keine Lust, alle Standardwerte manuell zu setzen, dafür habe ich doch den Tabellen-Editor, wo ich die Standardwerte setzen kann. Auf der anderen Seite MUSS ich wahrscheinlich die Standartwerte von indizierten Feldern setzen, weil ich sonst keinen Refresh ausrufen kann....

Egal. Muss keiner versehen. Danke an alle.

Gruß,
NightHawk

_________________
Delphi - Die Sprache der Engel