![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка "Master table is open" при копировании детальной таблицы. [D7, Paradox]
Balkon © (2004-05-31 14:32:00)Приветствую, Мастера! При копировании детальной таблицы с помощью DbiCopyTable возникает ошибка "Master table is open". Во время копирования MasterTable.Active = false.
Подскажите, в чем дело. (как переводится - я догадываюсь :), что нужно сделать чтобы "закрыть" мастер таблицу?)
Спасибо.
Balkon (2004-05-31 17:00:00) [1]Спасибо, проверил. Нет ничего лишнего. Более того, создал новое тестовое приложение, кинул туда две компоненты таблиц, связал их с физическими таблицами, кинул кнопку,...
procedure fDbiCopyTable(hTmpDb: hDbiDb; SrcTableName: string; DestName: string);
begin
Check(DbiCopyTable(hTmpDb, True, PChar(SrcTableName), nil, PChar(DestName)));
end;
procedure TForm1.Button_CopyClick(Sender: TObject);
begin
DetailTable.Open;
fDbiCopyTable(DetailTable.dbHandle,DetailTable.TableName, 'copyOf' +
DetailTable.TableName);
end;
Закрыл все программы, включая Delphi, запустил тест - таже проблема... :) Уж простите за назойливость
Anatoly Podgoretsky (2004-05-31 16:44:00) [2]У тебя могут лежать компоненты на форме за ее видимыми пределами. Проверяй по dfm файлам
Balkon (2004-05-31 16:38:00) [3]Пробывал я и fDbiCopyTable из справки по BDE - все к одному ведет - Master Table is Open :(
В чем может быть дело? HELP!!!
Balkon (2004-05-31 16:37:00) [4]Пробывал я и fDbiCopyTable из справки по BDE - все к одному ведет - Master Table is Open :(
В чем может быть дело? HELP!!!
Romkin (2004-05-31 15:50:00) [5]В справке по BDE покороче:
procedure fDbiCopyTable(hTmpDb: hDbiDb; SrcTableName: string; DestName: string);
begin
Check(DbiCopyTable(hTmpDb, True, PChar(SrcTableName), nil, PChar(DestName)));
end;
Balkon (2004-05-31 15:41:00) [6]Вроде везде уже закрыта мастер таблица - загружено только единственное (мое) тестовое приложение. Однако все таже ошибка :( Может где-то в коде кроется ошибка?:
...
MasterTable: TTable;
DetailTable: TTable;
Button_CopyTable: TButton;
...
procedure QuickCopyTable(T:TTable; DestTblName: string; Overwrite: Boolean); //Pacheco and Teixeira Book Example
var
DBType: DBINAME;
WasOpen: Boolean;
NumCopied: Word;
begin
WasOpen := T.Active;
if not WasOpen then T.Open;
Check(DbiGetProp(hDBIObj(T.Handle), drvDRIVERTYPE, @DBType,
SizeOf(DBINAME), NumCopied));
Check(DbiCopyTable(T.DBHandle, Overwrite, PChar(T.TableName), DBType,
PChar(DestTblName)));
T.Active := WasOpen;
end;
procedure TForm1.Button_CopyTableClick(Sender: TObject);
begin
if MasterTable.Active then
MasterTable.Close;
QuickCopyTable(DetailTable, 'copyOf' + DetailTable.TableName,
true);
end;
Romkin (2004-05-31 14:57:00) [7]Да, означает. Но это не означает, что эта таблица не открыта в другом месте, в другом приложении, например, в среде Delphi в режиме разработки ;)
Она должна быть закрыта везде
Balkon (2004-05-31 14:49:00) [8]:) Спасибо.
В таком случае, глупый наверное, но вопрос:
Означает ли значение false свойства Active объекта MasterTable: TTable, связванного с мастер таблицей то, что она - master table, закрыта?
Romkin (2004-05-31 14:39:00) [9]Требуется закрыть таблицу-мастер :)))