【发布时间】:2016-08-09 03:35:52
【问题描述】:
我想返回一个表中只有一个链接记录在另一个表中的记录。
例如,2 个表 tblClients 和 tblOrders 具有由 tblClients.ID 和 tblOrders.ClientID 链接的 OTM 关系(不完全是我的情况,但更容易解释)。我希望使用过滤器打开 frmClients,其中客户端仅下了一个订单 - 即 tblorders.ClientID 未在 tblOrders 的另一条记录中重复的记录。
通过阅读,SELECT/COUNT 查询似乎是可行的方法,但我似乎无法让语法正常工作。到目前为止,这是我所得到的:
Public Function onlyone()
Dim uWHERE As String
uWHERE = "SELECT tblOrders.Client_ID FROM tblOrders WHERE Count(tblOrders.Client_ID) = 1;"
Debug.Print uWHERE
End Function
我对 SQL 非常有限,对 VBA 并不出色(如果从上面看不出来的话!)如果我在 OpenForm 中运行此代码,使用 uWHERE 作为 WHERE 子句,我会收到语法错误(我有其他更简单的 WHERE 子句在其他子句中工作正常)。如果我将 uWHERE 输出到 msgbox,我会得到 SELECT 字符串作为提示,而 debug.print 行什么也不做。
我认为我完全错误地处理了这个语法,或者没有弄清楚 SELECT 查询实际上在拉什么,但不知道如何解决它。我会很感激一些指导=]
谢谢!
编辑++++++++++++++++++
好的,不同的策略。 tblOrders 有一个未绑定的列表框,其行源是从为该 Client_ID 下订单的日期设置的。如果他们只下了一个订单,那么只有一个条目,那么有没有办法可以打开表单,只显示在这个列表框中有一个条目的记录?我试过了
Dim uWHERE As String
DoCmd.OpenForm "frmworklog", , , , acFormEdit
With frmworklog
Filter = "forms!frmworklog.searchres.listcount = 1"
FilterOn = True
End With
Msgbox Forms!frmworklog.searchres.ListCount
过滤器不起作用,但 msgbox 给出了打开记录的正确计数。 uWHERE 是一个 WHERE 子句,其定义与现在的 'Filter' 相同 - 我只是忘了取出声明。
非常感谢 =]
【问题讨论】:
-
请用您正在使用的数据库标记您的问题。
标签: mysql ms-access select count vba