|
ошибка "file in use"
|
|||
---|---|---|---|
#18+
Здравствуйте. В моей программе команда use вызывается 3 раза: 1) для поиска при нажатии на кнопку формы frm_addarm Command1 IF Empty(thisform.textnaz.Value) AND NOT Empty(thisform.textkod.Value) USE orugie LOCATE FOR KOD = thisform.textkod.Value fl = FOUND() USE 2) для отображения табл postup при наж-тии на форме frm_operation Command3 USE postup browse USE 3) для отображения табл orugie при наж-тии на форме frm_operation Command4 USE orugie browse use Остальная работа с таблицами осуществляется через SQL-команды. Не могу понять почему же после диалога с frm_addarm, учитывая то, что там use должен закрывать orugie, выдается при нажатии на кнопку Command3 ошибка "file in use"? Ведь sql команды сами открывают и закрывают бд для которой они вызываются. Или я в чем-то не прав? Подскажите, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2012, 00:31 |
|
ошибка "file in use"
|
|||
---|---|---|---|
#18+
Нет, неверно... При использовании SQL, таблицы, перечисленные в FROM, остаются открытыми. Также, как и таблица-назначение при использовании INTO TABLE/CURSOR, либо Query при отсутствии раздела INTO... Так что приходится принудительно их затем закрывать: SELECT <alias/name> USE или USE IN <alias/name> Скорее всего, у вас просто установлено SET EXCLUSIVE ON, поэтому система при открытии таблиц через USE пытается получить монопольный доступ. В-принципе, можно идти несколькими путями (все зависит от того, действительно ли вам нужен эксклюзив): - либо использовать опцию USE ... SHARED - либо выставить SET EXCL OFF - либо держать весь необходимый набор исходных таблиц открытыми (естественно, неэксклюзивно) на все время работы процедуры: открыли сначала, затем обработали где вручную, где сделали выборки... затем все закрыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2012, 03:51 |
|
ошибка "file in use"
|
|||
---|---|---|---|
#18+
AndreTM, а какой способ подходит что бы открывать и закрывать таблицу только при обращении к ней? Пробовал после каждой sql команды use ставить - ошибка выскакивает в другом месте. Как правильно описать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2012, 16:35 |
|
ошибка "file in use"
|
|||
---|---|---|---|
#18+
Gargulie, Способ очень простой - следить, где открываются, где закрываются. Если совсем невмоготу - ON ERROR nTmp=0, чтобы игнорировать ошибки, но это неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2012, 17:27 |
|
ошибка "file in use"
|
|||
---|---|---|---|
#18+
Необходимо приучить себя работать с таблицами таким образом: Открыть таблицу Код: sql 1. 2. 3.
Закрыть таблицу: Код: sql 1. 2. 3.
Т.е. при обращении к таблице - нужно всегда проверять, открыта ли эта таблица. Так же, как и всегда нужно закрывать те таблицы, надобность в которых отпала - но перед закрытием обязательно убедиться, что данная таблица таки отрыта... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 10:36 |
|
ошибка "file in use"
|
|||
---|---|---|---|
#18+
BanditosЗакрыть таблицу: Код: sql 1. 2. 3.
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 11:19 |
|
|
start [/forum/topic.php?fid=41&msg=37778740&tid=1583688]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 157ms |
0 / 0 |