2014-11-06 5 views
0

배경 : 두 개의 테이블이 있습니다. 하나는 클라이언트 목록과 몇 가지 기본적인 클라이언트 속성 (tblClient)을 가지고 있습니다. 두 번째 제품 목록이 있습니다. 각 클라이언트는 여러 제품을 가질 수 있으므로 일대 다 (여기서 클라이언트 키)는 제품 테이블의 외래 키입니다.MS 액세스의 하위 양식

내가 찾고있는 것 : 두 가지 양식을 만들려고합니다. 기본 폼은 클라이언트의 스냅 샷을 가지며 모든 제품의 요약을 제공하는 작은 중첩 테이블을가집니다. 이것은 성공적으로 완료되었습니다. 또한 제품과 관련된 모든 세부 정보를 입력 할 수있는 두 번째 양식을 작성했습니다 (제품 데이터 테이블과 일치). 내가하고 싶은 일은 클릭 할 때 클라이언트가 현재 사용하는 제품에 대해서만 제품 양식을 여는 주 클라이언트 양식에 버튼을 갖는 것입니다. 제품이 없으면 사전에 입력 한 정보 (예 : 고객 이름)가있는 빈 양식이 열립니다. 예를 들어 John Doe 고객을 검토 중이며 현재 제품 A, B 및 C가있는 경우 버튼을 클릭하여 John Doe의 제품 세부 정보를 가져 오려고합니다. 그가 제품이 없다면 Access가 혼란을 피하기 위해 John Doe의 이름으로 채워진 새로운 엔트리 제품 양식을 열어주세요.

나는 매우 접근하기 쉽고, 어떤 도움을 주시면 대단히 감사하겠습니다.

감사 Z는 내가 당신의 두번째 양식을 믿고있어

+0

StackOverflow에 오신 것을 환영합니다! 불행히도 귀하의 질문은 너무 광범위합니다. 몇 가지 조사를 해보십시오 (Access에 대한 온라인 자습서 및 교육용 비디오가 꽤 많이 있습니다). 특정 코딩 문제가있는 경우 모두 도와 드리겠습니다. – Barranka

+0

하위 형식으로 간주 했습니까? 또는 DoCmd 개체의 OpenForm 메서드를 살펴보십시오. – Fionnuala

답변

1

테이블에 연결되어? 그렇다면 열 때 레코드 세트를 필터링하십시오.

예를 들어 버튼의 OnClick 이벤트는 현재 ClientID를보고 해당 ClientID를 기반으로 양식을 엽니 다.

Dim stDocName As String 
Dim stOpenArg As String 

'Make stDocName the name of the form you're going to open 
stDocName = "frmAssignProject" 
'Make stOpenArg your variable to filter on 
stOpenArg = Me.ClientID 

DoCmd.OpenForm stDocName, , , , , , stOpenArg 

그런 다음, 두 번째 양식의 OnLoad 이벤트에서, 필터 당신 OpenArg에 따라 : 위의

private sub form_load() 
    Dim rs as DAO.Recordset 

    Me.RecordSource = "Select * From tblProducts Where ClientID = " & OpenArgs & "" 

    Set rs = Me.RecordsetClone 

    'This is where it determines if it should pull in the data from the previous form 
    If rs.RecordCount > 0 Then  
    else 
     Me.ClientID = Forms!frmClients.ClientID 
     Me.ClientName = Forms!frmClients.ClientName 
     etc... 
    end if 

end sub 

그것은 일부 조정이 필요 아마되지만 개념은, "에어 코드"전적으로 소리.