2016-12-13 5 views
-2

내 양식이 양식 머리글, 본문 섹션 및 양식 바닥 글 (디자인 모드)으로 나뉩니다. 모든 테이블 필드는 Detail 섹션에 나열됩니다.MS ACCESS - 양식에서 동적으로 데이터 변경

나는 사람의 이름 (하이퍼 링크로 표시됨)을 클릭 할 때이 방법으로 작동시켜야합니다. 세부 구역은 이름 필드 값이 내가 클릭 한 것과 동일한 테이블의 레코드를 보여줘야합니다. 표시된 필드의 수는 동일하게 유지되어야합니다.

나는 VB에서 절차를 썼다 :

Private Sub GE_PERSON_Click() 

Dim strSQL As String 

strSQL = "SELECT GENERIC.GE_ID, GENERIC.GE_OPEN AS [OPEN], Workforce.WF_NAME AS PERSON, [GENERIC].[GE_DATEIN] AS RECEIVED, GENERIC.GE_DATEREQUESTED AS [STARTING DATE], GENERIC.GE_CONSECUTIVE AS CONSECUTIVE, GENERIC.GE_AMOUNT AS [DAYS TAKEN], ABSENCE.AB_TYPE AS [ABSENCE TYPE], [GENERIC].[GE_STATUS] AS STATUS" 
strSQL = strSQL + "FROM (GENERIC INNER JOIN Workforce ON GENERIC.[GE_PERSON] = Workforce.[WF_ID]) INNER JOIN ABSENCE ON GENERIC.[GE_TYPE] = ABSENCE.[AB_ID]" 
strSQL = strSQL + "WHERE WORKFORCE.[WF_NAME] = " + Form_GENERIC.GE_PERSON 
strSQL = strSQL + "ORDER BY GENERIC.GE_DATEREQUESTED;" 

Form_GENERIC.RecordSource = strSQL 

End Sub 

내가 오류를받은 Form_GENERIC.RecordSourcestrSQL을 지정합니다. 나는 기본 폼에 형성 문자열에서 GENERIC 레코드 원본 데이터를 보낼 수 없습니다 -이 오류를

런타임 오류 3141

원인 : SELECT 문을 예약 단어 나 철자가 잘못되거나 누락, 또는 문장 부호가되는 인수 이름을 포함 잘못된

확실히 도움이 필요합니다!

+0

을 방지하기 위해 공간을 추가 하시겠습니까? 하위 폼이 있습니까? 양식 설명만으로는 최종 답을 얻을 수 없습니다. – MoondogsMaDawg

+0

내가 이걸 볼 수 있는지 보도록하겠습니다. 'NAME' 필드를 클릭하면 현재 폼을 필터링합니다 (서브 폼이있는 경우 언급하지 않았습니다. 분할 된 하위 폼 또는 필터링 된 레코드가 표시되는 경우). 그것이 스프레드 시트 모드에 있다고 가정합니다. – Lybren

+1

[VBA에서 동적 SQL을 디버깅하는 방법] (http://stackoverflow.com/questions/418960/managing-and-debugging-sql-queries-in-ms-access/1099570#1099570) – Andre

답변

1

문자열을 연결할 때 각 줄의 시작 또는 끝에 공백을 포함해야합니다. 그렇지 않으면 문자열이 함께 푸시되어보고있는 오류가 발생합니다.

예. 이

strSQL = "SELECT field1, field2" 
strSQL = strSQL + "FROM table" 

을 할 경우이

"SELECT field1, field2FROM table" 

로 끝날 관련 기록이 표시되는 방법 오류

strSQL = "SELECT field1, field2" 
strSQL = strSQL + " FROM table" 
       ^
        put a space at the start of each concatenated line 
관련 문제