2015-02-12 8 views
2

Здесь все еще программист для начинающих. Попытка заставить отчет работать. Вот что я делаюФильтрация запроса на отчет

Я первым создал отчет с помощью мастера отчетов с помощью следующего запроса в качестве входных данных

SELECT EmployeeId, Project, StartDate 
FROM Tasks; 

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

DoCmd.OpenReport "rptEmpWork", acViewPreview, "qryEmpReport", "EmployeeId = " & strempid 

qryEmpReport это имя запроса, который содержит запрос отчета, который я упоминал выше. Strempid содержит значение, которое было выбрано в форме. Однако, когда я собираюсь выполнить это, он предлагает мне снова ввести идентификатор сотрудника. Любые идеи относительно того, почему я получаю это? Я подтвердил, что strempid содержит значение, выбранное ранее.

ответ

2

Предполагаю, что Tasks.EmployeeId является текстовым типом данных. Если мое предположение верно, то в кавычках значения вы поставляете для EmployeeId:

DoCmd.OpenReport "rptEmpWork", acViewPreview, "qryEmpReport", "EmployeeId = '" & strempid & "'" 

Основываясь на наших бесперебойной съемке упражнений в комментариях, я думаю, вы должны дать себе возможность изучить фактическое строковое значение» re давая OpenReport за его WhereCondition аргумент. (Это лучше, чтобы увидеть реальную строку вместо того, чтобы пытаться представить себе, как он выглядит.)

Dim strWhereCondition As String 
strWhereCondition = "EmployeeId = '" & strempid & "'" 
Debug.Print "strWhereCondition ->" & strWhereCondition & "<-" 
DoCmd.OpenReport "rptEmpWork", acViewPreview, "qryEmpReport", strWhereCondition 

Посмотреть выход из Debug.Print в открывшемся окне; Ctrl + g доставит вас туда.

+0

Спасибо. Это определенно взяло подсказку, но отчет оказался пустым. Имеются данные, которые удовлетворяют условию в таблице. Нужно ли мне обрезать стук? – rajeev

+0

Запустите этот запрос параметров в конструкторе запросов Access и подключите его значение * strempid *, когда он предложит вам *, который является идентификатором сотрудника *: 'SELECT EmployeeId, Project, StartDate FROM Tasks WHERE EmployeeId = [какой идентификатор сотрудника];' Does it вернуть записи? Если да, то будут ли эти записи? – HansUp

+0

это хорошо работает. Возвращает 1 строку, которую я ожидаю. вот запрос SELECT EmployeeId, Project, StartDate FROM Задачи WHERE EmployeeId = 'A111111'. Я использовал запрос для запроса. Я хотел указать, что я ввел – rajeev

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