![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование результата запроса 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."
И в интернет ничего подходящего найти не могу...