Hallo,
ich habe ein Problem mit dem Zugriff auf die Paradoxtabelle. ich öffne die Tabelle, setze den Sekundärindex und suche dann nach einem Schlüssel, lese aus und schliesse die Tabelle wieder. Soweit klappt das. anschliessen mache ich im Programm noch mal das gleiche, aber anstatt auszulesen setze ich hier die Werte des gefundenen Datensatzes neu. Das macht er bei dem ersten Durchgang auch einwandfrei
Nun führe ich das ganze erneut aus und nun möchte ich den Index setzen und jetzt bekomme ich den Fehler : Index nicht mehr gültig.
Jetzt kann ich die Tabelle reparieren, das erst mal klappt es wieder und danach wieder die gleiche Fehlermeldung.
Wo liegt mein Fehler? Irgendjemand noch eine idee, mir sind sie irgendwie ausgegangen.
Lesen
Delphi-Quellcode:
Form2.Table1.IndexName := '
';
try
Form2.Table1.IndexName := '
VORGANG';
except
on e:
exception do
ShowMEssage(e.
message);
end;
Form2.Table1.open;
KeyGefunden := form2.Table1.FindKey([FieldValue]);
if KeyGefunden
then begin
for i:=0
to (sl_FieldName1.Count-1)
do begin
if Form2.Table1.Fieldbyname(sl_Values1[i]).isnull
then
TempString := '
'
else
TempString := Form2.Table1.fieldvalues[sl_Values1[i]];
if TempString <> '
'
then
cbo.SetDlgFieldValue(sl_FieldName1[i] ,TempString,true);
end;
end else
ShowMessage('
Vorgangsnr nicht gefunden.');
Form2.Table1.close;
Schreiben
Delphi-Quellcode:
//Werte in DB zurückschreiben / aktualisiere den Datensatz
else if cbo.GetDlgFieldValue('
VORGANG') <> '
'
then begin
Form2.Table1.IndexName := '
';
Form2.Table1.IndexName := '
VORGANG';
inhalt:= cbo.GetDlgFieldValue('
VORGANG');
KeyGefunden := form2.Table1.FindKey([inhalt]);
if KeyGefunden
then
Form2.Table1.Edit
else
Form2.Table1.Append;
Form2.Table1.open;
Form2.Table1.FieldByName('
ABNR').AsString:= cbo.GetDlgFieldValue('
ABNR');
Form2.Table1.FieldByName('
BELDAT').AsString:= cbo.GetDlgFieldValue('
BELDAT');
Form2.Table1.FieldByName('
VORGANG').AsString:= cbo.GetDlgFieldValue('
VORGANG');
Form2.Table1.FieldByName('
KDNR').AsString:= cbo.GetDlgFieldValue('
KDNR');
Form2.Table1.FieldByName('
Debitor').AsString:= cbo.GetDlgFieldValue('
KUNDE');
try
Form2.Table1.Post;
except
on e:
exception do begin
ShowMessage(e.
message);
exit;
end;
end;
Form2.Table1.close;
end;