![]() |
Datenbank: Paradox • Version: 9 • Zugriff über: BDE
Einmal index setzen, dann Tabelle kaputt
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:
Schreiben
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;
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; |
Re: Einmal index setzen, dann Tabelle kaputt
Hallo,
Bin an sich nur Hobby-Programmierer aber im Schreiben-Teil scheint mir "Form2.Table1.open;" an der falschen stelle zu stehen. Mich würde es wundern wenn du ein findkey, edit oder append kommando auf eine geschlosene Datei anwenden kannst. Und ich glaube, bin mir nicht sicher, ein open kommando setzt findkey, edit und append wieder zurück. M.f.G. Kunsch Alain |
Re: Einmal index setzen, dann Tabelle kaputt
Hallo,
auch wenn du es schon zum 100sten Mal hörst .. Du benutzt die falsche Datenbank. Mit Bde-Befehlen bekommt man keinen Index kaputt. Allerdings sieht das Form2.Table1.open; wirklich merkwürdig aus. Das muss noch vor Form2.Table1.IndexName:= .... Das Setzen des Index darf gar nicht gehen, wenn die Tabelle zu ist! Ausserdem kannst du das Form2.Table1.IndexName := ''; vor dem Form2.Table1.IndexName := 'VORGANG'; weglassen Ich habe übrigens die Erfahrung gemacht, dass ein einmal zerstörter Index nie wieder richtig wird. Lösche mal die xg_, yg_ Dateien und lege die Indizes neu an. Heiko PS: Als ich noch Support für eine Paradox-DB machen musste, stand Indexfehler weit oben auf der Liste der Fehler ... Jetzt benutze ich Interbase/Firebird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz