0

我正在使用 VBA 打开一个表单。如果这很重要,该表单有一个针对记录源的交叉表查询。我在尝试

DoCmd.OpenForm Form_frmMyForm.Name, , , "ID = 7"

(最终我会将“= 7”替换为更有用的东西。这只是为了测试)

但是当它到达那条线时我得到一个错误:

Run-time error '3070":
The Microsoft Access database engine does not recognize 'ID' as a valid field name or expression.

我已经肯定地确认“ID”字段在我的交叉表查询中。事实上,我在几个控件中使用该字段没有问题。

我也试过

 Form_frmMyForm.Recordset.FindFirst "ID = 7"
 MsgBox (Form_frmMyForm.Recordset.NoMatch)

它显示“False”,表示存在匹配,但是,表单不会前进到该记录。

有什么想法我可能会错过吗?

4

2 回答 2

0

尝试改变:

Form_frmMyForm.Recordset.FindFirst "ID = 7"

Form_frmMyForm.Recordset.FindFirst "[ID] = 7"

在引用记录集中的字段时,您需要这些方括号。然后要使用变量,您可以执行以下操作:

Form_frmMyForm.Recordset.FindFirst ("[ID] = " & Me.Whatever & "")

更新:

DoCmd.OpenForm Form_frmMyForm.Name, , , Form_frmMyForm.Recordset.FindFirst "[ID] = 7"
于 2013-07-09T12:26:56.730 回答
0

基础数据中的 ID 还是交叉表生成的列?

我想知道是否在生成交叉表列之前应用了条件,因此当它开始获取数据(并尝试应用条件)时,它看不到 ID 列,因为它尚未创建。

于 2013-07-09T12:32:41.983 回答