Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
ВнизПочему не удаляются записи из таблицы? Найти похожие ветки
← →
alexander_ua (2003-04-02 15:33) [0]Проблема такая: при удалении записей из базы Paradox физически они не удаляются (я так понимаю, что лишь помечаются как удаленные), соответственно размер файла остается прежним. Подскажите, как все таки удалить записи?
← →
Соловьев (2003-04-02 15:38) [1]Для Paradox:
DbiDoRestructure(DBHandle, 1, ?, nil, nil, nil, False); { см. dbiProcs.int }
← →
AlexVit (2003-04-02 15:38) [2]Пример из хелпа для упаковки Paradox и dBASE таблиц:
"
Example 1: Pack a Paradox or dBASE table.
This example will pack a Paradox or dBASE table therfore removing already deleted rows in a table. This function will also regenerate all out-of-date indexes (maintained indexes). This example uses the following input:
PackTable(Table1)
The function is defined as follows:
// Pack a Paradox or dBASE table
// The table must be opened execlusively before calling this function...
procedure PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
// Make sure the table is open exclusively so we can get the db handle...
if not Table.Active then
raise EDatabaseError.Create("Table must be opened to pack");
if not Table.Exclusive then
raise EDatabaseError.Create("Table must be opened exclusively to pack");
// Get the table properties to determine table type...
Check(DbiGetCursorProps(Table.Handle, Props));
// If the table is a Paradox table, you must call DbiDoRestructure...
if Props.szTableType = szPARADOX then begin
// Blank out the structure...
FillChar(TableDesc, sizeof(TableDesc), 0);
// Get the database handle from the table"s cursor handle...
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
// Put the table name in the table descriptor...
StrPCopy(TableDesc.szTblName, Table.TableName);
// Put the table type in the table descriptor...
StrPCopy(TableDesc.szTblType, Props.szTableType);
// Set the Pack option in the table descriptor to TRUE...
TableDesc.bPack := True;
// Close the table so the restructure can complete...
Table.Close;
// Call DbiDoRestructure...
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
end
else
// If the table is a dBASE table, simply call DbiPackTable...
if (Props.szTableType = szDBASE) then
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
else
// Pack only works on PAradox or dBASE; nothing else...
raise EDatabaseError.Create("Table must be either of Paradox or dBASE " +
"type to pack");
Table.Open;
end;
"
← →
alexander_ua (2003-04-02 15:51) [3]так как же мне все-таки программно это сделать?
← →
Соловьев (2003-04-02 15:53) [4]
> так как же мне все-таки программно это сделать?
а вверху тебе наверное заклинания написали, которые надо произнести вслух при попытке удаления записи...
← →
alexander_ua (2003-04-02 15:54) [5]но ведь packtable - это не делфишная функция...
← →
Anatoly Podgoretsky (2003-04-02 15:56) [6]Ну так и что, в программе обычно много не Дельфовых функций и это как то не мешает ей работать.
← →
Соловьев (2003-04-02 15:58) [7]
> это не делфишная функция...
вообще-то нет делфийских функций. Есть функции написанные на Object Pascal
← →
alexander_ua (2003-04-02 16:04) [8]так я узнаю, где ее выкопать?
← →
Соловьев (2003-04-02 16:06) [9]
> Соловьев © (02.04.03 15:38)
uses + DBIProc;
← →
alexander_ua (2003-04-02 16:10) [10]а где взять этот модуль? он ведь не в стандартных?
← →
Соловьев (2003-04-02 16:12) [11]сорри +DBiProc s
← →
alexander_ua (2003-04-02 16:19) [12]в uses указал dbiprocs, но на packtable говорит, что undeclared identifier
← →
Соловьев (2003-04-02 16:27) [13]
> Соловьев © (02.04.03 15:38
← →
alexander_ua (2003-04-02 16:32) [14]то есть функцию я должен сам описать?
← →
Соловьев (2003-04-02 16:42) [15]
> то есть функцию я должен сам описать?
это если
> AlexVit © (02.04.03 15:38
а если
> Соловьев © (02.04.03 15:38
то нет.
← →
Anatoly Podgoretsky (2003-04-02 16:45) [16]alexander_ua (02.04.03 16:32)
Если packtable то да, если dbiDoRestructure то нет, уже описана
← →
alexander_ua (2003-04-02 17:10) [17]сделал, прога отработала, но результата не видно. все осталось так, как и было
← →
Соловьев (2003-04-02 17:13) [18]код?
как проверяешь что осталось как и было? может F5?
← →
alexander_ua (2003-04-02 17:16) [19]вышеуказанная процедура отработала для моей таблицы, но ее размер ни на байт не стал меньше
← →
Соловьев (2003-04-02 17:20) [20]код?
может и паковать то нечего.
← →
alexander_ua (2003-04-02 17:24) [21]Все получилось! Огромнейшее всем спасибо, очень благодарен!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.011 c