Ошибка 109 или где живет "another user" | |
---|---|
matod Автор Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
Этот вопрос уже обсуждался...
forum.foxclub.ru forum.foxclub.ru forum.foxclub.ru тем не менее остается открытым. В моем случае проблема выглядит следующим образом: форма с полями для редактирования записей в курсоре (представление, 5-я буферизация) и гридом (ReadOnly=.t.) в котором отображаются записи дочерних записей (второе представление с 5-й буферизацией). На форме поле для ввода значения и кнопочка "добавить" позволяющая добавлять записи в это второе представление. В момент сохранения выполняется примерно след. код: begin transaction ... if !tableupdate( 'view1', .f., .f. ) * Обработка ошибки endif sele view2 scan all ... replace fld1 with value1 if !tableupdate('view2', .f., .f. ) * Обработка ошибки endif endscan end transaction на строке replace выдается ошибка 109 Record is in use by another user. Сперва думал, что это действительно ошибка совместного доступа, но сегодня воспроизвел ошибку на своей машине, где кроме меня других users быть в принципе не может Причем ошибка не стабильная из 10 попыток 3 привели к ошибке, а остальные нет. Делал все практически одинаково. В одном из обсуждений была выдвинута гипотеза, что это просто глюк (Равиль ). Я склоняюсь к мысли, что так оно и есть, но может кто встречал решение или знает причины? (VFP6SP5) |
Re: Ошибка 109 или где живет "another user" | |
---|---|
slacka Сообщений: 49 Откуда: г.Муром Дата регистрации: 11.02.2005 |
У меня было нечто подобное - оказалось связано с тем, что грид блокирует свои записи.
Решение: Я явно ушел с текущей записи в сязанной таблице SKIPом, а уже потом обрабатывал SCANом. Но вообще-то у меня был активен RELATION. ------------------ |
Re: Ошибка 109 или где живет "another user" | |
---|---|
matod Автор Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
Да, были обсуждения про проблемы с Relation, рекомендовалось использовать View, что я и делаю. И grid не в фокусе.
Сейчас сделал шаманство - обрамил код сохранения парой .lockscreen = .t. ... .lockscreen = .f. и вместо tableupdate() для каждой записи сперва прогнал цикл замен, а уж потом tableupdate( 'view2', .t. ). ошибка исчезла ( раз 30 пробовал ). Потом вернул все как было и еще раз 30 попробовал... Тоже нет ошибки... Но уверенности нет никакой, что у клиента все будет работать также гладко. Сложно ловить то чего не видишь . |
Re: Ошибка 109 или где живет "another user" | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Более правильнее , надо написать
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Ошибка 109 или где живет "another user" | |
---|---|
matod Автор Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
2PaulWist
Цитата:;) дык. Просто у меня в реальном коде вместо комментариев стоит запись в лог, вывод сообщения пользователю, откат транзакции естественно и возврат в вызываемую процедуру. Это я упростил Но собственно это никак не влияет. Ошибка происходит при replace в курсоре до сброса изменений, я смотрел отладчиком. |
© 2000-2024 Fox Club  |