Форум: "Базы";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
ВнизОшибка: Найти похожие ветки
← →
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 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c