2012-12-18 2 views
1

DoCmd.OpenReport 기능의 배경을 이해하는 데 도움이 필요합니다. 내 데이터베이스 테이블의 모든 레코드가 포함 된 보고서를 생성하는 폼에 단추가 있습니다. 양식에 표시된 정보를 기반으로 보고서를 생성하기를 원합니다. 마법사를 사용하여 요약 보고서를 생성하기 위해 명령 단추를 양식에 추가했으며 여기에는 자동화 된 VBA가 있습니다.양식을 기반으로 한 MS-Access 필터링 보고서

Private Sub GenRpt_Click() 
On Error GoTo Err_GenRpt_Click 
Dim stDocName As String 
Dim FrmId As String 
stDocName = "Summary v2" 
DoCmd.OpenReport stDocName, acPreview 
Exit_GenRpt_Click: 
Exit Sub 
Err_GenRpt_Click: 
MsgBox Err.Description 
Resume Exit_GenRpt_Click 
End Sub 

나는 난 그냥 DoCmd.OpenReport 후 코드에 조건부 staement의 soime 종류를 삽입 suppoed하고 있지만, 보고서를 필터링 할 양식에서 사용자 ID를 전달하는 방법을 파악하지 못할 것을 알고있다. 내 양식에는 UserID가 들어있는 텍스트 상자 "Text31"이 있습니다. 내 보고서에는 결과에 해당하는 텍스트 상자 "tstUserID"가 있습니다. 내 cmd 단추를 누르기 전에 보고서 결과를 "Text31"에 표시된 사용자 ID로만 제한하려면 어떻게합니까? * 같은

답변

2

뭔가 :

DoCmd.OpenReport stDocName, acPreview,,"UserID=" & Me.Text31 

사용자 ID는 숫자 필드의 이름입니다 보고서의 레코드 원본에 포함되어 있습니다.

필드가 텍스트 데이터 형식 인 경우, 당신이 필요합니다 따옴표 :

DoCmd.OpenReport stDocName, acPreview,,"UserID='" & Me.Text31 & "'" 

그것은 아이디가 내부 따옴표를 포함 할 가능성이 보이지 않는다, 그래서 위, 충분히 안전해야 그 경우 당신은 WHERE 조건을 추가

DoCmd.OpenReport stDocName, acPreview,,"UserID='" _ 
    & Replace(Me.Text31,"'","''") & "'" 

, 그것은 쿼리의 WHERE 문에 매우 유사한 형태를 취한다 : 가능성이했다, 당신과 같이 탈출해야합니다. * The Syntax for Openreport is given as


:

DoCmd.OpenReport(ReportName, View, FilterName, _ 
    WhereCondition, WindowMode, OpenArgs) 
+0

Remou는, 사용자 ID는 ABC123과 같은, 그래서 두 번째 구문을 사용해야합니다. 다음과 같이 입력했는데 구문 오류가 나타납니다. DoCmd.OpenReport (stDocName, View, FilterName, _ WhereCondition : = "UserID ="& Me.Text31, WindowMode, OpenArgs) –

+0

오해, 나는 명확히 할 것입니다. – Fionnuala

관련 문제