首页 > 解决方案 > MS Access VBA DoCmd.OpenForm 使用 where 子句不过滤基于 DAO 查询的记录集

问题描述

我正在尝试摆脱链接表并仅使用 VBA 代码来生成记录集。我发现在我的 DoCmd.OpenForm 命令中使用 where 子句过滤数据不起作用。这是预期的行为吗?或者也许它应该工作并且问题位于其他地方...... OpenArgs 是唯一让我这样做的事情吗?

为了澄清我的问题:

我有两个 ms 访问表单:一个(连续表单)带有超链接和后面的点击代码,如下所示

Private Sub txtPerson_Click()
    DoCmd.OpenForm "frmPersonnelDetails", , , "PersonId = " & Me.txtPersonID, acFormReadOnly, acDialog
End Sub

第二个(frmPersonnelDetails),未连接到任何记录源,记录集使用以下命令创建:

Private Sub Form_Load()
    strQuery = "SELECT PersonID, Abbreviation, FirstName, LastName FROM SomeTable"
    Set objDaoDb = GetDAODbConn  'function that returns database connection object
    Set objDaoRS = objDaoDb.OpenRecordset(strQuery, dbOpenDynaset, dbSeeChanges)
    Set Me.Form.Recordset = objDaoRS
End Sub

现在,where 子句不起作用。第二种形式总是在第一条记录上打开。正常吗?在指定记录上打开它的最佳方法是什么?

标签: formsms-accesswhere-clausedao

解决方案


推荐阅读