Access 2007 verwenden. Ich versuche, eine VBA-Funktion zu schreiben, die eine Abfrage aus dem Tabellennamen, den Feldern und den Werten erstellt, die ich als Parameter übergebe. Ich erhalte ständig einen "Laufzeitfehler '3464': Datentyp-Fehlanpassung im Kriterienausdruck".
Hier ist der Code:
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
Der Fehler tritt in der Zeile auf: Set rs = db.OpenRecordset(sStr)
Ich denke, es hat etwas mit den Variablentypen von Value und Value2 zu tun. Aber ich habe sie mit typename() überprüft, und sie sind beide Long, wenn OpenRecordSet() aufgerufen wird. Die Abfrage bezieht sich auf eine Tabelle, in der diese beiden Felder vom Typ Zahl sind. Warum gibt es also eine Typinkongruenz?