※ 引述《phi12345 (鮪魚、柚子、Stanley)》之銘言:
: 目前我在 week_add_news.asp
: 裡面設了
: set rs=server.CreateObject("ADODB.Recordset")
: sql = "select * from c_week"
: rs.open sql,conn,1,3
: rs.addnew
: response.write rs("sid")
: rs("t_name")=t_name
: rs("t_wname")=t_wname
: rs("s_pic")=s_pic
: rs("r_name")=r_name
: rs("t_time")=t_time
: response.write rs("rid")
: response.write rs("pid")
rs.addnew的用法我很不熟. 稍微記得是:
rs.addnew
'... 在此對 rs 增添一些資料
rs.update '要下這一行命令,以上的資料增添才會生效
: 但是新增資料時~跑到 sid rid pid 都會出現錯誤~@@
: 我改成 response.write rs("sid")
: response.write rs("rid")
: response.write rs("pid")
: 出現 無法插入 NULL 值到資料行 'pid',資料表 'xxx.dbo.c_week';
: 資料行不得有 Null。INSERT 已經失敗。
這裏我想合理的解釋是: response.write rs("sid") 是從 rs 目前一列
的 sid 欄位取資料. 而你把這一行寫在 rs.addnew 的範圍內,表示
資料還沒添進去,就要它把資料印出來. 因為沒有給資料,所以它試著給
Null,然後根據欄位屬性判斷出無法添Null值進去. (這是自己一腳被另一腳絆到啊!)
: 用 rs("sid")=sid
: 會出現
: 這個錯誤
: (80040e21)多重步驟操作發生錯誤
: 這是哪裡的問題@@?
「多重步驟操作發生錯誤」以下網頁有這樣的解釋:
http://www.adopenstatic.com/FAQ/80040e21.asp
這個毛病是當你把超過欄位量的資料塞進去而造成的.
例如把20字元資料塞進varchar(10)中,或是把超過二的指數15
的大整數塞進整數欄位.
照理說, rs("sid") = sid 這個動作合理,但就要看sid是不是合格的值.
ASP有些變數轉型會不小心轉成字串,會不會是這個原因?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.112.24