Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.008 c
1-56565
maxi
2003-11-06 13:12
2003.11.17
Как заставить TImageList не резать картинки на части ?


1-56621
onix
2003-11-04 18:02
2003.11.17
Normal.dot


1-56609
Alex-21
2003-11-03 21:39
2003.11.17
SelWindowsPos


1-56575
Aldor
2003-11-06 11:36
2003.11.17
---|Ветка была без названия|---


6-56804
BlackSun
2003-09-21 19:11
2003.11.17
Ras+определение скорости коннекта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский