Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с параметрами из данных формы. / 8 сообщений из 8, страница 1 из 1
23.05.2017, 15:46
    #39458205
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами из данных формы.
Добрый день, необходимо в качестве источника данных для отчета сделать динамический запрос. на форме вызова отчета должно быть реализовано условия фильтрации для вывода данных.
например ограничение по датам.

Вот то что прописано на открытие отчета

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Private Sub Report_Load()


Dim db As DAO.Database
Dim rstData As DAO.Recordset
Dim strSQL As String
Dim rsQuery As DAO.QueryDef
Dim par1, par2 As DAO.Parameter

   SELECT т1.поле1 т2.поле 2, т2.поле3, т1.поле4 FROM т1, т2" _
   & " WHERE  т1.поле1 =  т2 .поле1 and  (т1.поле4>= [par1]) And ( т1.поле4 <=[par2]) 

For Each rsQuery In CurrentDb.QueryDefs
        If rsQuery.Name = "Запрос_" Then
              CurrentDb.QueryDefs.Delete "&#199;&#224;&#239;&#240;&#238;&#241;_"
           Exit For
        End If
    Next


Set rsQuery = CurrentDb.CreateQueryDef("Запрос_", strSQL)

  rsQuery.Parameters("par1").Value = CDate(Format(Forms![Форма].Dat1_, "mm\/dd\/yy"))
  rsQuery.Parameters("par2").Value = CDate(Format(Forms![Форма].Dat2_, "mm\/dd\/yy"))


Me.RecordSource = "Запрос_"
rsQuery.Close: Set rsQuery = Nothing
CurrentDb.Close
End Sub




мне нужно чтоб данные для параметров брались из значений указанных в форме "Форма" , а у меня почему то параметры запрашивает все равно, хотя значения параметров я указала в коде. Прошу указать на мою ошибку.
...
Рейтинг: 0 / 0
23.05.2017, 16:09
    #39458238
Запрос с параметрами из данных формы.
Если задача в том, чтоб на Report_Load присвоить запрос источнику строк отчета, то достаточно этого:
Код: vbnet
1.
2.
3.
4.
strSQL = "SELECT т1.поле1 т2.поле 2, т2.поле3, т1.поле4 FROM т1 INNER JOIN, т2 ON т1.поле1 = т2 .поле1" _
   & " WHERE (т1.поле4>= [Forms]![Форма].Dat1_) And ( т1.поле4 <=[Forms]![Форма].Dat2_)"  'хотя в этом условии уместнее Between

Me.RecordSource = strSQL



Что касается танцев с бубном вокруг QueryDef, то присвоение значений параметрам не меняет текст запроса и имеет смысл только перед выполнением OpenRecordset или Execute (для запросов на изменение).
...
Рейтинг: 0 / 0
23.05.2017, 16:23
    #39458255
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами из данных формы.
tasha klemerПрошу указать на мою ошибку.Ну что жжж...
tasha klemer
Код: vbnet
1.
Dim par1, par2 As DAO.Parameter

Это равноценно
Код: vbnet
1.
Dim par1 As Variant, par2 As DAO.Parameter


tasha klemer
Код: vbnet
1.
SELECT т1.поле1 т2.поле 2, т2.поле3, т1.поле4 FROM т1, т2" 

Это кому и куда? Должна быть текстовая переменная которой присваивается текст.
tasha klemer
Код: vbnet
1.
2.
3.
CurrentDb.QueryDefs.Delete "Запрос_"
...
CreateQueryDef("Запрос_", strSQL)

Зачем удалять всё время и создавать заново запрос, можно просто менять текст запроса - свойство SQL


Не проще ли, просто присвоить в конструкторе отчёта текст запроса и открывать отчёт
либо
Код: vbnet
1.
Docmd.OpenReport "Название", WhereCondition:="т1.поле1 =  т2 .поле1 and  (т1.поле4>= #" & Format(Me.Dat1_, "mm\/dd\/yy") & "#) And ( т1.поле4 <=#" & Format(Me.Dat2_, "mm\/dd\/yy") & "#) "


либо присваивать фильтр при открытии
Код: vbnet
1.
2.
3.
4.
Private Sub Report_Load()
Me.Filter="т1.поле1 =  т2 .поле1 and  (т1.поле4>= #" & Format(Forms![Форма].Dat1_, "mm\/dd\/yy") & "#) And ( т1.поле4 <=#" & Format(Forms![Форма].Dat2_, "mm\/dd\/yy") & "#) "
Me.FilterOn=True
End Sub
...
Рейтинг: 0 / 0
24.05.2017, 11:35
    #39458715
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами из данных формы.
Спасибо за помощь.
Воспользовалась вариантом с фильтром....
теперь нужно сделать сорртировку. Делаю как описано в примерах
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Report_Load()


Me.Filter = "Отказы.[Дата ]>=#" & Format(Forms![УсловияПечати].Dat1_, "mm\/dd\/yy") & "# And Отказы.[Дата ]<=#" & Format(Forms![УсловияПечати].Dat2_, "mm\/dd\/yy") & "#"
Me.FilterOn = True

Me.OrderByOn = False
If Forms![УсловияПечати].Группа10 = 1 Then
    Me.OrderBy = "Отказы.[Дата ] DESC"
ElseIf Forms![УсловияПечати].Группа10 = 2 Then
    Me.OrderBy = "НПС.НПС DESC"
End If
 Me.OrderByOn = True
Debug.Print Me.OrderBy;
 Me.Requery

End Sub




но сортировка не выходит.
...
Рейтинг: 0 / 0
24.05.2017, 13:28
    #39458845
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами из данных формы.
tasha klemer,
и не выйдет-Вы хотите изменить порядок сортировки для всего столбца который одновременно принадлежит ВСЕМ группам
...
Рейтинг: 0 / 0
24.05.2017, 13:31
    #39458852
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами из данных формы.
вдогонку-попробуйте подчиненный отчет с сортировкой и отбором в зависимости от группы
...
Рейтинг: 0 / 0
24.05.2017, 14:45
    #39458916
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами из данных формы.
sdku,а не могли бы вы раскрыть свою мысль подробнее...
...
Рейтинг: 0 / 0
24.05.2017, 15:15
    #39458939
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами из данных формы.
tasha klemer,

как вариант --можно в запрос добавить дополнительные поля для сортироки и относительно их сделать отчет

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select client as sort1, dara_prodagi as sort2,.....,client,data_prodagi,tovar from tab1

или

select data as sort1, tovar  as sort2,.....,client,data_prodagi from tab1

или 

select client as sort1, tovar  as sort2,.....,client,data_prodagi from tab1

или 

select tovar as sort1,client  as sort2,.....,client,data_prodagi from tab1
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с параметрами из данных формы. / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]