Упаковка таблиц 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;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Пакование таблиц dBASE 2", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!