2012-08-08 3 views
0

나는 이것을 수행하는 방법에 대한 단서가 없습니다. 저는 Access 2007을 사용하고 있으며 VBA와 SQL로 코딩하고 있습니다.가상 자식 필터를 부모 테이블과 비교하면

표 A에는 데이터, 계정 및 금액이 있습니다. 사용자는 양식 B를 사용하여 A에있는 데이터의 서브 세트, 예를 들어 $ 50와 $ 100 사이의 모든 행을 액세스 할 수 있습니다.

사용자가 행을 볼 때보기에서 제외 된 동일한 계정의 다른 행이 있는지 알아야합니다. 즉, 자식에서 볼 수없는 행이 부모에 표시되는지 여부를 알아야합니다.

해결책은 필터가 활성 상태인지 확인하고 dcount를 사용하여 비교할 수 있다고 생각합니다. 그래도 자신의 견해에서 활발한 필터를 얻는 방법을 모르겠습니다. 그리고 더 쉬운 방법이있을 수 있습니다 - 나는 여기서 깊이 빠져 있습니다.

답변

1

TableA에 기본 키 ID가 있다고 가정합니다. FormB의 현재 이벤트를 사용 :

Dim rs AS DAO.Recordset 

dAmt = Me.Amount 
sAcc = Me.Account 

''Get a list of visible IDs 
With Me.RecordsetClone 
    .MoveFirst 

    Do While Not .EOF 
     If !Amount=dAmt And !Account=sAcc Then 
      sIDs = sIDs & "," & .ID 
     End If 
     .MoveNext 
    Loop 
End with 

''Other IDs 
sSQL = "SELECT * FROM TableA " 
     & "WHERE Amount = " & dAmt _ 
     & "Account = '" & sAcc _ 
     & "' ID Not In (" & Mid(sIDs,2) & ")" 

CurrentDB.CreateQueryDef("NewQ",sSQL") 
Docmd.OpenQuery NewQ 

위는 안된이며, 스탠드로 전혀 실행하면 새 쿼리가 만들어지기 때문에, 단지 기존 쿼리를 편집하는 것이 아니라, 한 번 실행됩니다 .

+0

감사합니다. 나는 다른 방향으로가는 것을 끝내었다. (버튼을 항상 보이게하고 사용자가 더 많이보고 싶은지를 결정하게한다.)하지만 이것은 합리적이다. 그리고 다른 점에서 이것을해야한다면, 나는 지금 점을 뛰어 넘는다. . – graidan