【求助】SQL語法錯誤



贊助商連結


tigerlin901
2003-11-10, 02:19 PM
不好意思,各位大大,我SQL語法有問題了!問題描述如下:

------------------------------------------------------------
<%
dim dtDay
dtDay = request("distence")
distence2 = "T_" & Year(dtDay) & "_" & Month(dtDay) & "_" & Day(dtDay)
sql = "update users SET '" & distence2 & "' = 1 WHERE id = '" & session("id") &"'"
set rs=conn.execute(sql)
%>
------------------------------------------------------------
request("distence")的格式是「yyyy/mm/dd」,字串distence2是把它轉變成「T_yyyy_mm_dd」的格式,因為SQL欄位中不能有「/」且第一個字元要為字母,所以把它轉成有底線並加「T」_的格式(我的欄位是T_2003_11_23~2004_2_10),如果要設IF徊圈來判斷資料作更新,就要設定60個以上的條件,所以小弟才想要用「distence2 = "T_" & Year(dtDay) & "_" & Month(dtDay) & "_" & Day(dtDay)
sql = "update users SET '" & distence2 & "' = 1 WHERE id = '" & session("id") &"'"」來自動產生欄位的名稱並做更新,但出現以下訊息:
------------------------------------------------------------
錯誤類型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]行 1: 'T_2003_11_23' 附近的語法不正確。<==就是'" & distence2 & "'
------------------------------------------------------------
它欄位都已經產生我想要的名字了,為什麼還是不能更新資料且會錯誤呢?請各位大大幫我解答∼∼謝謝∼!感激不盡!

贊助商連結


ivantw
2003-11-10, 02:37 PM
有轉成字元型態嗎?

tigerlin901
2003-11-10, 03:05 PM
最初由 Ivan Lin 發表
有轉成字元型態嗎?

他合併之後不就已經是字元型態了嗎?
難道還要在用別的函數來轉換嗎?

tigerlin901
2003-11-10, 03:06 PM
最初由 Ivan Lin 發表
有轉成字元型態嗎?

順帶一題,我用IF....ELSEIF寫兩試看看,但資料就是插入不到資料庫:

<%
dim dtDay
dtDay = request("distence")

sql = "insert into result (id,inputdate,question,degree) values ('"& session("id") &"',"
sql = sql & "getdate(),'"& rs("serial") &"','"& correctamount &"')"

dis = "T_" & Year(dtDay) & "_" & Month(dtDay) & "_" & Day(dtDay)

if dis = T_2003_11_23 Then
sql = "update users SET T_2003_11_23 = T_2003_11_23 + 1 WHERE id = a1234"
set rs = conn.execute(sql)

elseif dis = T_2003_11_24 Then
sql = "update users SET T_2003_11_24 = 1 WHERE id = '" & session("id") &"'"
set rs = conn.execute(sql)

END If
%>

akaishe
2003-11-15, 02:16 PM
您update語法錯了吧.....查查asp的書吧!

wawawa
2003-11-24, 04:20 PM
最初由 tigerlin901 發表
不好意思,各位大大,我SQL語法有問題了!問題描述如下:

------------------------------------------------------------
<%
dim dtDay
dtDay = request("distence")
distence2 = "T_" & Year(dtDay) & "_" & Month(dtDay) & "_" & Day(dtDay)
sql = "update users SET '" & distence2 & "' = 1 WHERE id = '" & session("id") &"'"
set rs=conn.execute(sql)
%>


不知道你解決了沒
你有嘗試著把你的 SQL String 印出來看嗎?
按照你的語法
假設id是 John 好了
那麼應該會如下所示
sql = "update users set 'T_2003_11_23' = 1 where id='John'"
欄位名稱應該是不需要加上單引號吧
我應該沒記錯吧.....(SQL的書已經封箱了...:()