asp中数据写入access中的备注字段出错

语句:
content=Request.Form("content")
if(content<>"") then
rs("content")=content
endif

执行时:
数据库中的content字段类型如果是“文本”,字数在255以内就没有问题,如果是“备注”无论字数是多少就出现下面的问题:
错误类型:
Provider (0x80040E21)
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
1.首先谢谢各位好心人!
2.这是前面表单中的文本区域代码:<textarea name="content" cols="70" rows="5"></textarea>
3.这是提交页面的代码(jy是数据库db.mdb中的一个表,content是表jy中的一个字段,当content设为“文本”类型时,提交没有问题,但是当设为“备注”类型时,就出现了问题):
<%
Dim connString
connString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="& Server.Mappath("db.mdb")
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = connString

rs.Source ="jy"
rs.CursorType = 1
rs.CursorLocation = 1
rs.LockType = 3
rs.Open()

rs.addnew
dim content
content=Request.Form("content")
if(content<>"") then
rs("content")=content
endif

rs.update
rs.Close()
set rs=nothing
%>

第1个回答  2008-03-03
引起这个问题的原因简单的说就是数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数。

例如自动编号字段的就不应该指定值;限制50个字符的字段你就不应该提交多于50个字符的字符串。

出现这样的错误,一般是因为update进去的数据长度超过了数据库字段
这段写入语句所针对的字段的类型和长度。

rs("name")所针对的name字段太短的可能最大。
第2个回答  2008-03-13
所给代码过短,我需要上下文的代码才能得知。实际上,你的错误虽然在此行产生,但是肯定错误不在此处,而应该在上下文中,请帖出足够我参考的代码。

换成以下代码试下:

connString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="& Server.Mappath("db.mdb")
set conn=server.createobject("adodb.connection")
conn.open connString

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "jy",conn,1,3,2

rs.addnew
dim content
content=Request.Form("content")
if (content<>"") then
rs("content")=content
else
rs("content")=" "
end if
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing

----------------
我看到你没用conn对象,不太喜欢你那种形式的操作数据库方式呵呵。本回答被提问者采纳
第3个回答  2008-02-28
sql语句出错(数据类型不匹配或表/字段错误或处于编辑状态,或不存在于conn打开的数据库中)
第4个回答  2008-03-03
up
第5个回答  2008-02-28
代码打出来
相似回答