Einzelnen Beitrag anzeigen

Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

Einmal index setzen, dann Tabelle kaputt

  Alt 6. Sep 2006, 16:08
Datenbank: Paradox • Version: 9 • Zugriff über: BDE
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;
Susanne
  Mit Zitat antworten Zitat