台灣最大程式設計社群網站
線上人數
784
 
會員總數:244898
討論主題:188891
歡迎您免費加入會員
討論區列表 >> ASP >> 準則運算式的資料類型不符~如何解?感恩!
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
準則運算式的資料類型不符~如何解?感恩!
價值 : 120 QP  點閱數:17677 回應數:7

樓主


門外漢
0 2
30 2
發送站內信

各位先進:
我的程式碼如下
<%

'接收資料
actname=Request("actname")
vote0101=Request("vote0101")
vote0102=Request("vote0102")
vote0103=Request("vote0103")


'建立資料庫連結物件
Set CN = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("report.mdb")
'連結資料庫
CN.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件
Set RS=Server.CreateObject("ADODB.Recordset")
'寫入資料

Function chgStr( data )
chgStr = "'" & Replace( data, "'", "''" ) & "'"
End Function
sql = "Insert Into " & actname & " (vote0101,vote0102,vote0103) Values ("
sql = sql & chgStr(vote0101) & ", "
sql = sql & chgStr(vote0102) & ", "
sql = sql & chgStr(vote0103) & ")"
CN.Execute sql

執行SQL時,瀏覽器顯示:
錯誤類型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] 準則運算式的資料類型不符合。
/evalue/grade1/add.asp, line 26

line 26是...CN.Excute sql那一行
資料庫vote0101,vote0102,vote0103欄位都是設定為數字類型,欄位大小設為長整數,執行SQL時,卻出現「準則運算式的資料類型不符合」,是不是我的變數設的有問題呢?還是...請教各位先進!


搜尋相關Tags的文章: [ 準則運算式的資料類型不符合 ] ,
本篇文章發表於2005-04-15 15:00
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
如果vote0101,vote0102,vote0103欄位都是數字,那改為
sql = "Insert Into " & actname & " (vote0101,vote0102,vote0103) Values (" & vote0101 & "," & vote0102 & "," & vote0103 & ")"
本篇文章回覆於2005-04-15 15:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

Bryan(不來ㄣ)
捐贈 VP 給 Bryan(不來ㄣ) 檢舉此回應
說明一下,如果vote0101,vote0102,vote0103欄位都是數字
那你應該要湊出這樣
insert into tablename(vote0101,vote0102,vote0103) Values (111,222,333)
的sql字串

而不是湊出這樣
insert into tablename(vote0101,vote0102,vote0103) Values ('111','222','333')
的sql字串
本篇文章回覆於2005-04-15 15:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應


檢舉此回應
Bryan您好:
謝謝您的解答,真的可以新增數字資料了,非常感恩!
但是如果我多設幾個Vote欄位,則出現另一錯誤訊息,煩請解惑,感恩不盡!
增設Vote欄位後的原始碼如下:
'接收資料
actname=Request("actname")
vote0101=Request("vote0101")
vote0102=Request("vote0102")
vote0103=Request("vote0103")
vote0104=Request("vote0104")
vote0105=Request("vote0105")
vote0106=Request("vote0106")
vote0107=Request("vote0107")
vote0108=Request("vote0108")
vote0109=Request("vote0109")
vote0110=Request("vote0110")

'建立資料庫連結物件
Set CN = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("report.mdb")
'連結資料庫
CN.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件
Set RS=Server.CreateObject("ADODB.Recordset")
'寫入資料

Function chgStr( data )
chgStr = "'" & Replace( data, "'", "''" ) & "'"
End Function

sql = "Insert Into " & actname & " (vote0101,vote0102,vote0103,vote0104,vote0105,vote0106,vote0107,vote0108,vote0109,vote0110) Values (" & vote0101 & "," & vote0102 & "," & vote0103 & "," & vote0104 & "," & vote0105 & "," & vote0106 & "," & vote0107 & "," & vote0108 & "," & vote0109 & "," & vote01010 & ")"

CN.Execute sql

錯誤的訊息如下:
錯誤類型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] INSERT INTO 陳述式的語法錯誤。
/evalue/grade1/add.asp, line 32


line 32是指「CN.Execute sql」這一行.

真的很感恩您的解惑!
本篇文章回覆於2005-04-18 15:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
你先改這樣,看看印出來的sql字串有沒有問題
...
...
...

sql = "Insert Into " & actname & " (vote0101,vote0102,vote0103,vote0104,vote0105,vote0106,vote0107,vote0108,vote0109,vote0110) Values (" & vote0101 & "," & vote0102 & "," & vote0103 & "," & vote0104 & "," & vote0105 & "," & vote0106 & "," & vote0107 & "," & vote0108 & "," & vote0109 & "," & vote01010 & ")"

'CN.Execute sql
response.write sql

本篇文章回覆於2005-04-18 16:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
啊! 我發現error了
你把
"," & vote01010 & ")"
改為
"," & vote0110 & ")"
本篇文章回覆於2005-04-18 16:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應


檢舉此回應
Bryan您好:
我的問題真的解決了,執行SQL真的沒問題了,萬分由衷感恩!
感恩您這幾天不辭辛勞為我解答,內心如釋重負,謝謝!
謝謝!謝謝!謝謝!謝謝!謝謝!
本篇文章回覆於2005-04-19 09:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

阿優
檢舉此回應
1樓的解說真是解開了我很久以來的問題~~只有asp配上access才會遇到這種問題
本篇文章回覆於2010-11-11 00:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.