Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
6-9939
nt
2002-04-23 13:02
2002.07.04
Мастера, подскажите


4-10044
MK
2002-05-03 17:19
2002.07.04
Окно свойств файла(ов) как в проводнике


1-9802
nitro313
2002-06-24 06:57
2002.07.04
Как сделать поиск в таблице по введенной строке в Edit1?


14-9977
Val
2002-06-03 13:37
2002.07.04
список в C/C++


1-9828
HitMan
2002-06-20 18:58
2002.07.04
Встроить в ячейку StringGrid другой объект





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский