Форум: "Базы";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизУпаковка dBAse таблиц Найти похожие ветки
← →
NDR (2002-07-30 08:57) [0]УВАЖАЕМЫЕ МАСТЕРА!
Есть такая (ВАМ ВСЕМ ЗНАКОМАЯ) процедурка:
uses BDE,DB,DBTables
procedure Pack(RegenIndexes:Boolean);
procedure TForm1.Pack(RegenIndexes:Boolean);
const
SPackError="Таблица используется и неможет быть запакована";
begin
if not ((Active) and (Exclusive)) then
raise EDatabaseError.Create(SPackError);
try
Check(dbiPackTable(DBHandle,Handle,Nil,Nil,RegenIndexed));
finally
cursorposChanged;
refresh;
end;
end;
У меня дофига ошибок начиная от названия процедуры и до DBHandle!
Как правильно описать и использовать её????????Если есть другой пример пришлите пожалуйста. мне срочно нужен листинг позволяющий запаковывать таблицы dBase !
← →
Leran2002 (2002-07-30 09:34) [1]Вот может поможет…
uses BDE;
// Pack a Paradox or dBASE table
procedure 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;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Table1.Active then Table1.Close;
Table1.Exclusive:=true; // включаем эксклюзивный режим
Table1.Open; // таблица должна быть открыта
PackTable(Table1); // пакуем таблицу
Table1.Close;
Table1.Exclusive:=false; // выключаем эксклюзивный режим
Table1.Open;
end;
← →
VAleksey (2002-07-30 09:35) [2]Еще добавь орфографическую ошибку :) "неможет" пишется раздельно, т.е. "не может" :).
В нелпе по функции упаковки таблиц полный листинг для dBase и Paradox. См. файл BDE32.hlp
← →
Leran2002 (2002-07-30 09:37) [3]VAleksey, я это тоже оттуды выцарапал ;-))...
← →
Anatoly Podgoretsky (2002-07-30 09:38) [4]А правильный пример из хелпа никак не устраивает?
← →
Leran2002 (2002-07-30 09:44) [5]Ах да еще забыл сказать, что при открытом Дельфе это работать не будет, Дельф будет блокировать таблицу... Ну короче говоря выгружаешь Дельфя и запускаешь свою прогу... Ну и на всякий случай не забудь создать резервную копию таблицы, а то кто его знает ;-))...
← →
NDR (2002-07-30 16:09) [6]ОГРОМНОЕ СПАСИБО !!! работает !
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c