2017-05-03 1 views
0

Microsoft Access에서 보고서 데이터라는 데이터 테이블에 저장된 식별 번호, 위치, 메모 등의 데이터를 사용자에게 제공하는 보고서를 만들었습니다. 보고서를 열기 위해 클릭하면 모든 2000 페이지 이상의 보고서가로드됩니다 (1 IDENT NO). 그러나 IDENT NO를 입력하여로드/표시 할 사용자가 선택한 보고서 하나만을 원합니다.Microsoft Access VBA : 필터 보고서 단추

클릭하면 다음과 같은 코드로 사용자가 입력 한 IDENT NO로 보고서를 필터링하려는 버튼을 만들었습니다. 사용자가 버튼을 클릭하면 팝업에서 IDENT NO, 해당 IDENT NO와 연관된 단일 보고서 만 열려고합니다. 그러나 그렇게 할 때, 원하는대로 한 페이지 보고서 만로드되지만 다른 데이터 필드는 채워지지 않습니다. 잠시 동안 코드를 가지고 놀았지만 지금은 할 수 없습니다. 문제가 아래 코드를 기반으로하는지 또는 다른 문제로 인해 발생하는지 파악하는 것 같습니다.

참조 용으로 식별 번호는 대시로 표시된 다음 형태로 표시됩니다. 1940-1 또는 1940-2 또는 2910-1은 모두 식별 번호의 예입니다.

Private Sub Command33_Click() 

Dim id As String 
    id = InputBox("Enter the identification number:", "Report Filter") 

'if a value was entered, open and filter report 
If Len(Trim(id)) > 0 Then 
    DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] like " & id, acWindowNormal 
End If 


End Sub 

답변

0

귀하의 ID '숫자'는 텍스트 값입니다. 따라서 ID 필드는 텍스트 유형입니다. 텍스트 필드의 필터 매개 변수에는 아포스트로피 구분 기호가 필요합니다. * 와일드 카드없이 LIKE 연산자를 사용하면 = 기호 만 사용하면됩니다.

DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] = '" & id & "'", acWindowNormal

나는 함께 아포스트로피없이 테스트를했다. 팝업없이 두 개의 팝업 입력 프롬프트가 있는데, 아포스트로피는 InputBox 만 팝업되었습니다. 그러나 두 경우 모두 보고서는 여전히 필터링 된 데이터와 함께 열렸습니다. 그래서 다른 문제가 귀하의 문제와 관련 될 수 있습니다. DB를 직접 검토해야 할 수도 있습니다. 제공하려는 경우 Box.com과 같은 파일 공유 사이트에 업로드하고 파일에 대한 링크를 게시 할 수 있습니다.

입력란 항목을 확인하기가 어렵습니다. 항목이 사용자에게 불만을 일으키는 유효하지 않은 경우에도 보고서가 실행됩니다. 사용자 선택을위한 양식에 콤보 상자를 사용하는 것이 더 좋을 것입니다.

이름에는 공백이나 구두점/특수 문자 (밑줄 만 예외)가 표시되지 않습니다.

+0

위의 내용을 수정하여 사용자가 입력 한 것으로 시작하는 보고서를 열 수 있습니까? 예를 들어 IDENT NO의 1940-1, 1940-2 및 1940-3 보고서가 있고 사용자가 InputBox에 1940 만 입력 한 경우 보고서 3 개가 모두 표시됩니까? – Xcelrate

+0

""[IDENT NO] LIKE ' "& id &"*' "'- 콤보 상자는 여전히 내가 권장하는 방법입니다. 입력 값을 나열된 값으로 제한하지 않도록 설정하십시오. 그러나 목록은 유효한 완전한 ID 번호에 대해 사용자를 안내하기 위해 여전히 존재할 것입니다. – June7

+0

나는 당신이 무엇을 얻고 있는지 보았습니다. 내가 콤보 박스 선택을 열기 위해 버튼을 클릭하는 것과 같은 코드 라인에서 InputBox를 대체 할 수있는 콤보 박스 기능이 있습니까? 또한이 경우 코드의 나머지 부분에 추가 수정이 필요합니까? – Xcelrate

0

IdentNo는 텍스트 입력란처럼 보입니다. 작은 따옴표로 범위를 지정해야합니다. 따라서 :

If Len(Trim(id)) > 0 Then 
    DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] like '" & id & "'", acWindowNormal 
End If 

텍스트가 아닌 경우 (즉, Int 또는 Double) 그랬다면 그렇게했을 것입니다. 작은 따옴표는 필요하지 않습니다.

관련 문제