|
146 Кб. |
|
| Есть таблица, на основе этой таблицы есть форма которая в свою очередь по фильтру фильтрует и отображает информацию. Как сделать так чтобы отчет формировался из ходя из того какие данные по фильтру выбраны в форме. Если нужен файл я добавлю. Спасибо огромное. | |
|
| |
|
|
|
| нужно запускать запрос с этими фильтрами.
Для этого надо создать запрос , в условиях отбора которого будут ссылки на соответствующие поля формы.
запрос лучше расположить в теле программы(событие кнопки)
DoCmd.RunSQL " sele.................... | |
|
| |
|
|
|
| а не проще в отчете на открытие повесить
me.recordsourse=forms!имя_формі!recordsourse | |
|
| |
|
|
|
| кот - не получится
там фильтрация идет
(используется me.filter)
так что через recordsource не пролезет | |
|
| |
|
|
|
| ну можно извернуться типа
str_=me.recordsourse
if instr(str_, "where")<>0 then
str_sql=mid (str_, 1,instr(str_, "where")+5) & " " & Me.Filter & " and " & mid (str_, instr(str_, "where")+5))
else
if instr(str_, "order")<>0 then
str_sql=mid (str_, 1,instr(str_, "order")-1) & " where " & Me.Filter & " " & mid (str_, instr(str_, "order")))
else
str_sql=str_ & " where " & Me.Filter
end if
end if
|
| |
|
| |
|
|
|
| ваша форма предназначена для просмотра информации или для корректировки
очевидно первое
при отборе используйте не фильтр, а переформирование запроса
me.recordsource=""
s1="select .............. where......."
currentdb.querydefs("zrab").sql=s1
currentdb.querydefs.refresh
полученный запрос применяйте и для формы и для отчета | |
|
| |
|
|
|
| Если у отчета источник тот же, что и у формы, то в 90% случаев достаточно методу DoCmd.OpenReport в аргументе WhereCondition указать значение из св-ва Filter формы. Но надежнее - пройтись по RecordsetClone формы, собрать ID запиисей в конструкцию "[ID] In (1, 3, 6....)" и передать вышеописанному методу. | |
|
| |
|
|
|
| и как всегда очень нехватает таблицы ГОД :)
схема данных очень плохая | |
|
| |
|
|
|
| У Анатолия(Киев) как всегда красивое решение
вот сделал как у него написано
кнопка64 расположена на форме
Private Sub Кнопка64_Click()
If Me.FilterOn = True Then
DoCmd.OpenReport "Отчет", acViewPreview, "", Me.Filter, acNormal
Else
DoCmd.OpenReport "Отчет", acViewPreview
End If
End Sub | |
|
| |
|
|
|
|
|
|
f Me.FilterOn = True Then
DoCmd.OpenReport "Отчет", acViewPreview, "", Me.Filter, acNormal
Else
DoCmd.OpenReport "Отчет", acViewPreview
End If
|
Эту конструкцию можно заменить одной строкой:
DoCmd.OpenReport "Отчет", acViewPreview, "", IIF(Me.FilterOn, Me.Filter, ""), acNormal
|
| |
|
| |