Передача значения параметра в запрос

sql student
Дата: 06.06.2004 01:30:51
допустим есть запрос:

parameters p byte;
select p;

требуется сделать форму в которой вводится занчение, передаётся параметру запроса, затем выводится результат запроса. Как это сделать не меняя код запроса (чтобы не было прямых/косвенных ссылок на форму)?
Владимир Саныч
Дата: 06.06.2004 01:33:24
Так не получится. Запрос с параметром можно использовать только для рекордсета. А тут надо составлять селект на лету и подсовывать его в RecordSource формы.
sql student
Дата: 06.06.2004 01:50:51
А нельзя ли на основе RecordSet сформировать контент формы?
Rivkin Dmitry
Дата: 06.06.2004 09:33:52
А чем ссылки то мешают? Сослался в запросе на форму - и спи, отдыхай!
Shark
Дата: 06.06.2004 10:05:26
Ввели параметр, потом в обработчике какого-нибудь события контрола параметра пишем
Dim Qd1 as dao.querydef
Set qd1=CurrentDB.Querygefs("МойЗапрос")
qd1.Parameters("МойПараметр")=Me!МойКонтрол
DoCmd.OpenForm "ФормаМойЗапрос"
Forms("ФормаМойЗапрос").Recordset=qd1.Execute
Set qd1=nothing
Rivkin Dmitry
Дата: 06.06.2004 10:33:04
Чой-то я не пойму зачем изголяться?
Хочешь-не хочешь но к форме, хоть и не явно, но обращаешься: параметер чем-то надо заполнить, а значение его - на форме! Так не проще ли все сделать как
SELECT ... FROM ... Where ((p = [Forms]![Form1].[param]))

и
Sub param_AfterApdate()
Me.Requery

Кода 1 строчка, забот 0!
Shark
Дата: 06.06.2004 10:47:21
Меня попросили сделать не меняя код запроса, я сделал.
Rivkin Dmitry
Дата: 06.06.2004 10:58:22
Shark !
Притензий нет! Усе Ок!
Просто не понятно, когда такое нужно, что за причина не пользоваться возможностями системы, "изгаляться"...
Shark
Дата: 06.06.2004 11:24:52
Я там наврал маленько
вместо
forms...Recordset=
нада
Set forms...Recordset=
>Зачем такое надо
Например,
1) если твоя форма вызывается из разных мест
2) Смотрит на разные источники в разных случаях
3) Запрос используется в другом месте, а плодить их неохота.
4) Да мало-ли:-) Нравятся мне динамически формируемые строчки. Про это и топик недавно был.
/topic/96362&pg=-1
Rivkin Dmitry
Дата: 06.06.2004 14:55:26
автор
1) если твоя форма вызывается из разных мест
2) Смотрит на разные источники в разных случаях
3) Запрос используется в другом месте, а плодить их неохота.


Все это одно и тоже!
'Query MyFromQry as Query как я понимаю уже существует?

А чем тебе не нравится таое решение:
Public Sub OpenMyForm(p1, p2 ...)
Dim db as DataBase: Set db = Currentdb
dim qd as QueryDef: Set qd = db.QueryDefs("MyFromQry")
Dim fm As Form, se as Sting

se = "SELECT ... FROM ... Where ((p = " & p1 ") And (p2 = " & p2 & " And ...))"

или

if p1 = 0 Then
se = "SELECT ... FROM ... Where
Else
...
Endif

qd.SQL = se

DoCmd.OpenForm "MyFrom"
End Sub

И все! На все случаи жизни открытия твоей формы из любого места!
А если охота, создай коллекцию твоих форм и плоди их как New MyFrom, но при этом выкини MyFromQry и пользуйся
после
DoCmd.OpenForm "MyFrom"
Set fm = Forms("MyFrom")
fm.RecordSource = se
И все в одной процедуре!