Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка "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]

Требуется закрыть таблицу-мастер :)))


Наверх

Титульная страница Поиск, карта сайта Написать письмо