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

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

Использование результата запроса Select в Update


Kostafey ©   (2007-05-07 14:43:00) 

Уважаемые Мастера! Прошу помоши в следующем вопросе.

СУБД Access, ADO (ADOCommand)
Необходимо выполнить запрос на изменение записи, где результат
берется из запроса. Что-то вроде:

update Dar
set Kol =
(
 select Count(*)
 from InventarDar
 where InventarDar.InventarDar_Dar_id = Param1
)
where Dar.Dar_id = Param2

где Param1, Param2 -параметры.
Этот код приводит к ошибке.

В SQL Server можно было бы написать что-то вроде:

Declare @NewKol integer
Set @NewKol = (
 select Count(*)
 from InventarDar
 where InventarDar.InventarDar_Dar_id = Param1
)
update Dar
set Kol = @NewKol
where Dar.Dar_id = Param2


Кстати на соседних ветках упоминался JETSQL40.CHM.
Declare - есть в списке зарезервированных слов Microsoft Jet,
но использование его в Access тоже приводит к ошибке.

Можно было бы, конечно отдельным запросом получить набор данных,
и его результат подставлять в запрос update, но это было бы слишком
примитивно.

Как с Access бороться ?


Kostafey   (2007-05-08 11:29:00) [1]

> Эта уже основная проблема

НЕ основная проблема


Kostafey   (2007-05-08 11:28:00) [2]

> совет. пользуйся вторым фарефоксом

Не поверите, им и пользуюсь.

Кстати, правда ничего толкового по SQL в Access не нашел.

Ладно. Чет-то у меня ошибка ошибка в 17-й строке, все равно весь модуль перелопачивать надо.
Эта уже основная проблема. Это вообше, наверное по-другому делать буду.

Все же спасибо, что заглянули.


sniknik   (2007-05-08 10:54:00) [3]

> И в интернет ничего подходящего найти не могу...
совет. пользуйся вторым фарефоксом, у него есть проверка орфографии, и может тогда ты будеш писать без ошибок не вставляя нерусские буквы в русские слова... (не, мне то это пофигу, но гугль со мной не согласен...)


Kostafey   (2007-05-08 09:29:00) [4]

пока сделал через 2 отдельных запроса


Kostafey   (2007-05-07 17:09:00) [5]

Отдельно
( select count(*)  from InventarDar where InventarDar.InventarDar_Dar_id = 2)
и
update Dar
set Kol = 2
where Dar.Dar_id= 2

работают правильно.

Вместе

update Dar
set Kol =( select count(*)  from InventarDar where InventarDar.InventarDar_Dar_id = 2)
where Dar.Dar_id= 2

Выдает: "B oпepaции дoлжeн иcпoльзoвaтьcя oбнoвляeмый зaпpoc."
И в интернет ничего подходящего найти не могу...


Наверх

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