【发布时间】:2011-04-20 01:46:03
【问题描述】:
使用 Access 2007。我正在尝试编写一个 VBA 函数,该函数将从我作为参数传递的表名、字段和值构造一个查询。我不断收到“运行时错误'3464':标准表达式中的数据类型不匹配。”
代码如下:
Function getPrimaryFromForeign(db As Database, table As String, field As String, _
value As Long, _
field2 As String, value2 As Long) As Long
Dim sStr As String
Dim istr As String
Dim rs As Recordset
sStr = "select * from " & table & " where " _
& field & "='" & value & "' and " & field2 & "='" & value2 & "'"
istr = "insert into " & table & "(" & _
field & "," & field2 & ") values ('" & value & "','" & value2 & "')"
Set rs = db.OpenRecordset(sStr)
If rs.RecordCount < 1 Then
db.Execute (istr), dbFailOnError
Set rs = db.OpenRecordset(sStr)
End If
getPrimaryFromForeign = rs("id")
End Function
错误发生在以下行: 设置 rs = db.OpenRecordset(sStr)
我认为这与Value和Value2的变量类型有关。但是我已经使用 typename() 检查了它们,当调用 OpenRecordSet() 时它们都是 Long。该查询位于一个表中,其中这两个字段的类型均为 Number。那么为什么会出现类型不匹配呢?
【问题讨论】: