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

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

ADO [D7, IB6.x]


oss ©   (2002-12-20 10:32:00) 

подскажите, кто знает :( Использую АДОДатаСет, выбираю строку с условием where потом меняю ее и делаю Post, сразу выскакивает ощибка "Row cannot be located for updating. Some values may have been changed sinc it was read"
Что интерено, адо исполюзую для доступа к FireBird"у ( не надо советовать использоваь IBX или еще что-либо, мне нужно АДО)Так вот,
если при добовление записи всем полям присвоить какие-либо занчение, то этой ощибки при Update"е не будет, а если хоть одно поле останется Null, то вот тогда будет ошибка, какое бы поле не менял... ( Null остаются только не обязательные поля, не ключевые) Еще, когда меняю, то ключевые поля тоже не трогаю, меняю только текстовые значения. бьюсь уже второй день...


oss   (2002-12-21 01:43:00) [1]

ВОТ ОНО!!!!!!!!!!!!!
одна строчко и мне помогло
поле открытия датасета
ADIDataSet.Properties["Update Criteria"].Value:=adCriteriaKey;
что значит update"тить только по ключю !!!
а для любознательых - по умолчанию датасет делает update по всем извлеченным полям !
вообщем читайте книжки не по одному разу :)
огромное спасибо Юрий Жуков ©


sniknik   (2002-12-21 00:30:00) [2]

может таблицы так сделаны? по аналогу с MSSQL (а как оно там в IB6?)
fname varchar(20) NOT NULL
поле fname нельзя оставлять пустым, обязательно значение.
и потом если пользоватся INSERT/UPDETE то ничего не стоит и "" вместо NULL задать.


oss   (2002-12-20 23:39:00) [3]

уважаемые, я со многими из вас согласен, я и сам не первый год работаю и с делфи и с базами, да и с адо тоже...
но нагорело как-то., особо обращаю внимание на то, что если "всем полям присвоить какие-либо занчение" пусть даже что-то вроде :="", то все работает отлично !, а если останется NULL, да еще упаси Бог в текстовом поле, то полный п...ц.


Юрий Жуков   (2002-12-20 16:05:00) [4]

Бегом на королевство делфи и читать, читать, читать:

http://www.delphikingdom.com/helloworld/ado01.htm
http://www.delphikingdom.com/helloworld/ado02.htm
http://www.delphikingdom.com/helloworld/ado03.htm


Prooksius   (2002-12-20 14:25:00) [5]

2 oss © (20.12.02 10:32)
Ну вот, сделай по совету sniknik © (20.12.02 11:29)
Получится что-то типа UpdateSQL. То есть select ты посылаешь (и фетчишь) с помошью ADODataSet, а изменения - ADOCommand.
Никаких глюков не должно быть.


SergeyRSA   (2002-12-20 13:58:00) [6]

По-мойму надо в locktype в AdoDataset вместо ltOptimistic
поставить ltBatchOptimistic.


sniknik   (2002-12-20 11:29:00) [7]

Посылать самому
ADOCommand.CommandText:= "INSERT ....
ADOCommand.Execute;
после того как стал сам регулировать изменения/транзакции/и т.д. через запросы не полагаясь на компоненты (ведь все одно неявно делают то же самое) избавился от 99.9% глюков(?) и непоняток.

глюк с вопросом потому что это не глюки на самом деле а незнание специфики работы самих компонент. (кому они нужны)


Prooksius   (2002-12-20 10:55:00) [8]

И можно ли влиять на формирование запроса на изменение в ADO?


Prooksius   (2002-12-20 10:51:00) [9]

А как в ADO реализовано изменение данных (update, delete)?
Какой посылается запрос на сервер, как он формируется?
Никогда не работал с ADO, но вижу, что никто помочь не хочет/не знает как. :)


Наверх

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