Форум: "Базы";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];
ВнизADO, Найти похожие ветки
← →
analyser (2003-10-24 16:43) [0]Есть ADODataSet в режиме отложенных изменений.
При следующей последовательности команд:
ADODataSet.Insert;
ADODataSet.Post;
ADODataSet.CancelBatch;// вставленная строка является текущей!
возникает exception: "Row handle reffered to a deleted row or a row marked for deletion".
Вопрос: что это за гадость, и можно ли с этим бороться ?
← →
kokker (2003-10-26 15:20) [1]Это, брат, означает, что нельзя так делать!
А почему, хрен его знает. Видишь, никто и не знает.
← →
analyser (2003-10-27 10:06) [2]М-да, внушаить...
Насколько я понял, мастера, вы так не пишете.
Тогда вопрос: а как вы, работая с ADO, пишете формы для редактирования данных со стандартными кнопочками "Сохранить" / "Отменить" ?
Наверное, есть веские причины не использовать для этого DataSet.LockType =ltBatchOptimistic
с последующим: DataSet.UpdateBatch /CancelBatch ?!
(иначе, я думаю, кто-нибудь откликнулся бы).
PS: А вот в разных статьях и примерах про ADO на эту тему приводится как раз код, приводящий к ошибке. Вот ведь блин...
← →
paul_k (2003-10-27 10:14) [3]Ну к Мастерам меня врят-ли можно отнесть но всякие формы для редактирования делаю на компонентах типа TEdit и так далее, а на кнопку Ок просто формирую insert или update запрос. На Cancel соответственно ничего, кроме возможной записи логов не делаю
Исхожу из того что юсер не может напрямую поправить какие либо данные в базе. Запрещено ему енто
← →
analyser (2003-10-27 10:49) [4]>paul_k:
Кучеряво. (и радикально, т.е. долой db-aware components и всякие там методы от data access).
Правда, я не понял, причем здесь "Исхожу из того что юсер не может напрямую поправить какие либо данные в базе". Но как кардинальное средство от потенциальных проблем, наверное, годится. Жаль, не мой случай...
← →
paul_k (2003-10-27 11:07) [5]Ну почему долой. просмотр, выбор из справочников очень удобно организовывается. А вот редактирование/вставка - ни-ни.. пусть юсер сначала замолотит то что надо ему, а я потом это раз N проверю. И только после этого процедурке отдам, которая все аккуратно по базе разложит. А насчет удобно ли пользователю вводить данные таким образом - это уже второй вопрос
← →
analyser (2003-10-27 11:24) [6]>paul_k: Я ж не спорю! Проверить N раз - это святое! Собственно, для этого и BatchUpdates...
А вот делать форму редактирования без db-aware - мне кажется уж слишком...
Напр., простейшая форма с master-detail - какая-нибудь накладная - изгаляться без dbgrid?? Да что там говорить - любая элементарнейшая форма для редактирования простетшего справочника!
Впрочем, что спорить. Каждый делает, как нравится. Я просто имел в виду, что контролировать ввод пользователя можно и не отказываясь от db-aware (а datasets вполне могут быть и хранимыми процедурами).
Но, судя по всему, больше нет желающих высказаться.
И это печально... (просто мне не повезло)
← →
paul_k (2003-10-27 11:41) [7]2 analyser
говорим почти об одном, но разными словами. В свое время меня приучили - никаких изменений в таблице без явно написанного и выполненого "Update", никаких вставок без "Insert" и так далее.
Мне такой подход сильно облегчает жизнь. (облегчает ли он жизнь юзеру это под вопросом). И, что для меня немаловажно, всегда есть возможность отследить кто и когда что добавил-изменил-удалил даже не пытаясь разобратся в каком месте надо эту запись лога вкрутить (что , возможно и не есть здоровО).
← →
kokker (2003-10-27 19:53) [8]to analyser:
Говорил ведь тебе, не знают они!
Прямо жалко парня, колотится головой о стену.
В общем так, брат - это БАГ такой в TADOCustomDataSet, поищи в инете и найдешь, что ты не один такой. (Там вообще много багов хороших и разных).
Что предлагает наука:
1) перед CancelBatch сделать Cancel (не всегда возможно)
2) перед CancelBatch сместиться на др. запись - not inserted (тоже не всегда возможно)
3) - от меня: не парься, будь проще! Просто спрячь эту ошибку:
try
CancelBatch;
except
on EOLEEXception do
; // и никто не узнает!
end;
и все будет пучком!
А мастера... ну на то они и мастера (;-ььь)
И помни, брат: спасение утопающих дело рук самих утопающих.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c