【发布时间】:2018-02-28 08:15:27
【问题描述】:
这是我的代码:
Dim thisCase As Integer
Dim thisIssueID As Integer
Dim provCase As Integer
Dim rst As Recordset
thisCase = Forms!frmCases.CaseID
thisIssueID = Forms!frmCases![frmissues subform].Form!IssueID
Set rst = CurrentDb.OpenRecordset("select tblissues.caseid from tblcases inner join tblissues on tblcases.caseid = tblIssues.caseid where tblIssues.IssueID = " & thisIssueID) 'CStr(Forms!frmCases![frmissues subform].Form!IssueID))
rst.MoveLast
rst.MoveFirst
不断为“Set rst =”行返回“类型不匹配”。我已经将记录集定义作为查询运行(在删除双引号和 & 之后)并且它运行了。
相等的两个字段是相同的数据类型(ok autonumber 和 number)。但查询有效。我尝试使用 + 而不是 & 并没有帮助。
有什么想法吗?
另外,在代码中,我生成了以下字符串来代替:
select tblissues.caseid from tblcases inner join tblissues on tblcases.caseid = tblIssues.caseid where tblIssues.IssueID = 24255
在查询中有效,但是当我将包含字符串的变量放入记录集定义时,我仍然得到“类型不匹配”。如果我尝试在最后的值周围加上单引号,我会得到“数据类型不匹配”,所以显然它不是数据类型不匹配。
【问题讨论】:
-
尝试将变量声明为 Long 而不是 Integer。
-
几个建议。如果你期待一个 DAO.Recordset,你应该这样声明它。否则,如果 ADO 是默认设置,则需要在 ADO Recordset 声明中添加“NEW”。您还可以在运行 set recordset 命令之前添加一个“Debug.Print thisIssueID”,以确保您得到您期望的结果,
-
我比较懒惰,我对 DAO 记录集有更多经验,我忘记了差异。