Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Вниз

PackTable   Найти похожие ветки 

 
Ольга   (2002-02-26 15:28) [0]

Прошу прощения, если мой вопрос покажется глупым, но с упаковкой таблиц столкнулась впервые.
Упаковываю таблицу:

Table1.Close;
Table1.Exclusive := True;
try
Check(DbiPackTable (Table1.DBHandle,Table1.Handle,PChar
(Table1.TableName),PChar(szDBASE),True));
except end;
Table1.Close;
Table1.Exclusive := False;
Table1.open;


И он выдает ошибку
Invalid handle to the function


 
Ольга   (2002-02-26 15:48) [1]

Никто не знает?


 
panov   (2002-02-26 16:07) [2]

загляни в FAQ


 
deleon   (2002-02-26 16:50) [3]

procedure TForm1.FormCreate(Sender: TObject);
var
SaveActive: Boolean;
SaveExcl : Boolean;
begin
try
SaveExcl := Table1.Exclusive;
SaveActive := Table1.Active;
Table1.DisableControls;
Table1.Active := False;
Table1.Exclusive := True;
Table1.Active := True;
Check(DbiPackTable(Table1.DbHandle, Table1.Handle, PChar
(Table1.TableName), szDBASE, True));
finally
Table1.Active := False;
Table1.Exclusive := SaveExclusive;
Table1.Active := SaveActive;
Table1.EnableControls;
end;
end;

===================================================
Если нигде не ошибся - должно работать
===================================================


 
Ольга   (2002-02-26 16:54) [4]

> deleon
Ругается, что Table is busy


 
deleon   (2002-02-26 17:13) [5]

Ок, завтра напишу что как :-)


 
kirill2000   (2002-02-27 02:27) [6]

Сам столкнулся с большими проблемами при использовании метода PackTable и поэтому могу предложить следующее решение

batchmove1.Destination :=form1.Table4;
batchmove1.Mode :=batcopy;
batchmove1.Source :=form1.Table1;
batchmove1.Execute;
form1.Table1.Active :=false;
form1.Table1.Exclusive :=true;
form1.Table1.Active :=true;
form1.Table1.EmptyTable;
batchmove1.Destination :=form1.Table1;
batchmove1.Source :=form1.Table4;
batchmove1.Mode :=batappend;
batchmove1.Execute;
form1.Table1.Active :=false;
form1.Table1.Exclusive :=false;
form1.Table1.Active :=true;
form1.Table1.Active :=true;

Где Form1.Table1 таблица которую необходимо упаковать,а Form1.Table5 временная таблица.


 
deleon   (2002-02-27 08:43) [7]

Как и обещал, привожу рабочий пример из нашего компонента TBdeTools (с)2002 Degisy Software:

function TBdeTools.PackTable(Table: TTable): DbiResult;
var
FCurProp : CurProps;
TblDesc : CRTblDesc;
hDb : hDbiDB;
TablePath : array[0..dbiMaxPathLen] of Char;
Exclusive : Boolean;
begin
Result := DBIERR_NONE;
if not Table.Active then
begin
Result := DBIERR_INVALIDTABLE;
Exit;
end;
Result := DbiGetCursorProps(Table.Handle, FCurProp);
if( Result = DBIERR_NONE )then
begin
if StrComp(FCurProp.szTableType, szParadox) = 0 then begin
hDb := nil;
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
with TblDesc do begin
StrPCopy(szTblName, Table.TableName);
StrCopy(szTblType, FCurProp.szTableType);
bPack := True;
bProtected := FCurProp.bProtected;
end;
Result := DbiGetDirectory(Table.DBHandle, False, TablePath);
if( Result = DBIERR_NONE )then
begin
Table.Close;
try
Result := DbiOpenDatabase(nil, szCFGDBSTANDARD, dbiReadWrite, dbiOpenExcl, nil,
0, nil, nil, hDb);
if( Result = DBIERR_NONE )then
begin
Result := DbiSetDirectory(hDb, TablePath);
if( Result = DBIERR_NONE )then
begin
Result := DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False);
Check(DbiCloseDatabase(hDb));
end;
end;
finally
Table.Open;
end;
end;
end
else if StrComp(FCurProp.szTableType, szDBase) = 0 then begin
Exclusive := Table.Exclusive;
Table.Close;
try
Table.Exclusive := True;
Table.Open;
try
Result := DbiPackTable(Table.DBHandle, Table.Handle, nil, nil, True);
finally
Table.Close;
end;
finally
Table.Exclusive := Exclusive;
Table.Open;
end;
end
else Result := DBIERR_WRONGDRVTYPE;
end;
end;



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
1-80506
Stexen
2002-03-11 23:00
2002.03.25
Компонент под углом


1-80523
SergeyVP
2002-03-12 05:28
2002.03.25
Компонент и TApplication


7-80712
Mega
2001-12-23 23:03
2002.03.25
Отправка данных в LPT


1-80616
Random
2002-03-11 15:57
2002.03.25
Как сделать скролящуюся панель?


6-80651
Velocity
2002-01-07 11:03
2002.03.25
Нууу... вопрос по сокетам <совсем маленький>





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский