我不知道如何做这件事。我使用的是Access 2007,并用VBA和SQL编码。
表A有数据、帐目和金额。用户可以使用表单B来访问A中的数据子集,例如,金额在$50和$100之间的所有行。
当用户查看某一行时,我需要知道是否有任何其他行的相同帐户被排除在他们的视图之外。换句话说,我需要知道父对象中是否有行在父对象中可见,而在子对象中不可见。
我认为一个解决方案是确定哪些过滤器在他们的视图上是活动的,然后我可以使用dcount进行比较。不过,我不知道如何获取在它们的视图中处于活动状态的过滤器。也许有一种更简单的方法-我在这里超出了我的能力范围。
发布于 2012-08-09 18:18:51
让我们假设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上面的代码是未经测试的,如果它运行了的话,它只会运行一次,因为创建了一个新的查询,而不是正在编辑的现有查询。
https://stackoverflow.com/questions/11874309
复制相似问题