powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ошибка "file in use"
7 сообщений из 7, страница 1 из 1
ошибка "file in use"
    #37777871
Gargulie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. В моей программе команда 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 команды сами открывают и закрывают бд для которой они вызываются. Или я в чем-то не прав? Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
ошибка "file in use"
    #37777930
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, неверно...
При использовании SQL, таблицы, перечисленные в FROM, остаются открытыми. Также, как и таблица-назначение при использовании INTO TABLE/CURSOR, либо Query при отсутствии раздела INTO... Так что приходится принудительно их затем закрывать:
SELECT <alias/name>
USE

или
USE IN <alias/name>
Скорее всего, у вас просто установлено SET EXCLUSIVE ON, поэтому система при открытии таблиц через USE пытается получить монопольный доступ. В-принципе, можно идти несколькими путями (все зависит от того, действительно ли вам нужен эксклюзив):
- либо использовать опцию USE ... SHARED
- либо выставить SET EXCL OFF
- либо держать весь необходимый набор исходных таблиц открытыми (естественно, неэксклюзивно) на все время работы процедуры: открыли сначала, затем обработали где вручную, где сделали выборки... затем все закрыли.
...
Рейтинг: 0 / 0
ошибка "file in use"
    #37778163
Gargulie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, а какой способ подходит что бы открывать и закрывать таблицу только при обращении к ней? Пробовал после каждой sql команды use ставить - ошибка выскакивает в другом месте. Как правильно описать?
...
Рейтинг: 0 / 0
ошибка "file in use"
    #37778206
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gargulie,

Способ очень простой - следить, где открываются, где закрываются.
Если совсем невмоготу - ON ERROR nTmp=0, чтобы игнорировать ошибки, но это неправильно.
...
Рейтинг: 0 / 0
ошибка "file in use"
    #37778687
Banditos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо приучить себя работать с таблицами таким образом:

Открыть таблицу
Код: sql
1.
2.
3.
IF !USED("Table1")
	USE Table1 IN 0
ENDIF


Закрыть таблицу:
Код: sql
1.
2.
3.
IF USED("Table2")
	USE IN Table2
ENDIF



Т.е. при обращении к таблице - нужно всегда проверять, открыта ли эта таблица.
Так же, как и всегда нужно закрывать те таблицы, надобность в которых отпала - но перед закрытием обязательно убедиться, что данная таблица таки отрыта...
...
Рейтинг: 0 / 0
ошибка "file in use"
    #37778740
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BanditosЗакрыть таблицу:
Код: sql
1.
2.
3.
IF USED("Table2")
	USE IN Table2
ENDIF

Код: sql
1.
use in select('table2')
...
Рейтинг: 0 / 0
ошибка "file in use"
    #37779800
Gargulie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ошибка "file in use"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]