Форум: "Базы";
Текущий архив: 2002.07.04;
Скачать: [xml.tar.bz2];
ВнизКапризный Halcyon Найти похожие ветки
← →
Trixter (2002-06-13 10:38) [0]Проблема:
1. Работаю с Halcyon, все хорошо, но отказывается выполнять команды Pack, Zap, Rename. Эксклюзивный доступ установлен, а он, собака, все равно его требует.
2. Выполняю команду HalcyonDataSet.Close, после чего пытаюсь работать с файлами БД как с обычными -- удалить, архивировать, разархивировать и проч. Выдается ошибка, т.к. компонент от файла, судя по всему, не отстегнулся окончательно.
Всю жизнь работаю с FoxPro, а в Delphi --такие непонятные грабли.
Кто поможет советом или лучше эффективным работающим примером?
Благодарность не будет иметь границ в пределах разумного.
← →
Vovik (2002-06-13 11:03) [1]HalcyonDataSet1.TableName := "1111.dbf";
HalcyonDataSet1.Exclusive := True;
HalcyonDataSet1.Open;
HalcyonDataSet1.Pack;
HalcyonDataSet1.Close;
HalcyonDataSet1.Exclusive := False;
Все работает!!!
← →
Dennn_is (2002-06-13 11:09) [2]"Упаковка" (физическое удаление помеченных к удалению записей) таблицы Базы Данных (проверялось только на файлах DBF)
Нужно подключить модули :
DBTables, DB, dbiProcs,DbiErrs,dbiTypes;
Здесь, если NrErr>0 , то вывод на экран сообщения об ошибке (если была ошибка).
если NrReInd>0 , то автоматический вызов функции
function TablePack(NrErr,NrReInd : byte;Tbl : TTable) : Boolean;
Var
YesEx,YesAct : byte;
S : String;
Res,Res1 : DBIResult;
CCC,TableName : array[0..255] of Char;
begin
Result:=FALSE;
YesEx:=0;
if Tbl.Exclusive then YesEx:=1;
YesAct:=0;
if Tbl.Active then YesAct:=1;
Tbl.Active:=FALSE;
Tbl.Exclusive:=TRUE;
Tbl.Active:=TRUE;
StrPCopy(TableName,Tbl.TableName);
Res:=DbiPackTable (Tbl.DBHandle,
Tbl.Handle,
TableName,
NIL{szDBASE},
TRUE);
Tbl.Active:=FALSE;
if YesEx<=0 then Tbl.Exclusive := FALSE;
if YesAct>0 then Tbl.Active:=TRUE;
if Res=0 then begin
Result:=TRUE;
if NrReInd>0 then begin
if not TableRegenIndexes(NrErr,Tbl) then Result:=FALSE;
end;
end
else begin
if NrErr>0 then begin
Res1:=DbiGetErrorString (Res,CCC);
Str(Res,S);
S:="Ошибка упаковки : "+S+" -> "+StrPAS(CCC)+" для : "+Tbl.TableName;
MessageBeep(mb_IconHand);
MessageDlg(S,mtError,[mbOk],0);
end;
end;
end;
← →
VAleksey (2002-06-13 15:14) [3]
> Всю жизнь работаю с FoxPro, а в Delphi --такие непонятные
> грабли.
Delphi И Foxpro - мало совместимые вещи (из опыта)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c