|
|
|
| слепил запрос из 2-х запросов, в одном из них обращение к форме за датой для Where
проблем нет работает но когда я хочу эту-же SQL строку открыть в коде как рекордсет - грит про нехватку параметров.
как енто побороть? | |
|
| |
|
|
|
| как всегда :) - вставить параметр | |
|
| |
|
|
|
| в сам текст запроса воткнуть название поля формы - как в перекрестном? | |
|
| |
|
|
|
| тышь сам написал - в коде
я так понимать - в коде VBA?
ну стало быть и формируй SQL - строку как строку с конкатенцией
сразу значения подставляй форменный в формируемый скул | |
|
| |
|
|
|
| строка вот такого вида
str_ = "SELECT Запрос54.Nom, Sum(Запрос55.[Sum-Summa]) AS [Sum-Sum-Summa] " & _
"FROM Запрос54 INNER JOIN Запрос55 ON Запрос54.Nomer = Запрос55.Nomer " & _
"GROUP BY Запрос54.Nom " & _
"HAVING Запрос54.Nom=" & 159
|
но в самом Запрос55 - там есть обращение в полю формы - вот тут оно и орет, я думаю.
хотя если перевести в конструктор запроса - отрабатывает на уря. | |
|
| |
|
|
|
| так ты сюда подсунь запрос55
и отсюда делай напрямую без обращения к запросу | |
|
| |
|
|
|
| я так понял типо - вот такой конструкции
SELECT n1.group_id
FROM
(SELECT grp.group_id, Count(grp.id_handle) AS Count_handle
FROM nic_handle INNER JOIN grp ON nic_handle.id_handle = grp.id_handle
WHERE nic_handle.nic_hande IN ('biz','host')
GROUP BY grp.group_id) AS n1
INNER JOIN
(SELECT grp.group_id, Count(grp.group_id) AS Count_group
FROM (SELECT grp.group_id, Count(grp.id_handle) AS Count_handle
FROM nic_handle INNER JOIN grp ON nic_handle.id_handle = grp.id_handle
WHERE nic_handle.nic_hande IN ('biz','host')
GROUP BY grp.group_id) AS n1 INNER JOIN grp ON n1.group_id = grp.group_id
GROUP BY grp.group_id) AS n2
ON (n1.Count_handle = n2.Count_group) AND (n1.group_id = n2.group_id)
WHERE ((n1.Count_handle=2));
|
но как ее правильно сотворить - ХЗ | |
|
| |
|
|
|
| примерно
а выложи тексты запроса54 и запроса55
у тебя будет примерно так
str_ = "SELECT a1.Nom, Sum(a2.[Sum-Summa]) AS [Sum-Sum-Summa] " & _
"FROM (Select....from типа текст запроса 54) as a1 INNER JOIN (Select ....from типа текст запроса 55) as a2 ON a1.Nomer = a2.Nomer " & _
"GROUP BY a1.Nom " & _
"HAVING a1.Nom=" & 159
ну а там по ходу вставишь в нужные места ссылки на поля формы | |
|
| |
|
|
|
| интересно - почему так???
сотворил запрос в конструкторе - работает
скопировал в код - акс в истерику.
начинаю строку разбирать - наткнулся на такой фрагмент сделанный конструктором запросов:
FROM gurn_lzk LEFT JOIN
[SELECT distinct Gurn_LZK.Kod_LZK_plan
FROM (Gurn_LZK INNER JOIN Spec_Otgr ON Gurn_LZK.Kod_LZK_plan = Spec_Otgr.Izd) INNER
JOIN Gurn_Spec_Otgr ON Gurn_LZK.Kod_LZK_plan = Gurn_Spec_Otgr.Izd
WHERE (((Gurn_LZK.Kod_LZK_plan)>=4800) AND ((nz([Spec_Otgr].[Chert],0))<>0))]. AS LZK_1
|
как видно конструктор поставил вложенный запрос в []. (скобки с точкой ) - и все ОК,
но таже строка в Openrecordset - вызывает вопли, заменил на () без точки - все ОК. | |
|
| |
|
|
|
| http://hiprog.com/forum/read.php?id_forum=1&id_theme=10625&page=1 | |
|
| |
|
|
|
| Вместо Set rst = CurrentDB.OpenRecordset("Select...") в вашем случае надо:
Set qdf = CurrentDB.CreateQueryDef("","SELECT...")
qdf.Parameters(0) = EVal(qdf.Parameters(0).Name)
Set rst = qdf.OpenRecordset()
Или в запрсе ссылку на форму обернуть в EVal, а затем в CDate - будет работать везде (если поле на форме не пустое). | |
|
| |
|
|
|
| век живи - век учись - списибо | |
|
| |