Пакование таблиц dBASE 2

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Упаковка таблиц 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;

{/codecitation}

Добавить комментарий