Подзапрос с параметрами

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Подзапрос с параметрами

Сообщение Faust » 06.03.2006 (Пн) 14:27

Если я пытаюсь выполнить, к примеру, следующее:
Код: Выделить всё
SELECT *
FROM Test;

Где test - запрос с параметром, то Access выдает мне InputBox с предложением его (параметр) ввести. А вот можно ли этот параметр передать в коде главного запроса? Если можно, то хотелось бы узнать, как.
Листинги не горят!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.03.2006 (Пн) 14:33

В access мне это сделать не удалось...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.03.2006 (Пн) 17:32

Код: Выделить всё
with parameters ....

select ...

точный синтаксис смотри в справке по акцессу

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.03.2006 (Пн) 17:49

Неа...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.03.2006 (Пн) 18:13


GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.03.2006 (Пн) 18:24

Причём тут это...
Вопрос в том, как вызвать подзапрос с параметром в access. На манер SELECT * FROM EXECUTE Query1, p1, p2, p3

Я не знаю.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.03.2006 (Пн) 21:15

Код: Выделить всё
parameters [Продукт] string='Visual SQL-Designer';
SELECT t_products.*, t_product_type.ProductType AS ProductTypeName
FROM t_products INNER JOIN t_product_type ON t_products.ProductType = t_product_type.id
WHERE (((t_products.Actual)=-1)) and t_products.ProductName=[Продукт];


вот реальный пример из моей базы

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.03.2006 (Вт) 5:04

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

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Подзапрос с параметрами

Сообщение Andrey Fedorov » 07.03.2006 (Вт) 8:25

Faust писал(а):Если я пытаюсь выполнить, к примеру, следующее:


В Access-е проще сформировать строку с нужным тебе запросом (содержащим и подзапрос). То бишь что-то типа:

SELECT * FROM (SELECT * FROM ... WHERE Par1=23) AS T
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.03.2006 (Вт) 11:50

господа,
вы внимательней-внимательне, пожалуйста :!:

база Nwind.mdb
вот первый запрос (q1):

Код: Выделить всё
SELECT Categories.CategoryID, Categories.CategoryName, Categories.Description
FROM Categories
WHERE (((Categories.CategoryID)=[Category]));


а вот запрос , где мы используем первый запрос с параметром , уже его определив (q2):

Код: Выделить всё
Parameters [Category] long =1;
SELECT q1.CategoryName, q1.Description, Products.ProductID, Products.ProductName, Products.QuantityPerUnit, Products.UnitPrice, Products.UnitsInStock
FROM q1 INNER JOIN Products ON q1.CategoryID = Products.CategoryID;

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.03.2006 (Вт) 12:13

q1
Код: Выделить всё
PARAMETERS pID Long;
SELECT *
FROM Table1
WHERE ID = pID;


q2
Код: Выделить всё
PARAMETERS pID Long = 1;
SELECT * FROM q1


Не компилируется.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.03.2006 (Вт) 12:47

не заню, что и сказать. Я делал на 2003 офисе. Пример, что я привел отлично работает.

попробуй вот так:

Код: Выделить всё
SELECT Table1.* FROM Table1
WHERE Table1.ID = [pID];


и второй:
Код: Выделить всё
PARAMETERS [pID] Long = 1;
SELECT q1.* FROM q1;


у меня такой код работает без проблем :!: :wink:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.03.2006 (Вт) 12:55

Не компилируется именно из-за PARAMETERS.
Я не знаю, что там добавили в 2003, но "2003 and up" для меня не существует, ибо это всё равно что "Windows 2003 server and up".
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.03.2006 (Вт) 13:03

преобразовал в формат 2000 акцеса , в 2003 акцессе открывается и работает как надо. вообще PARAMETERS появился еще во 2-ом акцесе и всегда работал.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.03.2006 (Вт) 13:05

Дело не в формате, а в исполнителе.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.03.2006 (Вт) 13:09

а можноь не скромный вопрос - что означает у тебя
Не компилируется
:?:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.03.2006 (Вт) 13:12

вот моя база в формате 2000, посмотри запросы q1,q2,q3
У вас нет доступа для просмотра вложений в этом сообщении.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.03.2006 (Вт) 13:13

Это значит, что окно редактора SQL нельзя закрыть, сохранив изменения.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.03.2006 (Вт) 13:17

ясно, но пока не понятно почему у тебя такое происходит. посмотри мои запросы, будут ли они у тебя работать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.03.2006 (Пт) 17:03

Просил alibek'а проверить.
Грит, на access XP работает.
У меня-то не работает, но это понятно. версия не та... В общем, работает, да, не знали мы с ним про это :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList