Вниз
Скачать: CL | DM;

Ошибка:   Найти похожие ветки 

 
Arkady ©   (2003-02-18 16:18) [0]

При вызове команды Post или при удалении записи через TADOTable выводится сообщение: «Row cannot be located for updating. Some may have been changed since it was last read»?


 
Arkady ©   (2003-02-18 16:20) [1]

Данные не записываются. Как быть? Пожалуйста, подскажите.


 
Соловьев ©   (2003-02-18 16:23) [2]

Может таких данных уже нет. кто-то удалил до тебя...


 
Arkady ©   (2003-02-18 16:33) [3]

Нет, только один пользователь работает с данными.


 
Соловьев ©   (2003-02-18 16:37) [4]

а как ты позиционируешь курсор в НД? через грид?
как вообще вносишь изменения?


 
ermserg   (2003-02-18 16:40) [5]

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


 
sniknik ©   (2003-02-18 16:43) [6]

ну возможно у тебя образовалась пара (а может и больше) одинаковых строк и он не может решить чего же ему апдейтить?

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

добавить инкремент можно запросом
ALTER TABLE YourTable ADD COLUMN ID Autoincrement


 
oss ©   (2003-02-18 17:24) [7]

хех, вот он звездный час :) не одну бессоную ночь провел я за этим багом :))) по порядку, сначала причины
Ошибка эта возникает при попытки изменить данные (типа string) если до этого изменения они были NULL. Т.е. если ты всем полям где может быть текст при создании присвоишь хотя бы пробел, то такой ошибки не будет. Но это не красиво и не удобно.
Решения
1.по книжкам можно сделать так
(DataSet as TADODataSet).Properties["Update Criteria"].Value := adCriteriaKey;
т.е. это динамическое свойство доступное только после открытия.
Мне это помогло на месяца 2, потом началось тоже самое :)
2. Оптимальным будет манипуляция просто SQL, а главное все очень надежно :)


 
Arkady ©   (2003-02-19 12:31) [8]

Всем спасибо, удалось избавиться от данной ошибки.

> ermserg (18.02.03 16:40)
> http://www.delphikingdom.com/helloworld/ado02.htm


Особенно помог пример http://delphi.mtu-net.ru/zip/adopart2.zip

Нужно было сделать:
1. Добавить поле типа счетчик и сделать его ключевым;
2. Установить ADODataSet1.Properties["Update Resync"].Value:=NewResyncValue.

Но возникла другая проблема. При использовании TADODataSet все нормально, но если использовать TADOTable, то таблица не обновляется. Refresh не помогает. Приходится закрывать таблицу, а затем снова ее открывать. Можно сделать так, чтобы в TADOTable данные обновлялись?


 
sniknik ©   (2003-02-19 13:04) [9]

а ответы ты похоже невнимательно читаеш.

> .... другая проблема.

и вовсе не проблема. ADODataSet это новый компонент а ADOTable старый ("для облегчения перехода" - цитата), нужно пользоватся новым ADODataSet, ADOcommand и закинуть подальше устаревшее ADOTable и ADOQuery.
(есть такой принцип, новые версии обычно поддеживают старые возможности, но чтобы наоборот, старое поддерживало новое еще не придуманное - абсурд)

и кстати как ты думаеш Refresh работает?
посмотри в справке
ADODataSet Refresh
......
Warning:
Unidirectional datasets refresh the data by closing and reopening the cursor. This can have unintended side effects if, for example, you have code in the OnClose or OnOpen event handlers.

(может у тебя и есть однонаправленый курсор?)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: -0.986 c
1-29864
tv
2003-02-28 10:53
2003.03.10
PopupMenu in TRxRichEdit


14-30026
iZEN
2003-02-23 10:57
2003.03.10
Зачем нужны значки на Рабочем столе Windows?


3-29707
Кило
2003-02-18 15:18
2003.03.10
Как вызвать в процедуре саму себя?


14-30131
мазафакер
2003-02-11 16:17
2003.03.10
помогите со сниффером


1-29817
msoftware
2003-02-28 05:12
2003.03.10
ПОЧЕМУ ВОЗНИКАЕТ ABSTRACT ERROR???




   Наверх