我对如何做到这一点一无所知。我正在使用Access 2007,并使用VBA和SQL进行编码。
表A包含数据,帐户和金额。用户可以使用表单B来访问A中数据的子集,例如,所有行的金额在$ 50和$ 100之间。
当用户查看某行时,我需要知道是否有任何其他行具有从其视图中排除的相同帐户。换句话说,我需要知道在父级中是否有可见的行在子级中不可见。
我认为解决方案是确定哪些过滤器在其视图中处于活动状态,然后我可以使用dcount进行比较。不过,我不知道如何获得他们视图中活跃的过滤器。并且可能有一种更简单的方法 - 我在这里超出了我的深度。
答案 0 :(得分: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
以上是未经测试的,如果它完全运行,它将只运行一次,因为创建了一个新查询,而不是正在编辑的现有查询。