0

我不知道如何做到这一点。我正在使用 Access 2007,并使用 VBA 和 SQL 进行编码。

表 A 包含数据、帐户和金额。用户可以使用表单 B 访问 A 中的数据子集,例如,金额在 50 美元到 100 美元之间的所有行。

当用户查看一行时,我需要知道是否还有其他具有相同帐户的行被排除在他们的视图之外。换句话说,我需要知道父项中是否有可见的行在子项中不可见。

我认为一个解决方案是确定哪些过滤器在他们的视图中处于活动状态,然后我可以使用 dcount 进行比较。不过,我不知道如何获取在他们看来处于活动状态的过滤器。并且可能有更简单的方法 - 我在这里超出了我的深度。

4

1 回答 1

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

以上内容未经测试,就目前而言,如果它运行的话,只会运行一次,因为创建了一个新查询,而不是编辑现有查询。

于 2012-08-09T10:18:50.780 回答