MS Access 2016 SQL in VBA



我敢肯定我犯了一个简单的错误。我有一个带有我在MS访问中的表的SQL Server。我正在尝试以OnLoad表格运行SQL查询,以根据我的表单中的值填充文本框。

以下是我的代码。我想要返回的字段 te 是MSSQL中的VARCHAR,而访问中的简短文本。我在文本框上获得了'Type Mismatch'。当我尝试输出到MsgBox时,我会得到:

'rst!te不在收集中'。

tn和tn_1是小的,在访问中,它们是数字。

Dim rst As DAO.Database
Set rst = CurrentDb
rst.OpenRecordset "SELECT dbo_STCH.TE FROM dbo_STCH RIGHT JOIN dbo_SCVR ON               dbo_STCH.TN = dbo_SCVR.TN_1 WHERE dbo_SCVR.TN_1=99;"
Me.Text22.Text = rst!TE
rst.Close
Set rst = Nothing

您正在将DAO记录集和数据库混合在一起,因此消息是正确的,因为该项目在集合中找不到。只需将 rst 初始化为记录集,然后将其分配给OpenRecordset调用。

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT dbo_STCH.TE FROM dbo_STCH" _
                                  & " RIGHT JOIN dbo_SCVR ON dbo_STCH.TN = dbo_SCVR.TN_1" _
                                  & " WHERE dbo_SCVR.TN_1=99;")
Me.Text22.Text = rst!TE
rst.Close
Set rst = Nothing

您必须使用rst.MoveFirst在阅读任何值之前,都可以转到打开的记录集的第一个记录。

也是上面的答案,您必须 Set rst = CurrentDb.OpenRecordset

最新更新