Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Методы борьбы? / 9 сообщений из 9, страница 1 из 1
03.12.2003, 12:04
    #32341814
Corvin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Методы борьбы?
Доброго времени суток!

Может ли кто помочь разрешить следующую проблему:

Имееется БД Access, доступ при помощи Delphi+ADO, многопользовательский.
Проблема следующая: если один пользователь удалил запись, а другой пытается редактировать возникает Exception. Параметры DataSet'a следующие:
CursorLocation = clUseClient, CursorType=ctStatic, Properties'ы Update Criteria и Update Resync настроены и проблем с одновременным редактированием записи
не возникает. Был бы очень признателен за помощь.
...
Рейтинг: 0 / 0
03.12.2003, 12:11
    #32341825
Методы борьбы?
А что бы ты хотел, в такой ситуации? Если разумное сообщение, то нужно обрабатывать Exception.
...
Рейтинг: 0 / 0
03.12.2003, 12:27
    #32341864
Corvin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Методы борьбы?
Вот блин, никак не научусь формулировать свои мысли. В общем, Exception ловится и обрабатывается, все ок, но с текущей записи никак не уйти. Вопрос собственно говоря следующий: ADODataSet.Requery не срабатывает, выхожу из ситуации последовательностью команд: ADODataSet.Close; ADODataSet.Open. А есть ли другое решение? Да и вообще, не хотелось бы переоткрывать DataSet.
...
Рейтинг: 0 / 0
03.12.2003, 12:52
    #32341916
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Методы борьбы?
DataSet.RecNo +1 ил -1
не прокатит чтоль ??
_____________
...
Рейтинг: 0 / 0
03.12.2003, 13:30
    #32341995
Corvin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Методы борьбы?
Не-а, не покатит. Забыл сказать, навигация по записям осуществляется при помощи Grid'а и при возникновении данной ситуации становится невозможной.
А сообщение вылетает следующее: "Handle строки ссылается на удаленную строку или строка помечена для удаления." Вообще ситуация, когда несколько пользователей обращаются к одному и тому же набору строк возникает редко, но хотелось бы перестраховаться. И попутно еще вопрос, можно ли при помощи ADO+Access явно установить блокировку на запись?
В общем-то у меня есть несколько решений, но все они какие-то неэлегантные.
...
Рейтинг: 0 / 0
03.12.2003, 13:42
    #32342020
mir
mir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Методы борьбы?
Конечно не прокатит. Ведь при попытке сдвига с измененной записи сначала происходит Post, а в нем, как мы знаем, в данной ситуевине вылетает exception.

Рекомендации. Попробуй при отлове Exception вызывать Cancel у датасета, это отменит все изменения. Однако датасет останется в неактуальном состоянии, т.к. он расходится с базой. Поэтому его нужно привести в соответствие с базой. Сколь я не пробовал всякие Refresh и т.п, ничего не помогает кроме Close->Open. Чтобы пользователь оставался при этом не слишком обломлен, я запоминаю номер записи, а после Open прыгаю на этот номер. При удачно стечении обстоятельств пользователь останентся примерно на том же месте.
...
Рейтинг: 0 / 0
03.12.2003, 14:35
    #32342095
Mihail R.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Методы борьбы?
я тоже придерживаюсь мнения что надо делать Cancel, а затем Requery.
...
Рейтинг: 0 / 0
03.12.2003, 14:45
    #32342114
Corvin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Методы борьбы?
Спасибо огромное всем кто откликнулся. Времени больше нет, поэтому придется использрвать Close->Open. Хотя и данный способ, и Requery сильно пртребляют ресурсы (У Дженнингса хорошо все описано, хотя и в разрезе VB). Можно, конечно, использовать другую СУБД, но в данном случае, к сожалению, я не хозяин положения. (Прям стихами заговорил.)
...
Рейтинг: 0 / 0
03.12.2003, 14:46
    #32342116
Free2003
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Методы борьбы?
Я бы в таких случаях нашел бы метод блокировки записей. Вед не может же ADO чтоб не поддерживал блокировку.
НЕ ВЕРЮ!!!
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Методы борьбы? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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