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

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

Обновляемый запрос в старой программе. [D7, XP]


DimonS ©   (2010-10-18 05:26:00) 

Доброго времени суток всем.
В общем, ситуация банальная: непонятно с какого перепугу в программе начала выскакивать ошибка "В операции должен быть использован обновляемый запрос". Программка простая как три байта, написана еще лет шесть назад и до последнего времени работала без нареканий. Простая БД на Access со списком техники и норм расхода ГСМ. Ошибка появляется при изменении записи.

ADOCommand1.CommandText:='update Tehnica set Norma_Ch=:N where id=:id';
ADOCommand1.Execute;


Элементарный запрос, работавший больше пяти лет исправно. База не перемещалась и не изменялась. Причем ошибка выскакивает даже если база локально на диске лежит. Программка написана еще на Д6.

Поиском в инете пользоваться умею, но толкового ничего не нашел, даже на офсайте:
1. Перекрестный запрос (исключено).
2. Не полный доступ к базе (исключено).
3. Установить BDE (установлен изначально).
4. Установить новые версии драйверов (не ставятся, пишет, что установлены последние).
5. Конфликт с самой виндой/версией обновлений.

Склоняюсь к последнему варианту, похоже, что после переустановки винды все и произошло. Но что делать - ума не приложу. Винда лицензионная, менять ее никто не разрешит. Хотя что-то подредактировать в ней не возбраняется, но что именно?


Anatoly Podgoretsky   (2010-10-19 11:12:00) [1]


> Да там всего-то две строки :))

Не глупи, добавь еще пятнадцать, а то что это за проект, одно горе.


Германн   (2010-10-19 02:53:00) [2]


> Да там всего-то две строки :))

Во всех модулях, задействованных в проекте?
:)
Ну тогда это супер-проект!


DimonS   (2010-10-19 02:46:00) [3]


> В 17-й строке - это точно известно.

Да там всего-то две строки :))


Германн   (2010-10-19 02:03:00) [4]


> В чем был глюк неизвестно.

В 17-й строке - это точно известно. Неизвестно только в каком модуле. :)


DimonS   (2010-10-19 01:58:00) [5]


> Вряд ли ошибка в этих двух строка и снос компоненты это
> доказал.

Самое интересное, что даже строку подключения не менял, она при создании формы присваивается. Тупо бросил ADOConnection на форму, обозвал его так же, как снесенный и все. В чем был глюк неизвестно.


Anatoly Podgoretsky   (2010-10-18 11:22:00) [6]

Вряд ли ошибка в этих двух строка и снос компоненты это доказал.


sniknik   (2010-10-18 11:07:00) [7]

> в инете несколько раз этот совет встречал.
там рядом должно бы быть написано про isam paradox/dbase, которые его используют.


DimonS   (2010-10-18 10:17:00) [8]

В общем, вопрос закрыт. Незнаю, что программке не нравилось, просто тупо снес и заново установил ADOConnection создал заново подключение и все заработало, ошибки не выдает.


DimonS   (2010-10-18 09:50:00) [9]


> sniknik ©

Про BDE я не с потолка же взял, в инете несколько раз этот совет встречал. Но он нужен в любом случае, т. к. используется несколькими программами.
И про 895 результатов я вкурсе, в них же и копался.

Ладно, про устаревший метод встреча, попробую обойти его.


sniknik   (2010-10-18 09:36:00) [10]

> База ридонли не стала, в самом Access табличка отлично изменяется.
> Попытка использовать устаревшийметод OpenQueryDef для запроса, находящегося в базе данных, открытой с доступом только для чтения.
> написана еще лет шесть назад.
> Программка написана еще на Д6.

связи не видишь? как вариант, один из возможных.

> Именно так и искал. И не только такими словами.
> "В операции должен использоваться обновляемый запрос" [5]
и только в этой ветке написал
> "В операции должен быть использован обновляемый запрос" [5]
и все одно не нашел.

разницы не видишь? по твоему варианту 2 найденных результата по правильному 895.

кстати
> 3. Установить BDE (установлен изначально).
а это нафига? (и это важно, т.к. если используется парадокс то он может использоваться в режиме ридонли, по умолчанию выбирает если есть BDE то нет, но можно включить режим явно даже при установленном)


DimonS   (2010-10-18 08:10:00) [11]


> sniknik ©   (18.10.10 08:05) [5]

База ридонли не стала, в самом Access табличка отлично изменяется.

> "В операции должен использоваться обновляемый запрос"

Именно так и искал. И не только такими словами.


sniknik   (2010-10-18 08:08:00) [12]

вот из справки "ненаходящейся ошибки"
Попытка использовать устаревший метод OpenQueryDef для запроса, находящегося в базе данных, открытой с доступом только для чтения.


DimonS   (2010-10-18 08:06:00) [13]


> MonoLife ©   (18.10.10 07:43) [4]

Провайдер - Microsoft.Jet.OLEDB.4.0.
ADOConnection.Mode=cmShareDenyNone.
Запуск, естественно, с полными правами.
В том-то и дело, что не работает на других компах. На других эта ошибка и вылезла, проверил на своем - то же самое...


sniknik   (2010-10-18 08:05:00) [14]

> Поиском в инете пользоваться умею, но толкового ничего не нашел, даже на офсайте:
а если писать ошибку как она есть, без коверканий... - "В операции должен использоваться обновляемый запрос"

и еще в справке самого аксесса посмотри, там тоже есть...

> База не перемещалась и не изменялась.
но стала ридонли, например.


MonoLife   (2010-10-18 07:43:00) [15]

Какой провайдер используется?
Запускается "под админом"
Работает ли программа на другом компьютере?


DimonS   (2010-10-18 07:09:00) [16]


> MonoLife ©   (18.10.10 06:15) [2]

Ясно, что они инициализируются, просто не написал сюда.
id - поле-счетчик, ключевое, N - числовое.


MonoLife   (2010-10-18 06:15:00) [17]

А где инициализация параметров N, ID?


MonoLife   (2010-10-18 06:15:00) [18]

А где инициализация параметров N, ID?


Наверх

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