簡體   English   中英

MS-Access中條件表達式中的數據類型不匹配

[英]Data Type Mismatch in Criteria Expression in MS-Access

我正在使用Excel-VBA將數據插入表中。 我有一個.csv文件,該文件已解析並用於創建插入字符串。 我在連續的多個表上使用它。 第一張表處理正常,但是第二張表給我一個錯誤:

運行時錯誤'-2147217913(8004e07)':條件表達式中的數據類型不匹配。

經過研究之后,似乎我試圖以一種錯誤的形式傳遞數據,但是在處理第一個表時,我沒有看到在哪里或如何進行。 失敗的最終插入字符串如下所示:

INSERT INTO Table_Name VALUES ('Text_entry', 'Long_Integer_entry', 'Double_entry', '')

編輯:我剛剛嘗試了另一項測試並發現了問題:任何通過Double或Single Integer獲得null的字段都將導致錯誤。 如何將空值傳遞給這些數據類型?

在SQL中,您可以在任何數據類型列(包括字符串,數字或日期時間值)中附加和更新NULL 因此,只需在您的追加查詢中傳遞它即可。 請確保不要引用它,因為它既不是字符串也不是數字值。 NULL實體表示未知值。

INSERT INTO Table_Name VALUES ('Text_entry', 'Long_Integer_entry', 'Double_entry', NULL)

具體來說,您嘗試的''實際上是一個零長度的字符串(非NULL值),這就是為什么它在數字列中無效的原因。

如果您使用參數化查詢,還應傳遞VBA的Null綁定到SQL語句:

strSQL = "INSERT INTO Table_Name VALUES (?, ?, ?, ?)"

Set cmd = New ADODB.Command

With cmd
     .ActiveConnection = conn
     .CommandText = strSQL
     .CommandType = adCmdText
     .CommandTimeout = 15
End With

' BINDING PARAMETERS
cmd.Parameters.Append _
      cmd.CreateParameter("textparam", adVarChar, adParamInput, 255, "Text_entry")
cmd.Parameters.Append _
      cmd.CreateParameter("longtxtparam", adVarChar, adParamInput, 255, "Long_Integer_entry")
cmd.Parameters.Append _
      cmd.CreateParameter("doubleparam", adDouble, adParamInput, , "Double_entry")
cmd.Parameters.Append _
      cmd.CreateParameter("nullparam", adDouble, adParamInput, , Null)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM