Александр |
Отправлено: 23.11.2005, 09:55 |
|
Не зарегистрирован
|
Всё казалось бы очень просто. Имею С++Builder 6.0 русифицированный через ADOTable подсоединяюсь к таблице базы данных Access 2002.
Проблему свёл к элементарщине. Прописал ODBC источник, есть коннект всё нормально. Ставлю DataSet, и DBGrid. В отдельных колонках стоят PickListы но они никак не влияют (проверял). Таблица без проблем визуализируется в DBGride. НО
При изменении (добавлении) в DBGride нескольких полей (не id) выдает ошибку:
Project ... raised exeption class EOleExeption with message
"Не удается найти строку для обновления.Некоторые значения могли быть изменены со времени ее последнего чтения."
выяснил что ошибка возникает как при увеличении числа изменяемых полей, так и при изменении определенных полей таблицы. Т.е. в некоторых запросах разрешает изменять 1-2 поля, в других 3-4.
На мой взгляд глюк компилятора, потому что
подобная ошибка помню была тоже с ADO c Builder 5.0, для ее решения находил патчи.
Поиск в нете ничего не дал.
Если есть подобные патчи для 6.0, или знаете в чем ошибка очень прошу помочь.
Переделывать прогу под 5.0 — это вешалка.
|
|
Kuks |
Отправлено: 23.11.2005, 10:22 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Ключевое поле в таблице есть?
|
|
Александр |
Отправлено: 23.11.2005, 10:42 |
|
Не зарегистрирован
|
Есть но я его не трогаю абсолютно, оно нормально увеличивается (тип счётчик в Accesse) и вообще не визуализируется в DBGride |
|
AVC |
Отправлено: 23.11.2005, 12:16 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
через ADOTable подсоединяюсь к таблице базы данных Access 2002.
Проблему свёл к элементарщине. Прописал ODBC источник
|
А почему ODBC? |
|
Александр |
Отправлено: 23.11.2005, 13:47 |
|
Не зарегистрирован
|
QUOTE (AVC @ 23/11/2005, 12:16) | QUOTE |
через ADOTable подсоединяюсь к таблице базы данных Access 2002.
Проблему свёл к элементарщине. Прописал ODBC источник
|
А почему ODBC? |
BDE слишком громоздка, а какие ещё могут быть альтернативы? |
|
Gedeon |
Отправлено: 23.11.2005, 14:35 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE | На мой взгляд глюк компилятора |
Ну а при чем тут компилятор?
Это м.б. кривизна библиотеки АДО борланда, но не компилятора.
Адо в 6 кривоватая, но это уже совсем. Проверил у себя, вышеописанного глюка нету. Так что попробуйте обновить МДАК, что еще не знаю.
Да, кстати а эта таблица у Вас не результаты ли какого более сложного запроса, сохраненного в эксес отображает, тогда причина м.б. в этом.
|
|
Александр |
Отправлено: 23.11.2005, 14:40 |
|
Не зарегистрирован
|
Нет ни о каких запросах речь не идёт. А библиотека может и виновата, кто же её знает. Неужели придётся с BDE связываться? |
|
avc* |
Отправлено: 23.11.2005, 15:35 |
|
Не зарегистрирован
|
QUOTE |
BDE слишком громоздка, а какие ещё могут быть альтернативы?
|
Ну при чем тут BDE. Для ADO прямой путь в Access — Provider = Microsoft.Jet.OLEDB (у меня 4.0) и файл базы. |
|
Александр |
Отправлено: 25.11.2005, 09:22 |
|
Не зарегистрирован
|
QUOTE (avc* @ 23/11/2005, 15:35) | QUOTE |
BDE слишком громоздка, а какие ещё могут быть альтернативы?
|
Ну при чем тут BDE. Для ADO прямой путь в Access — Provider = Microsoft.Jet.OLEDB (у меня 4.0) и файл базы. |
Спасибо за совет, я им воспользовался
Проблему я эту не решил, а обошёл. Но обращался я к таблице только через
ADOTable не используя вообще TQuery. Вообщем что только не пробовал. Ничего
не помогло. В итоге я уже стал предполагать что сам компонент DBNavigator
кривой.
Вообщем написал свой навигатор. Перешёл на TQuery и сейчас этой ошибки нет.
|
|
Kuks |
Отправлено: 25.11.2005, 09:30 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Умные люди говорят, что при работе с ADO компонент
TADOTable лучше не использовать, а использовать TADOQuery...
Так что ты (как впрочем и я) убедился на собственном опыте.
|
|