Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

Упаковка 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-60595
Explorer
2002-08-08 09:51
2002.08.19
Цвет выделения в DBGrid


4-60896
Andrew_A
2002-06-14 14:51
2002.08.19
Pipe reconnect


14-60829
Lamer86
2002-07-24 21:35
2002.08.19
Игра по модему. База данных игроков


1-60724
Torn
2002-08-07 02:58
2002.08.19
Как управлять скроллером в WebBrowsere-е


1-60621
lovres
2002-08-08 13:51
2002.08.19
Как вместо окна системного сообщ. вывести своё