Пакование таблиц dBASE 2
Упаковка таблиц dBASE требует вызова BDE функции DbiPackTable. Пример ее
использования показан ниже, включая проверку на ошибки. Чтобы воспользоваться
функцией DbiPackTable, вызывающий модуль должен в своей секции uses иметь
модули-обертки BDE DbiTypes, DbiErrs и DbiProcs.
При неудачном вызове DbiPackTable, сообщение об ошибке не генерится. Для
того, чтобы понять как функция сработала, вам необходимо проверить возвращаемое
ею значение. В случае успешного выполнения возвращаемое значение равно
DBIERR_NONE. Любое другое значение указывает на ошибку, а с помощью него можно
определить саму ошибку, ее причину, и наметить действия, необходимые для ее
устранения.
Вот сам пример:
procedure TForm1.Button1Click(Sender: TObject);
var
Error: DbiResult;
ErrorMsg: string;
Special: DBIMSG;
begin
table1.Active := False;
try
Table1.Exclusive := True;
Table1.Active := True;
Error := DbiPackTable(Table1.DBHandle, Table1.Handle, nil, szdBASE, True);
Table1.Active := False;
Table1.Exclusive := False;
finally
Table1.Active := True;
end;
case Error of
DBIERR_NONE:
ErrorMsg := 'Успешно';
DBIERR_INVALIDPARAM:
ErrorMsg := 'Указанное имя таблицы или указатель на имя таблицы ' +
'равен NULL';
DBIERR_INVALIDHNDL:
ErrorMsg := 'Указанный дескриптор базы данных или курсора ' +
'неверен или равен NULL';
DBIERR_NOSUCHTABLE:
ErrorMsg := 'Таблица с таким именем не существует';
DBIERR_UNKNOWNTBLTYPE:
ErrorMsg := 'Неизвестный тип таблицы';
DBIERR_NEEDEXCLACCESS:
ErrorMsg := 'Таблица открыта не в эксклюзивном режиме';
else
DbiGetErrorString(Error, Special);
ErrorMsg := '[' + IntToStr(Error) + ']: ' + Special;
end;
MessageDlg(ErrorMsg, mtWarning, [mbOk], 0);
end;
|
|