![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Открыть таблицу в эксклюзивном режиме [D6, dBase, FoxPro]
denary © (2003-04-23 01:31:00)Господа мастера, помогите чайнику, замучился!
Не могу открыть таблицу в экслюзивном режиме. Что ни делал - Table is busy. В чем причина может быть?
Table1.Active := False;
repeat { until successful or Cancel button is pressed }
try
Table1.Exclusive := True;
Table1.Active:=True; //здесь получаем ругательство типа
// Table is busy
Break; { If no error, exit the loop }
except
on EDatabaseError do
{ Ask if it is OK to retry. If it isn’t, reraise to abort }
if Application.MessageBox(
"Could not open Table1 exclusively - Try again?",
"Open Error",
MB_OKCANCEL + MB_DEFBUTTON1) <> IDOK then
raise;
{ Otherwise resume the repeat loop }
end;
until False;
// Make sure the table is open exclusively so we can get the db handle...
if not Table1.Active then
raise EDatabaseError.Create("Table must be opened to pack");
if not Table1.Exclusive then
raise EDatabaseError.Create("Table must be opened exclusively to pack");
// Get the table properties to determine table type...
Check(DbiGetCursorProps(Table1.Handle, Props));
// If the table is a dBASE table, simply call DbiPackTable...
if (Props.szTableType = szDBASE) then
Check(DbiPackTable(Table1.DBHandle, Table1.Handle, nil, szDBASE, True))
else
// Pack only works on PAradox or dBASE; nothing else...
raise EDatabaseError.Create("Table must be either of Paradox or dBASE " +
"type to pack");
Дмитрий К.К. (2003-04-25 09:12:00) [1]Форма не открывается, но создается! То-то же...
denary (2003-04-25 00:41:00) [2]Спасибо всем за помощь, заработало! до меня наконец дошло, что приложение при запуске создает все свои формы (FormCreate), и если хоть в одной из них в дизайне было указано Table1.Active=True, таблица будет занята. Даже если эта форма никогда не открывается.
Еще раз спасибо всем.
AlexSerp (2003-04-24 08:34:00) [3]Правой клавишей по компоненту таблицы - жмак.
Выбрать Explore - откроется SQLExplorer, а в нем ты увидишь, что твоя база открыта.
Закрой ее и будет тебе щасье.
Дмитрий К.К. (2003-04-24 08:26:00) [4]Трудно закрыть Дельфю, запустить прогу на выполнение и проверить, открывается ли таблица экслюзивно в этом случае?
denary (2003-04-24 02:16:00) [5]Во время дизайна специально поставил Active=False, только при событии Form.OnShow во время выполнения делаю Table1.Open. Не помогает. Если Делфи тоже является пользователем таблицы, как же тогда программно открыть эксклюзивно?
ККВ (2003-04-23 09:21:00) [6]Делфи тоже является пользователем таблицы...
Виталий Панасенко (2003-04-23 08:33:00) [7]Похоже в среде таблица открыта во время дизайна ...