由where子句引起的类型不匹配错误,任何已知的解决方法?

时间:2014-02-28 15:48:14

标签: sql ms-access

我不确定原因,但是当我执行Access表单的这一部分时,我遇到类型不匹配错误。我检查了SQL服务器中涉及的所有字段的数据类型,它们都是匹配的。两个表中的InspectID和incdntno都是'INT'类型,而inspdate和Dt_inspect都是'datetime'。

我发现不匹配可能是由我的查询的where子句引起的,因为incdntno被Dim'd作为字符串(在SQL中它是INT)我尝试将Incdntno的数据类型更改为两个表中的varchar,认为这样会在Dim中存活并且不会导致不匹配,我不确定这是否有效,因为当我下次运行它时会引发ODBC错误。

Private Sub Text79_AfterUpdate()
  Dim conn As ADODB.Connection
  Dim sSQL As String

  Set conn = CurrentProject.Connection

  If IsNull([Incdntno]) Then
    Me.Dirty = False
  End If
  Dim InspNo As String
  InspNo = Incdntno.Value
  sSQL = "INSERT INTO tblFieldIncident_Complaint_InspHist ( Incdntno, InspectID, Dt_Inspect ) SELECT Incdntno, InspectID, InspDate FROM tblInspect WHERE Incdntno='" & InspNo & "';"
  conn.Execute sSQL
  Me.Refresh


End Sub

1 个答案:

答案 0 :(得分:0)

我建议省略单引号:

sSQL = "INSERT INTO tblFieldIncident_Complaint_InspHist( Incdntno, InspectID, Dt_Inspect )
          SELECT Incdntno, InspectID, InspDate
          FROM tblInspect
          WHERE Incdntno=" & InspNo & ";"
-------------------------^-------------^