Announcement

Collapse
No announcement yet.

Records auch physisch löschen

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

  • Records auch physisch löschen

    Wenn ich in Delphi 5 einen Record via .delete; lösche, ist er zwar
    aus der Datenbank verschwunden, es wird aber kein Speicherplatz auf dem
    physischen Datenträger frei. Auch ein Löschen mit SQL bringt keine Abhilfe.
    Da die Datenbank teilweise sehr groß wird (>50MB), wäre ich für jede Hilfe dankbar, da die Zugriffe doch recht langsam werden.

  • #2
    <p>Hallo Sebastian,<br>
    <br>
    <br>folgende Routine löst Dein Problem:<br>
    <br>
    <br>Im Uses-Teil aufnehmen: BDE, DB, DBTables, DBITypes;<br>
    <br>
    <pre>
    Function PackDBFTabelle(aTable:TTable):Bool;
    Var excl:Bool;
    Begin
    Result:=True;
    With aTable Do
    Begin
    excl:=Exclusive;
    Try
    DisableControls;
    Close;
    If Not excl Then Exclusive:=True;
    Try
    Open;
    Check(DBIPackTable(DbHandle, Handle, PChar(TableName), szDBASE, TRUE));
    Except
    On E:EDBEngineError Do
    Begin
    ShowMessage(E.Message);
    Result:=False;
    End; // On
    End; // Try
    Finally
    Close;
    Exclusive:=excl;
    Open;
    EnableControls;
    End; // Try
    End; // With aTable
    End; // PackDBFTabelle
    </pre>
    <br>
    Gruß Thomas<br></p&gt

    Comment


    • #3
      Ich bin wirklich erschrocken, wie kompliziert das ist, aber vielen Dank, ich probier es gleich mal aus!

      Wenn du dich gut mit Datenbanken auskennst, wäre ich über eine Hilfe mit meinem anderen Problem dankbar ->

      Datenbankzugriff zu langsam (BLOB)

      Vielen Dank!

      Comment


      • #4
        <p>Sebastian,<br>
        <br>
        was meinst Du damit (Datenbankzugriff zu langsam)?<br>
        <br>
        Thomas<br></p&gt

        Comment


        • #5
          Ich habe eine andere Diskusssion gestartet, die so heißt..

          Comment


          • #6
            Vielen Dank für die Hilfe.
            Da ich Paradox-Datenbanken verwende, konnte ich ihren Code nicht direkt anwenden, aber ein Link in der Hilfe hat mir geholfen. Dadurch hat sich mir auch ein neuer Bereich von Datenbank-Funktionen eröffnet, der so kaum dokumentiert ist!

            Comment


            • #7
              Hallo Sebastian
              ich habe das gleiche Problem mit Paradoxtabellen. Die Pack-Methode für dBase-Tabellen v. Thomas kenne ich aus der Literatur. Ich wäre Dir dankbar wenn Du mit mitteilen könntest wo Du in der Hilfe zu diesem Thema etwas gefunden hast, speziell zum Packen v. Paradoxtabellen. Ich finde weder in Delphi noch bei der BDE etwas.
              Vielen Dank im voraus
              Gruss Walte

              Comment


              • #8
                <p>Hallo Walter,<br>
                <br>
                anbei die Pack-Routine für Paradox.<br>
                <br>
                <pre>
                procedure TTableEnhanced.PackParadoxTable;
                var
                TblDesc: CRTblDesc;
                hDb: hDbiDb;
                TablePath: array[0..dbiMaxPathLen] of char;
                begin
                hDb := nil;
                FillChar(TblDesc, SizeOf(CRTblDesc), 0);
                with TblDesc do
                begin
                StrPCopy(szTblName, TableName);
                StrCopy(szTblType, GetTableType);
                bPack := True;
                end;
                Check(DbiGetDirectory(DBHandle, True, TablePath));
                Close;
                Check(DbiOpenDatabase(nil, 'STANDARD', dbiReadWrite, dbiOpenExcl, nil,
                0, nil, nil, hDb));
                Check(DbiSetDirectory(hDb, TablePath));
                Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, FALSE));
                Check(DbiCloseDatabase(hDb));
                Open;
                end;
                </pre>
                <br>
                Gruß Thomas<br></p&gt

                Comment


                • #9
                  Hallo Thomas,
                  danke fürs erste, ich muss noch testen.
                  Gruss Walte

                  Comment

                  Working...
                  X