Wie kann ich gelöschte Datensätze aus einer Datenbank entfernen?
Das funktioniert mit folgender Routine aus der RxLib:
uses BDE; procedure PackTable(Table: TTable); var FCurProp: CurProps; TblDesc: CRTblDesc; hDb: hDbiDB; TablePath: array[0..dbiMaxPathLen] of Char; Exclusive: Boolean; begin if not Table.Active then _DBError(SDataSetClosed); Check(DbiGetCursorProps(Table.Handle, FCurProp)); if StrComp(FCurProp.szTableType, szParadox) = 0 then begin hDb := nil; FillChar(TblDesc, SizeOf(CRTblDesc), 0); with TblDesc do begin StrPCopy(szTblName, Table.TableName); StrCopy(szTblType, FCurProp.szTableType); bPack := True; end; Check(DbiGetDirectory(Table.DBHandle, False, TablePath)); Table.Close; try Check(DbiOpenDatabase(nil, szCFGDBSTANDARD, dbiReadWrite, dbiOpenExcl, nil, 0, nil, nil, hDb)); Check(DbiSetDirectory(hDb, TablePath)); Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False)); Check(DbiCloseDatabase(hDb)); finally Table.Open; end; end else if StrComp(FCurProp.szTableType, szDBase) = 0 then begin Exclusive := Table.Exclusive; Table.Close; try Table.Exclusive := True; Table.Open; try Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, nil,True)); finally Table.Close; end; finally Table.Exclusive := Exclusive; Table.Open; end; end else DbiError(DBIERR_WRONGDRVTYPE); end;
Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
nicht getestet | Version nicht betroffen | getestet |
siehe auch: