Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 12:28 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
http://idoc.nm.ru/ADO_CURSOR/Property_Conduct_Recordset.htm А так, то веть работа идет только с КУРСОРОМ, в базу то запись идет только по команде... MyRecordset.Update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 12:33 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. После .Update таблица становится недоступна для изменений другим пользоателем, даже после rst.close и Set rst = Nothing Только когда из программый выйдешь то все ок. Конекшн используется такой: cnnAccess.CursorLocation = adUseClient cnnAccess.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=\\Dom\D\Data\lab.mdb;" Все добавления делаются в транзакции, так что не понятно зачем блокируется таблица целиком? Ведь добавляемую в транзакции запись не видно, ее никто не изменит. Как отключить блокировку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 15:31 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Динамический кырсор обязателен? Не помню как у акцеса с ним, попробуй статический. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. или adopenKeyset - что для твоего случая было бы вернее. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 17:14 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
adopenKeyset работает, как это можно объяснить на словах? Почему, за счет чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2004, 14:00 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Работает? Ок. Динамический курсор в любом случае, по определению , должен быть на стороне сервера а значит лок таблицы. KeySet - на стороне клиенте, т.е. просто снэпшот таблицы, поэтому и лок не нужен. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2004, 14:50 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Как выяснилось adopenKeyset работает не блокирую таблицу если работа идет всего с одной таблицей, однако же в проге у меня все равно после открытия рекордсета adopenKeyset и вызова Update вся таблица блокируется от изменений, сам Access при этом выдает: <Обновление невозможно; установлена блокировка> Значит дело не в курсоре а в блокировке? Или транзакцию я не так открыл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2004, 11:25 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Help!!! Горю, люди! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 09:33 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Ребят, обнаружилось что все же блокируется не вся таблица, а некоторая ее часть (называется страница?). Уже лучше. Как бы добиться блокировки только одной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 10:50 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Знач так, будем делать по-другому. поставь adOpenBatchOptimistic И апдейт вызывай только после добавления всех записсей, методом UpdateBatch. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 16:25 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Magnus23 Дык я не могу вызывать апдейт после добавления всех записей, мне именно после каждой нужно, а нужно для того чтобы получить ID добавленной записи для занесения в другую таблицу. И этот ID появляется как раз после Update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 21:16 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
По идее при adLockOptimistic и должна блокироваться только запись на которую вызван апдейт. Уж и не знаю, все воде верно. попробуй спросить в Акцесе. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 22:04 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Дык я не могу вызывать апдейт после добавления всех записей, мне именно после каждой нужно, а нужно для того чтобы получить ID добавленной записи для занесения в другую таблицу. И этот ID появляется как раз после Update А что тебе мешает после UpdateBatch получить сразу все ID и добавить их все сразу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 15:53 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Схема такая: я добавляю нового клиента и тут же вешаю на него специфический заказ, зависящий от параметров клиента. Если я добавлю клиентов через UpdateBatch и потом получу сразу все добавленные ID, то как я узнаю какой из ID какому клиенту принадлежит чтобы правильно добавить заказ? И как ты себе представляешь после UpdateBatch получить сразу все ID ? Я не в курсе, может есть какой механизм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 16:53 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Последние пять лет так делаю: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 17:03 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
rs.Open cmd , cn, adOpenStatic, adLockBatchOptimistic\r \r Под cmd у тебя подразумевается некий Select?\r \r Set rs.ActiveConnection = Nothing \'по желанию\r rs.AddNew \'манипуляции.....\r \r Как же так ты добавляешь данные в рекордсет (то бишь в таблицу) когда у тебя ActiveConnection = Nothing ???\r \r Это для меня пока не понятно.\r \r Кстати если интересно вот почитай что насоветовали в Access ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 10:24 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Казалось бы, не в тему, однако... PantaloneКак же так ты добавляешь данные в рекордсет (то бишь в таблицу) когда у тебя ActiveConnection = Nothing ??? В качестве одного из ключевых преимуществ ADO.NET подавляющее большинство авторов хвалебных рецензий подчёркивают возможность работы со snapshot'ом - не надо держать множество открытых подключений. Сама же MS говорит, что прежние версии ADO by default загружают сервак открытыми коннектами. А если немного внимательнее почитать книжки, то by default можно работать так, как Antonariy. (опять мимо темы:) FoxPro не позволяет этого в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 11:20 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
2 Pantalone: Под cmd у тебя подразумевается некий Select? Ага. Как же так ты добавляешь данные в рекордсет (то бишь в таблицу) когда у тебя ActiveConnection = Nothing ??? Это называется отсоединенный рекордсет. После всех манипуляций соединение восстанавливается, рекордсет апдейтится и записи добавляются, обновляются или удаляются как ни в чем не бывало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:48 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Это называется отсоединенный рекордсет. После всех манипуляций соединение восстанавливается, рекордсет апдейтится и записи добавляются, обновляются или удаляются как ни в чем не бывало. Да это же просто здорово!!! Полезная фишка, как-нибудь воспользуюсь. Но метод AddNew при отсоединении рекордсета не вернет мне ID новой записи? Такое возможно только при наличии соединения? Это очень важно, пожалуйста ответьте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2004, 13:59 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Id -identity? Только после подключения и вызова апдейта. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2004, 18:54 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Processor автор В качестве одного из ключевых преимуществ ADO.NET подавляющее большинство авторов хвалебных рецензий подчёркивают возможность работы со snapshot'ом - не надо держать множество открытых подключений. Сама же MS говорит, что прежние версии ADO by default загружают сервак открытыми коннектами. А если немного внимательнее почитать книжки, то by default можно работать так, как Antonariy. (опять мимо темы:) FoxPro не позволяет этого в принципе Да уж... куда фоксу до ADO.Net - светилы прогресса :) В Visual FoxPro выборка с сервера попадает в фоксовский курсор (временая таблица). С которым можно делать что угодно, включая экспортирование и импортирование в dbf одной командой, редактирование xBase и SQL-инструкциями, индексацию, натравление на него любого количества SQL-запросов, копирование в другие таблицы или из других таблиц. Его можно сохранить в dbf, выключить комп, пойти поспать, а назавтра указать его как обновляемый SPT-курсор, приконнектиться и залить на сервак. Вот тебе и снапшот. И еще есть Offline-представления, которые это дело автоматизируют. И доступно это со времен VFP 3.0 (1995-й год). Так что про "в принципе" сказки рассказывать не надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 16:38 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
To FoxGuest Извини, не хотел "в принципе" обидеть. Мне рассказывали (сам на FoxPrpo не работаю), что FoxPro "так устроен, что надо держать коннекшн открытым", да ещё и не один. (По крайней мере, я это наблюдаю в Management-->Current Activity--Process Info: 358 Items, Status: Sleeping). Не это ли ты имел ввиду, когда говорил "пойти поспать" ? ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 17:12 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
авторИзвини, не хотел "в принципе" обидеть. Да ладно, мне по фигу :) авторМне рассказывали (сам на FoxPrpo не работаю), что FoxPro "так устроен, что надо держать коннекшн открытым", да ещё и не один. Ну мало ли у кого руки и головы кривые. Не мне тебе рассказывать про драйвер ruki.sys :) Особенно про "еще и не один" весело авторНе это ли ты имел ввиду, когда говорил "пойти поспать"? ;-))) Я имел в виду то, что имел в виду. А именно то, что в фоксе любая выборка к любому источнику (DBF, DBC (БД VFP), Oracle, MS SQL, Interbase....) - есть независимый от коннекшена курсор, который в том числе легко одной командой (COPY TO) экспортируется в dbf, и вытягивается обратно (APPEND FROM) при необходимости. Как понимаетшь, активный коннекшен - это "параллельное" к курсору явление, так сказать его "приписка", и никак он к нему не привязан и для импорта/экспорта не нужен. Коннект в любой момент можно закрыть, редактировать курсор, а потом опять открыть и обновить. Это я все к разговору о якобы "революционных" снэпшотах ADO.Net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 22:27 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
Не понимаю откуда вообще эти разговоры в АДО отсоедененные рекордсеты существуют давно , работать с ними очень даже просто. Пачки же открытых коннектов - это недобитый пулинг. С этой зверюгой осторожно обращаться нужно и использовать только когда точно знаешь что делаешь, а во пбщих случаях отключать и делать все руками. Такова уж история, очень часто подобные "помогающие" или призванные "что то сделать за нас" технологии делают это криво и после долгих боев все возвращается на круги своя. ***Здесь была афигительная картинка с вашим адресом а теперь будет Просто Реклама*** Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 22:42 |
|
||
|
ADO Recordset блокирует всю таблицу, нужно блокировать только редактируемую запись.
|
|||
|---|---|---|---|
|
#18+
To FoxGuest: Спасибо за образные сравнения и толковое разъяснение. Мои коллеги, которым я показал твой ответ, сказали, что это - рудименты перехода от 2.6 к VFP и последующего переноса данных на MS SQLServer. Старые приложения крутятся - и ладно. А новые - используют ADO из-под VFP. To Magnus Действительно давно, и я этим пользуюсь с 2000 года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 15:16 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32455811&tid=2169743]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 383ms |

| 0 / 0 |
