Announcement

Collapse
No announcement yet.

Meldung bei EmptyTable

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Meldung bei EmptyTable

    Bei dBase kann ich mit Pack die Daten löschen, die mit einer Löschmarke versehen sind. Das gleiche habe ich mit dem Programmcode bei EmptyTable versucht.

    Table1 habe ich tblAdressen genannt!
    dBaseDatenbank ist Kundenadresse! Version 7.01.

    Bei beiden nachfolgenden Versuchen tritt jeweils die gleiche Exception der Klasse EDBEngine Error: "Tabelle ist in Gebrauch auf"!

    Erster Löschvorgang:
    tblAdressen.Close;
    tblAdressen.EmptyTable;

    Mein andere Versuch:

    with tblAdressen do
    begin
    Active := False;
    DatabaseName := 'Adressen';
    TableName := 'KundenAdressen';
    TableType := ttDBase;
    EmptyTable;
    end;
    Was mache ich Falsch? Bitte um kurzfritige Antwort!

    Mit besten Dank

    Wolfgang Rademacher

  • #2
    Hallo,

    wenn das Programm aus der Delphi-IDE heraus gestartet wird und die TTable-Instanz zur Compilierungszeit bereits offen war, hält Delphi selbst eine Verbindung auf diese Tabelle, so dass das gestartete Programm auf eine Tabelle zugreift, die bereits "in Gebrauch" ist. Wenn das Programm außerhalb von Delphi gestartet wird und Delphi keine Verbindung mehr offenhält, sollte der folgende Aufruf erfolgreich sein:
    <pre>
    procedure TMainForm.BtnDeleteClick(Sender: TObject);
    begin
    Screen.Cursor := crHourglass;
    with TableCreate do begin
    Active := False;
    try
    Exclusive := True;
    EmptyTable;
    Exclusive := False;
    Active := True;
    finally
    Screen.Cursor := crDefault;
    StatusBar1.SimpleText := 'Tabelle wurde geleert';
    // BDE-Puffer zurückschreiben
    DbiSaveChanges(TableCreate.Handle);
    end
    end
    end;
    </pre>
    Da ein exklusiver Zugriff angefordert wird, erhält man sofort eine Rückmeldung, ob man tatsächlich der alleinige Nutzer der Tabelle ist

    Comment

    Working...
    X