Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Все тот же 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 там про это написано


Наверх

Титульная страница Поиск, карта сайта Написать письмо