![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Все тот же ADO [D7]
Ozone © (2003-10-28 07:54:00)
Скажите почему у TADOTable отображающей таблицу с первичным ключом инкрементного типа при вызове метода Post это самое инкрементное поле не заполняется (учитывая что LockType = ltBatchOptimistic), а после UpdateBatch() все становится на свои места.
doomin (2003-10-30 12:04:00) [1]
начиная с 2000 есть тип счетчика "Код репликации". Порождает поле TGUIDField. Я уже давно перешел на них, тем более допускается генерить их на стороне клиента, т.е. туда писать. База больше, но многие проблемы решены и можно безболезненно использовать встроенную репликацию
Beginner3000 (2003-10-29 00:00:00) [2]
меня от заморочек автоинкрементных полей спасает
["Update Criteria"].Value:= adCriteriaKey;
в начале работы с таблицей
а на счёт заполнения автоинкримента - всё верно
это в юрисдикции не TADOTable а движка базы
Ozone (2003-10-28 16:58:00) [3]
Скорее всего так и сделаю.
analyser (2003-10-28 16:57:00) [4]
...как быть?
-думать!
На самом деле вариантов много можно придумать, но чтобы было все просто и одновременно удовлетворялось и отлож. изменения и автоинкремент - это вряд ли (он ведь-автоинкремент-определяется при вставке записи в таблицу БД (не TADOTABLE!!!), а POST при отлож.изменениях в БД ничего не пишет, только в локальный кэш).
Может, ну его нафиг, этот ltBatchOptimistic - по крайней мере для вставки новой записи - ну удалишь ее потом запросом..
Ozone (2003-10-28 16:32:00) [5]
Тогда как мне лучше осуществить такое:
есть таблицы Teacher(ID, FIO, ...) и Plan(Number, ID, ...), т.е. Teacher связана с Plan один-ко-многим по ключу ID.
Следовательно, при добавлении новой записи в таблицу Teacher мне нужно добавить несколько записей в таблицу Plan, но как это сделать, если ID(автоинкрементное поле) не определяется при вызове метода POST.
Подскажите, как быть?
analyser (2003-10-28 16:21:00) [6]
"...учитывая что LockType = ltBatchOptimistic...",
при Post "автоинкрементному полю (которое также явл. первичным ключом)" значение никакое и не присвоится! (а что, на Королевстве Делфи, где есть статьи про ADO, про это не написано?)
Ozone (2003-10-28 15:52:00) [7]
Не вызывает ошибки, если пишу
Properties["Update Criteria"].Value := adCriteriaAllCols;
Properties["Update Resync"].Value := adResyncAutoIncrement + adResyncInserts;
Но нужно результата все равно не дает.
Т.е. в режиме LockType=ltBatchOptimistic делаю Append, что-то присваиваю полям, вызываю Post, но автоинкрементному полю (которое также явл. первичным ключом) значение никакое не присваивается.
Ozone (2003-10-28 15:48:00) [8]
Я опечатался, там должно быть
< adResyncAutoIncrement + adResyncInserts >
Sandman25 (2003-10-28 15:46:00) [9]
А зачем удвоенное adResyncInserts записывать?
Ozone (2003-10-28 15:38:00) [10]
Помогите пожалуйста, курсовая горит.
Ozone (2003-10-28 13:55:00) [11]
Вставляю в свой код перед добавлением записи такую фичу
ADODataSet1.Properties["Update Resync"].Value:= adResyncInserts + adResyncInserts;
и возникает "...Access violation..."
PS. LockType = ltBatchOptimistic.
В чем может быть проблема?
Ozone (2003-10-28 08:00:00) [12]
пасиба.
Hooch (2003-10-28 07:59:00) [13]
сходи на Королевство Делфи, там есть статьи про ADO там про это написано