powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Блокировка нескольких записей в Recordset
20 сообщений из 20, страница 1 из 1
Блокировка нескольких записей в Recordset
    #32243367
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как в одном объекте Recordset заблокировать сразу несколько записей (от редактирования), не блокируя остальные?
Смысл такой, что надо в одной транзакции по мере нахождения номеров поставщиков в одном удаляемом документе (у нас так бывает) их блокировать, чтобы с ними не смогли работать другие (у них будет проверкана блокировку этой записи), т.к. сальдо может измениться.

Блин, как-то сложно получилось, но я думаю, что все-таки разобраться можно :))
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32243447
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще. Заранее неизвестно сколько надо будет заблокировать записей одну или пять. Поэтому создать несколько объектов типа Recordset неудобно. Можно ли в ОДНОМ Recorset'е заблокировать НЕСКОЛЬКО записей?
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32243451
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
где-то это уже было...
поищи на форуме или на www.msaccess.ru или там же на форме
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32243509
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то на форуме я такого не нашел. Или торможу - использую не те ключевые слова, или все-таки такого здесь нет. На форуме говорится про то, как СНЯТЬ блокировку и почему запись блокируется, а про то как самому заблокировать несколько записей - ни слова :(
Может кто ссылочку на подобную тему скинет (если я все-таки торможу)
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32243538
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2NoRoV
Често говоря мне влом рыться в форумах... Это так сказать то что тысам можешь сделать...

А в общем я вообще не понимаю зачем тебе это понадобилось??????
Существует масса альтернативных простых способов...
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32243558
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось так, что база поначалу была создана для одного отдела (4 машины), но со временем стали подключаться другие модули и так получилось, что надо делать блокировки на редактировние в одном отделе, чтобы аналогичные (по бухгалтерскому смыслу) корректировки не были произведены в другом отделе.
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32243563
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и ну...
Делаешь пользовательскую систему работы с базой (если такой не имеется) и в зависимости от того, кто вошел показываешь соответствующую информацию...
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32243591
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не очень понял предыдущий ответ, но постараюсь пояснить.
Нужно сделать так, чтобы записи блокировались и открывались в довольно быстром темпе - бухгалтерское закрытие и корректировка. Это должно быть так, чтобы не сильно мешать другим пользователям.
Если ты имееш в виду создание таблицы с записью тех номеров, которые заняты, то есть один минус - если пользователь будет выкинут из базы (откл. свет), то эти блокировки так и останутся висеть.
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32243617
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неее ты не понял...
При входе пользователю, например, бухгалтеру присваивается некий уникальный идентификатор ID. После этого все формы отображают\не отображают ту или иную информацию и т.п.

И какой в попу "откл. свет", если эти настроики устанавливаются при входе для конкретного пользователя... Зайдешь заново в базу и продлжишь работать (если, конечно, свет вкл.)
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244772
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 VsevolodV
Извиняюсь за задержку, но у нас тут время немножко побольше, чем у Вас (в смысле разные часовые пояса), а в сети я из дома (на работе нету).
Возможно я плохо объяснил (скорее всего), но бухгалтер постоянно сидит в своей проге и из разных мест может делать различные корректировки, в т.ч. и из главной. Если прога будет ругаться на запуск других форм, то бухгалтера пошлют меня. Мне надо, чтобы при корректировке документа конкретного(ных) поставщиков блокировались только они, а с другими можно было работать без проблем.

2 All
Может все-таки кто-нибудь знает, как заблокировать НЕСКОЛЬКО записей в ecordset'е. Или хотя бы ссылочку. А то получаются какие-то пустые разговоры (никого не хочу обидеть), а идей нет :(
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244792
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю о том ли я, но все равно скажу :)
как вариант :
на основе рекордсета, открыть новый, который содержит только нужные
для блокировки записи и его целиком заблокировать.
помоему красиво ?)
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244823
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 sasha_1
Идея неплохая, но мне кажется, что не сработает, т.к. заблокируется все равно вся таблица (если я понял правильно, то предлагаешь использовать dbDenyWrite)
dbDenyWrite НЕ работает (дает ошибку) если кто-то еще использует таблицу, это не подходит.
Если предлагаешь заблокировать поочередно выбранные записи, то при блокировке следующей предыдущая разблокируется. Если это не так, то поправте меня.
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244833
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько мне известно, невозможно заблокировать в одном recordset'e больше одной записи одновременно.
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244843
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вообще-то блокировка всегда идет страницами (пейджами). Когда программа дает команду заблокировать одну запись, то блокируется весь пейдж. Другое дело, что если записи достаточно длинные, то одна запись занимает весь пейдж и ничего лишнего не блокируется.
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244852
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А целенаправленно блокировать несколько записей надо программно. Заводим таблицу блокировок (ID записи и имя юзера), заносим в нее то, что хотим заблокировать, по окончании стираем это из таблицы блокировок, а каждый юзер, прежде чем что-то взять для редактирования, тоже сначала сверяется с таблицей блокировок - и если занято, то получает сообщение ("заблокировано юзером таким-то").
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244862
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще-то насколько я понимаю dbDenyWrite как раз блокирует весь
рекордсет от записи других пользователей.
>dbDenyWrite НЕ работает (дает ошибку) если кто-то еще использует таблицу
естественно. а как ты хотел заблокировать то, что сейчас меняют,
надо подождать (программно) пока все из нее выйдут и заблокировать.
по-моему путь правильный.
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244919
am (a_mitin)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про один из способов создания очередей есть вот здесь:
http://am.rusimport.ru/msaccess/topic.aspx?ID=196
Сам код там правда для SQL Serverа, но на для Access подход должен быть примерно таким же. То есть (как сказал Владимир Саныч) создается таблица с перечнем заблокированных ресурсов, и (о чем он не упомянул) возможность автоматического снятия блокировки при неожиданном отключении компьютера, заблокировавшего ресурс. В SQl версии для этого проверяется табл. sysprocesses. В Access версии для этого считаю возможным использовать рекордсет с dbDenyWrite. То есть для этоих целей создается отдельная база данных и под каждый ресурс в ней придется создавать таблицу (раз блокируется вся таблица целиком) и открывать на ней рекордсет с параметром dbDenyWrite. Если удалось - значит вы владеете ресурсом, если нет - то обрабатываете ошибку (из которой можно выцепить имя того, кто "держит" ресурс) и ждете. При этом варианте использование первой таблицы становится в общем то необязательным.
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32244975
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> То есть (как сказал Владимир Саныч) создается таблица с перечнем заблокированных ресурсов, и (о чем он не упомянул) возможность автоматического снятия блокировки при неожиданном отключении компьютера, заблокировавшего ресурс.

Действительно, не упомянул. У меня для этой цели сделаны две вещи. Во-первых, каждый юзер при входе обнуляет все собственные блокировки, которые могли остаться в результате неожиданного отключения системы. (Это плохо в том случае, если один юзер имеет право держать несколько сессий.) Во-вторых, у одного "главного" юзера имеется интерфейс, позволяющий стереть конкретную блокировку вручную.
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32245539
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы, но у них есть свои недостатки.
-если блокировать ВСЮ таблицу, то никто не сможет поменять данные - если пользователей много, то это проблематично.
-создание таблицы блокировок однозначно не решает вопрос "выпадения" пользователя

Что если использовать Clone. Я ею не пользовался, но предполагаю, что получится создать массив Recordset и при открытии корректировки расклонировать Recordset и в каждом отдельно сделать свои блокировки. Правда я не знаю, как это отразится на быстродействии и используемой памяти. Кто знает, подскажите, где здесь подводные камни?
...
Рейтинг: 0 / 0
Блокировка нескольких записей в Recordset
    #32248970
NoRoV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу поделиться опытом.
Через Clone (клонирование таблицы) возможно заблокировать несколько записей, если в каждом клоне будет заблокировано по одно записи.
Всем спасибо
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Блокировка нескольких записей в Recordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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