![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
kulibin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 2 Всего: 3 |
Возникла такая проблема: аксес не даёт доступа к бд другим процессам при открытии трансакции в одном из процессов
Мне нужно при многопользовательской работе с этой бдой пользоваться трансакциями. Или может как то по другому - суть в том, что с бд проводятся длительные операции по удалению и вставке записей. Пока не закончен блок операций - другим пользователям не обязательно видеть этот полуфабрикат. А если открыть трансакцию - аксес рубит всем доступ к бд. Может кто сталкивался с таким? Можно ли вообще в аксесе использовать трансакции при многопользовательской работе. Или как-то по другому сделать то же. Это сообщение отредактировал(а) Akina - 13.8.2005, 19:16 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Транзакция в Аксессе - это подпорка. Она предполагает безусловную блокировку изменяемой таблицы.
Выход: изготовить временную копию таблицы, провести в ней обновление, после чего: заблокировать основную таблицу, удалить ВСЕ записи и затем вставить все записи из временной таблицы. или удалить основную таблицу, переименовать временную в основную. Модератор: Проверяйте орфографию в своих постингах. Пожалуйста. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kulibin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 2 Всего: 3 |
Да уж . . . аксес, блин
пора его менять на что-то - это так, лирическое отступление спасибо за совет - съэконимили мне массу времени. буду пробовать темпорари тейбл. Интересно - он то в аксесе если создал его один процесс - другим виден, или прийдётся как-то руками обеспечивать уникальное имя таблицам? Попробую. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
если это действительно temporary table - кроме владельца-создателя ее видит только администратор базы... при условии что работает секьюрность, а то все админы и все видят... с другой стороны, чтобы работать с базой неизвестной тебе структуры - это какой код написАть надо (не, как - я знаю, но зачем?)... а сгенерить уникальное имя временной таблицы - раз плюнуть...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kulibin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 2 Всего: 3 |
Та да. Сроки просто поджимают - не хотелось сильно в творческие поиски углубляться. Да и человек я такой - никакой дисциплины. Мне токо дай - так я и забуду что надо было сделать.
Спасибо. |
|||
|
||||
leniviy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
kulibinМожно вопрос? Как так получилось, что перекачка таблицы целиком быстрее, чем непосредственное обновление данных? Если Ваша прога в режиме открытой транзакции ждет ответа пользоваетеля, то, имхо, можно использовать отвязанный ado recordset в режиме BatchOptimistic: все изменения данных будут в памяти, пока на OK не нажмешь ( если конечно на ado писать )
|
|||
|
||||
kulibin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 2 Всего: 3 |
я без рекордсета: connection.exequt "insert into . . .", adaffectnorecords
Почему? вопрос интересный - но сложный. прикол не в том, чтобы пользователь нажал "ок" - просто в из таблицы удаляется большой объём данных а потом из excel заливается построчно такой же. Пока идёт эта операция остальные пользователи должны видеть таблицу с удаленными записями, а не с частично добавленными. Не пользовался отвязным рекордсетом - и не умею.(токо из ado.net знаю что это такое - немного). Но вот какая штука - удаляю я большое к-во записей так: "delete from price where post='" "dfgdf" "'" - по нескольку тысяч(3-10). А если с рекордсетом - то построчно? это дополнительные тормоза. Вообще тема интересная - токо надо будет подчитать про отс.рекордсет - может и можно что-то придумать с ним на эту тему. В любом случае - спасибо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |