LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Длинная ц...
 Тема: Длинная цепочка запросов через VBA
 
 15.06.2007 21:09:33
All
4316 сообщения
1-ый


Тема: Длинная цепочка запросов через VBA
Сначала простой пример:
В коде обработки насложная строка -
Set rst = CurrentDb.OpenRecordset _
("SELECT * FROM [Запос последняя цена товара] WHERE [КодТовара] ='" & Kod & "'")
prise = rst![ПоследняяЦена]

Т.е. мы создаем запрос на основе другого запоса [Запос последняя цена товара] вытаскиваем от туда нужную цену и вставляем ее в поле.

А запрос [Запос последняя цена товара] сам в свою очередь построен на запросе [динамика цен на товары].

Т.е. все запутано. В принципе все работает и нормально. Но появилась новая задачка. Вот этот запрос в основании цепочки ([динамика цен на товары]) тепель вставлен параметр для условия сравнения и этот параметр должен каждый раз занова определятся перед выполнением вышеуказанного кода VBA.

Как тут поступить? Ведь я обращаюсь ко второму запросу, а параметр нужен для первого.
Еслибы обращение шло сразу к первому запросу, то тут все понятно -
qd.Parameters(0) = значение из поля формы
set rs = qd.OpenRecordSet()

Как нужно действовать в этом случае?




P.S. Общие вопросы по базе данных
Автор: Владимир Донецк от 0:00:00 Источник ...
 15.06.2007 21:09:33
All
4316 сообщения
1-ый


RE: Длинная цепочка запросов через VBA
Параметр можно представить как функцию VBA, например, funGetParameter([ПолеЗапроса]) и использовать ее в запросе. Далее в этой функции можно обрабатывать и возращать нужные значения в зависимости от поля запроса. Для этого применяют глобальные переменные, условия сравнения и другие команды VBA.


P.S. Общие вопросы по базе данных
Автор: Admin от 0:00:00 Источник ...
 15.06.2007 21:09:34
All
4316 сообщения
1-ый


RE: Длинная цепочка запросов через VBA
Существуют запросы, которые черпают данные из других запросов (это не диковинка).
Но почему такие сложности, когда запрос-источник имеет параметр.
Прочемубы первый запрос не вызовет второй(источник), тот в свою очередь запросит параметр (через диалоговое окно), получит его и поехали дальше!

Как вообще делаются запросы на запросах с параметрами.
Неужели это такая сложная задача.

Кстати вот что предложиль на другом форуме

Dim qd as Querydef

Set qd=CurrentDb.CreateQueryDef("","SELECT * FROM [Запос последняя цена товара] WHERE [КодТовара] ='" & Kod & "'")

qd.Parameters(0) = значение из поля формы

set rs = qd.OpenRecordSet()

Но qd.Parameters(0) " отсутствует в данном семействе".
Может чтото недосмотрел?


P.S. Общие вопросы по базе данных
Автор: Владимир Донецк от 0:00:00 Источник ...
 15.06.2007 21:09:34
All
4316 сообщения
1-ый


RE: Длинная цепочка запросов через VBA
Понятно! Тут скорее все дело в DLookUp.

Вот первый запрос (называется сокращенно "Хрон"):
SELECT пост.ном, пост.тов, пост.цена
FROM пост 'это таблица
WHERE (((пост.ном)<[Np])) 'Np-параметр
ORDER BY пост.ном DESC;

Вот второй:
SELECT Тов.Опис, Тов.кодТ, DLookUp("цена","Хрон","тов= """ & [кодТ] & """ ") AS ПослЦена
FROM Тов; 'это тоже таблица

При вызове второго никакого параметра не запрашивалось. Поле ПослЦена имело везде значение #Ошибка.

Потом я заменил последнюю строку второго запроса на
FROM Тов, Хрон;
Теперь при запуске второго запроса действительно запрашивается параметр, но! пеоле ПослЦена всеравно имеет значение #Ошибка.

Что тут надо?


P.S. Общие вопросы по базе данных
Автор: Владимир Донецк от 0:00:00 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Длинная ц...
ПоискПоиск  Список форумовСписок форумов  
right