![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как удалить физически [D6, dBase, FoxPro]
Смолин © (2002-04-17 12:36:00)КАк в DELPHI физически удалить строки из dbf файла VFP 5.0.
Пожалуста код напишите.
Спасиба.
Anatoly Podgoretsky (2002-04-17 16:27:00) [1]Вай, ты серьезно про nil
sniknik (2002-04-17 16:20:00) [2]возми полную процедуру для db и dbf
но еще раз если у тебя VFP 5.0 то это не сработает. (скорей всего)
procedure TDatMod.PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
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");
Check(DbiGetCursorProps(Table.Handle, Props));
if (Props.szTableType = szPARADOX) then begin
FillChar(TableDesc, sizeof(TableDesc), 0);
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
StrPCopy(TableDesc.szTblName, Table.TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack := True;
Table.Close;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
end else
if (Props.szTableType = szDBASE) then Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
else raise EDatabaseError.Create("Table must be either of Paradox or dBASE type to pack");
Table.Open;
end;
Смолин (2002-04-17 15:37:00) [3]> Kuusiniemi ©
Я конечно прошу прощения за настойчивость, но записи с помощью этой функции все равно не удаляются, а только помечаются. Я правильно пишу:
Table1.Delete;
Table1.Close;
Table1.Exclusive := true;
DbiPackTable(Table1.DBHandle, Table1.Handle, nil, szDBASE, True);
Table1.Open;
Table1.Exclusive := false;
И еще вопрос: что такое nil?
sniknik (2002-04-17 14:31:00) [4]для VFP 5.0 BDE не очень то и подходит. до foxpro 2.5 только. так что не удивляйся очень если не получится.
Kuusiniemi (2002-04-17 14:23:00) [5]Ну вы, блин, даете. ©
Справка по BDE.
Пример:
DbiPackTable(Table1.DBHandle, Table1.Handle, nil, szDBASE, True);
Den_ (2002-04-17 14:11:00) [6]> Kuusiniemi ©
Оно понятно....В этом обсуждении я не нашел нужной информации :( Все же хотелось бы так, по дубовому:
uses BDE
Table1.Close;
Table1.Exclusive := true;
dbiPackTable( Что нужно писать здесь??);
Table1.Open;
Table1.Exclusive := false;
Вот был такой пример, блин и я его записывал, но он был случайно удален. И теперь видимо не один я мучаюсь. Слышал что этот пример хорошо работает с dBase. Спасибо за ответы :)))
Kuusiniemi (2002-04-17 13:30:00) [7]> Den_
Я, в общем-то, тоже на работе. :)) Но если мне надо что-то найти, я сначала САМ буду искать, а уж потом, если не найду - тогда буду спрашивать.
Что до ответа на вопрос, то функция эта - dbiPackTable.
А что до того, чтоб поискать - то вот Вам - ТОЖЕ САМОЕ ОБСУЖДЕНИЕ. Вопрос за 9е и последний ответ за 10е апреля этого года!!
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1018349645&n=1
Den_ (2002-04-17 13:19:00) [8]Kuusiniemi ©
Всю конференцию просматривать долго, люди на работе всетаки а не дома ляжки тянут. Я очень корошо помню, здесь был отличный пример, я его искал поиском, но к сожелению ничего не нашел. У Вас нет ссылочки случайно на ветвь конференции с этим вопросом?
Kuusiniemi (2002-04-17 12:56:00) [9]Г-н Смолин! А конференцию почитать слабо?? Не только первых две страницы, а чуть дальше??