2015-01-22 2 views
0

염료,서브 폼의 레코드 기록

저는 VBA에 액세스 할 새로운데, 저는 하위 폼에 레코드를 표시하고 싶습니다.

첫 번째 단계 확인란에서 고객 이름을 선택해야합니다.

둘째, 고객 이름을 선택하거나 클릭하면 시스템이 자동으로 레코드를 통과합니다. 예를 들어 나의 고객 이름은 A이므로 시스템은 고객 테이블을 통해 고객 A 주문 ID를 처리합니다. 그런 다음 시스템은 고객 A의 주문 ID를 가져오고 주문 ​​ID는 제품 테이블의 주문 ID와 비교됩니다. 제품 테이블의 주문 ID가 고객 테이블의 주문 ID와 동일한 경우. 그런 다음 동일한 주문 ID로 제품의 모든 레코드 (예 : 제품 이름, 만료 날짜, 수량)가 하위 양식에 표시됩니다.

여기 내 코드입니다. 나는 코멘트에서 보류 중 '세부 정보를 하위 폼으로 표시합니다.

Sub CustomerList_Review() 

Dim db As DAO.Database 
Dim rsCustLog As DAO.Recordset 
Dim rsPrdLog As DAO.Recordset 
Dim ordID As String 

Set db = CurrentDb 
Set rsCustLog = db.OpenRecordset("CustomerLog") 
Set rsPrdLog = db.OpenRecordset("ProductLog") 

Do Until rsCustLog.EOF 
    If rsCustLog("CUSTOMER NAME").Value = Forms![Customer Review].cbxCustName Then 
     ordID = rsCustLog("CUSTOMER NAME").Value 

     Do Until rsPrdLog.EOF 
      If rsPrdLog("ORDER ID").Value = ordID Then 
       'Display the details in the subform 
      End If 

     rsPrdLog.MoveNext 
    End If 

    rsCustLog.MoveNext 
Loop 
End Sub 

다른 고객 이름을 클릭 할 때마다 고객 세부 주문 ID와 관련하여 제품 세부 정보가 변경됩니다. 더 간단한 코드가 있다면. 알려줘.

도와 주셔서 감사합니다.

+0

다음 문서를 읽고 양식을 https://support.office.com/en-us/article/Create-a-form- that-contains-a-subform-264731d6-ca69-4204-94d8-c266fe084102? ui = en-US & rs = ko-US & ad = US – Jens

+0

@Jens는 제안에 감사드립니다. –

답변

0

LEFT OUTER JOIN 또는 LEFT JOIN 문을 사용하면 하위 양식에 표시해야 할 레코드를 얻을 수 있습니다. 다음은 간단한 코드입니다.

Sub CustomerList_Review() 

Dim db As DAO.Database 
Dim rsCustLog As DAO.Recordset 
Dim rsPrdLog As DAO.Recordset 
Dim custName As String 

Set db = CurrentDb 
Set rsCustLog = db.OpenRecordset("ORDER ID") 
Set rsPrdLog = db.OpenRecordset("PRODUCT LOG") 

custName = Forms![Customer Review]!cbxCustName.Text 
Forms![Customer Review]!subform1.Form.RecordSource = _ 
    "SELECT [ORDER ID].[ORDER ID], [PRODUCT LOG].[SKU], " _ 
    & "[PRODUCT LOG].[PRODUCT NAME], [PRODUCT LOG].[LOT NO], " _ 
    & "[PRODUCT LOG].[EXP DATE], [PRODUCT LOG].[QUANTITY] " _ 
    & "FROM [ORDER ID] LEFT OUTER JOIN [PRODUCT LOG] " _ 
    & "ON [ORDER ID].[ORDER ID] = [PRODUCT LOG].[ORDER ID] " _ 
    & "WHERE([ORDER ID].[CUSTOMER NAME] = """ & custName & """);" 
End Sub 
관련 문제