Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Вниз

ADO.   Найти похожие ветки 

 
Nikolai_S   (2002-12-25 18:02) [0]

Доброго времени суток. Я работаю с ADO и Access 2000. Иногда при попытке вызвать метод Post возникает ошибка "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения."

Ошибка возникает в следующем случае:
В некой таблице имеются логические (boolean) поля. Когда создаем и сохраняем новую запись в таблице, а потом пытаемся редактировать логические поля (используя TDBCheckBox), то тогда и возникает ошибка. если перезагрузить программу, то ошибка уже не возникает...

Я уже почти собаку съел с ADO, но такого я еще не встречал. Может быть кто-нибудь сталкивался. Подскажите, плиз...


 
sniknik   (2002-12-25 18:24) [1]

собаку недостаточно нужно еще кошку и попугайчика. :о)

серьезно. непонятно в чем дело но могу посоветовать не создавать записи в таблице. давно перешол на "чистый" SQL и проблем стало явно меньше. вместо создания записи в таблице сделай
ADOCommand.CommandText:= "INSERT INTO TableName (поля) VALUES (значения)";
ADOCommand.Execute.
Таблице рефреш.
на 95% уверен это решит проблему.
Если хочеш "разобратся" с таблицей, то предположительно ты пытаешся редактировать поле пока сама она еще не произвела изменения в базе (сама может и с буфером работать, а вот внешний TDBCheckBox нет).


 
Nikolai_S   (2002-12-27 10:38) [2]

Тогда очень трудно понять такую вещь. Дело в том, что когда создаешь новую запись и редактируешь логические поля, а потом делаешь Post, то никакой ошибки нету - все работает нормально. Но когда тут же пытаешься в этой записи изменить логическое поле и сделать опять Post, то уже ошибка.
И причем запись уже на 100% сохранена. Я проверяю в mdb-файле. И к тому же ключевое поле ID (счетчик) уже сидит для новой в TADOTable. А такая ошибка, как написано в руководстве по ADO, возникает именно тогда, когда ключевое поле отсутствует или не определено значение ключевого поля.
Так что тут вообще непонятно в чем беда...


 
sniknik   (2002-12-27 11:24) [3]

попробуй вместо просто Post делать так
if (HDataSet1.State=dsEdit) or (HDataSet1.State=dsInsert) then HDataSet1.Post;

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


 
Sergy   (2002-12-27 11:34) [4]

Ничего не надо делать, просто при вставке записи у тебя вставляются значения по умолчанию, т.е. фактически Access вставляет эти значения уже после того как ты их вставил, но перед методо Post. Просто когда инсерт втавляй в них значения принудительно.


 
KSergey   (2002-12-27 11:45) [5]

Tckb вы получили такую надпись - значит не то, чтобы собаку съели. а почти к ней не приступали. Извините, конечно.
Почитайте по этому поводу 3 статьи про ADO на "королевстве". Более этого вы врятли что-то найдете.


 
Nikolai_S   (2002-12-27 12:44) [6]

2 KSergey
Я читал эти статьи. Дело в том, что у меня нет полей со значениями по умолчанию, и я уже пробовал использовать TADODataSet.Properties...


 
Snake   (2002-12-31 05:16) [7]

У меня было что-то подобное, особенно на ADOTable. CursorLocation=clUseServer, CursorType=ctKeyset. Помогает. Но если это и так установлено, тогда не знаю...



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

Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-72189
NovyChock
2003-01-13 22:02
2003.01.23
Компоненты сторонних разработчиков


1-72365
Outlander
2003-01-13 09:17
2003.01.23
Ключ программы


1-72402
ihtiandr
2003-01-13 17:24
2003.01.23
Вопросик


1-72188
Dima1
2003-01-13 08:49
2003.01.23
Народ, раскажите мне, как работать с переменной Pointer.


3-72116
Nikolai_S
2002-12-25 18:02
2003.01.23
ADO.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский