2016-05-30 5 views
1

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

Чего достичь: Я хотел бы видеть те же данные в своем отчете и в моей отфильтрованной форме.

Вопрос: Есть ли какой-нибудь трюк, чтобы применить фильтр формы таблицы данных к моему отчету?

Важно: Я не могу использовать несвязанные поля в своей форме для фильтрации запроса. Это должна быть идея Excel как фильтрация. Я имею в виду, пользователь должен иметь возможность щелкнуть маленький треугольник в каждом столбце формы таблицы данных, выбрать некоторые данные из списка и затем открыть отчет. Отчет должен «запомнить» настройки фильтра формы.

ответ

1

Отчет основан на запросе, поэтому вы не можете открыть отчет из окна базы данных/панели навигации и легко изменить исходные данные в соответствии с тем, что отображается в открытой форме. (Возможно, но требуется некоторое кодирование.)

Вы можете поместить форму в виде подформы на новую, пустую форму, чтобы затем добавить кнопку для предварительного просмотра отчета.

Кнопка будет просматривать отчет и включать Filter. Этот фильтр может быть скопирован с используемым в настоящее время подчиненный:

Private Sub cmdPreview_Click() 
    'Debug.Print Me.Controls("frmStaffFilter").Form.Filter 
    DoCmd.OpenReport "rptStaffFilter", acViewReport, , Me.Controls("sbfStaffFilter").Form.Filter 
End Sub 

(Это использует Где аргумент, а не по имени фильтра, который является аргументом до этого.)


Based на этом вы могли бы достичь того, о чем я впервые упомянул. Вы должны использовать событие «Открыть отчет», чтобы сначала проверить, открыта ли форма (и ее подчиненная форма); затем прочитайте и примените фильтр подформы, адаптировав мой код выше.

+0

ОК, это заняло некоторое время, но в конце концов я получил эту идею. Я заменил ваш аргумент Where: Me.Controls («sbfStaffFilter»). Form.Filter от Forms! SbfStaffFilter.Form.Filter , и он отлично работает сейчас. Большое спасибо за вашу помощь, Энди G :) – YourNick

Смежные вопросы