hi,
ich hab ein kleines problem, beim anzeigen des richtigen datensatzes und finde keinen fehler.
folgender code:
Delphi-Quellcode:
procedure Tframeauftrag.edartikelExit(Sender: TObject);
begin
with frmdata do
begin
tbartikel.Refresh;
tbartikel.last;
tbauftrag.Edit;
tbauftrag.Post;
if tbauftrag.FieldByName('artikel').AsString <>'' then
begin
if tbartikel.Locate('artikelnummer', frmdata.tbauftrag.fieldbyname('artikel').AsString,[locaseinsensitive]) = true then
begin
tbauftrag.Edit;
tbauftrag.FieldByName('geraet').AsInteger := frmdata.tbartikel.fieldbyname('geraet').AsInteger;
tbauftrag.Post;
quauftrag.Close;
quauftrag.Open;
end
else
begin
with frmneuerartikel do
begin
show;
edneuartnummer.Text:=edartikel.Text;
edneubezeichnung.Text:='';
edneubezeichnung.SetFocus;
end;
end;
end;
try
quauftrag.Locate('nummer',frmmain.pcauftrag.ActivePage.Caption,[locaseinsensitive]);
except
showmessage('Auftrag nicht gefunden!');
end;
end;
end;
zur erklärung:
ich habe ein datenbankfeld der tabelle "auftrag" namens "artikel". in dieses feld soll die artikelnummer eines gerätes über ein dbedit eingegeben werden.
beim verlassen des dbedits soll jetzt die dazugehörige artikelbezeichnung aus der tabelle "artikel" und der gerätetyp aus der tabelle "geraet" in nem dbedit bzw. ner dblookupcombobox angezeigt werden. in der tabelle "artikel" gibt's nen fremdschlüssel auf die geräte-id.
wenn die artikelnummer noch nicht existiert soll ein eingabefenster geöffnet werden.
jetzt das problem:
beim verlassen wird beim ersten mal immer die artikelbezeichnung und der gerätetyp eines anderen artikels angezeigt.
klick ich nochmal in das dbedit für die artikelnummer rein und verlasse es erneut aktualisiert er alles richtig, sowohl bezeichnung als auch gerät.
woran kann das liegen und wie kann ich das beheben?
bin für alle vorschläge offen.