Bazy danych

0

Używam tabeli typu Paradox 7 i przetrzymuje w niej ok. 20000 rekordów (zajmuje ok. 19 MB na dysku). I nic nie było by niepokojącego, gdyby nie fakt, że gdy usunę np. 19000 rekordów (albo i wszystkie) to rozmiar pliku tabeli nie ulega zmniejszeniu (nadal zajmuje ok. 19 MB). Z czego to wynika. Chyba można coś poradzić?! Za każdą radę z góry wielkie dzięki.

0

Gdy usuwasz rekordy, to w rzeczywistości nie są one usuwane, a tylko oznaczane jako "usunięte". Takie rekordy nie są brane pod uwagę przy wyszukiwaniu, porównywaniu itd....
Aby trwale usunąc rekordy oznaczone jako "usunięte" musisz spakować tabelę. Można to zrobić za pomocą Database Desktop albo programowo:
[code]function PackParadoxTable(Table: TTable): boolean;
var
td: CRTblDesc;
Database: TDatabase;
begin
Result := True;
try
Database := Table.Database;
if Table.Active then Table.Close;
if not Database.Connected then Database.Connected := True;
Result := DBIERR_NA;
FillChar(td, SizeOf(td), 0);
StrPCopy(td.szTblName, Table.TableName);
td.bPack := True;
if DbiDoRestructure(Database.Handle, 1, @td, nil, nil, nil, False) DBIERR_NONE then
Result := False;
except
Result := False;
end;
end;[/code]

1 użytkowników online, w tym zalogowanych: 0, gości: 1