Microsoft JET Database Engine 错误 '80040e21' 怎么办?

binglijun 2008-02-14 03:35:51
调试ASP过程中出现如下错误:
Microsoft JET Database Engine 错误 '80040e21' 由于其 Required 属性设置为真(True),字段 'Key_admin.ID' 不能包含 Null 值。在此字段中输入一个数值。 /new/Admin_Add_User.asp,行 160

有朋友说'Key_admin.ID' 不用修改(如果修改该怎么改呢,我用ACCESS打开后找不到在哪里修改),要修Admin_Add_User.asp有关SQL语句的代码,“不能包含 Null 值”,就不要给他NULL值,自动编号,哪里是关于NULL值的,该怎么修改呢,谢谢了。 代码在附件,麻烦高手帮我看下,非常感谢。


...全文
1855 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyann 2008-02-19
  • 打赏
  • 举报
回复

如果不想改程序,则该数据库表中字段设置吧。

AdminSc_Purview_ClassID字段属性“允许空字符串”改为 是

这是表中完整性的设计要求,和什么数据库无关,access / SQL server 都一样

不过SQL中可以用trigger. access 则不行
== 思想重于技巧 ==
binglijun 2008-02-19
  • 打赏
  • 举报
回复
数据库里文件很多,都要改么,该程序可以设置成ACCESS的也可以sql的,是不是我设置成access的就会出问题,sql的就好了
设置的代码如下:

dim conn,connstr,db
connbz=0 '如果使用access数据请将改值改为1,如果使用sql数据库请将改值改为0
if connbz=1 then
issy=1
ispub=1
db="data/123.asa"
Set conn=Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
conn.Open connstr
'response.write "access数据库链接成功!"
else
issy=1
ispub=1
set conn=server.CreateObject("adodb.connection")
Conn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=(140.20.40.1);UID=123;PWD=123;DATABASE=123"
'response.write "sql数据库链接成功!
binglijun 2008-02-19
  • 打赏
  • 举报
回复
1
OracleRoob 2008-02-18
  • 打赏
  • 举报
回复
你中断代码,调试打印出SQL语句,直接在access中运行,会提示同样的错误,说明不是你前台代码问题,直接修改你的MDB中这个表中ID字段的数据类型为“自动编号”。
liuyann 2008-02-18
  • 打赏
  • 举报
回复

ID 改成“自动编号”型即可 ,这样你现有的代码不用变.
OracleRoob 2008-02-18
  • 打赏
  • 举报
回复
如果确实不允许为空,则应该用iif()函数转换为替代的值
liuyann 2008-02-18
  • 打赏
  • 举报
回复

Key_admin.AdminSc_Purview_ClassID' 不能是零长度的字符串。

AdminSc_Purview_ClassID字段属性“允许空字符串”改为 是
OracleRoob 2008-02-18
  • 打赏
  • 举报
回复
把表中这个字段的属性“允许空字符串”改为“是”即可
binglijun 2008-02-18
  • 打赏
  • 举报
回复
感谢各位高手的热心回帖帮助,再次谢谢大家
binglijun 2008-02-18
  • 打赏
  • 举报
回复
在ACCESS里'Key_admin'里面的ID设置成自动编号了,可是运行后又出现
Key_admin.AdminSc_Purview_ClassID' 不能是零长度的字符串。太郁闷了
OracleRoob 2008-02-17
  • 打赏
  • 举报
回复
如果你让系统自动产生ID的值,应该将数据类型改为“自动编号”

这样你在追加数据时,不需要指定这一列的值
changechange 2008-02-15
  • 打赏
  • 举报
回复
既然没赋值,就出错,这是肯定的咯

还有,按道理 id 字段应该设定为自动编号,这样就不用赋值。

如果你要补救,看这篇文章吧


如何在已有数据的情况下更改某列的数据类型为“自动编号 递增”《表》
http://access911.net/index.asp?u1=a&u2=72FABE1E11DCE8F3







--911--
changechange 2008-02-15
  • 打赏
  • 举报
回复
看提问就知道了,在这点上 JET 引擎已经说得再明白不过了

'Key_admin.ID'

不能包含NULL值

rs.addnew
rs("username")=username
rs("Password")=Password
rs("Purview")=Purview
rs("AdminSc_Purview_ClassID")=AdminSc_Purview_ClassID
rs("AdminSh_Purview_ClassID")=AdminSh_Purview_ClassID
rs.update

这么多字段都赋值了,ID字段呢?你赋值了没?
liuyann 2008-02-15
  • 打赏
  • 举报
回复
ID 改成“自动编号”型即可

(“自动编号”数据类型:Microsoft Access 数据库中的一种字段数据类型,当向表中添加一条新记录时,这种数据类型会自动为每条记录存储一个唯一的编号。可以产生三种编号:顺序号、随机号和同步复制 ID。)

binglijun 2008-02-15
  • 打赏
  • 举报
回复
数据库文件如下:http://www.mtzhai.com/0000.jpg
binglijun 2008-02-15
  • 打赏
  • 举报
回复
还是没看明白啊,郁闷死了
liuyann 2008-02-14
  • 打赏
  • 举报
回复
Key_admin表结构是什么?
liuyann 2008-02-14
  • 打赏
  • 举报
回复
红色部分为行160??



我色盲了?


binglijun 2008-02-14
  • 打赏
  • 举报
回复
rs.update 为行160
binglijun 2008-02-14
  • 打赏
  • 举报
回复
.
.
.

</div>
<%
If Flag="" then

zt=Trim(Request.QueryString("zt"))

if zt="save" then


Username=Trim(Request.form("Username"))
Password=md5(Request.form("Password"),16)
Purview=Trim(Request.form("Purview"))
if Purview=1 then
AdminSc_Purview_ClassID="all"
AdminSh_Purview_ClassID="all"
else
AdminSc_Purview_ClassID=Trim(Request.form("AdminSc_Purview_ClassID"))
AdminSh_Purview_ClassID=Trim(Request.form("AdminSh_Purview_ClassID"))
end if

set rs=server.createobject ("adodb.recordset")
sql="select Username,Password,Purview,AdminSc_Purview_ClassID,AdminSh_Purview_ClassID from Key_admin where username='"&username&"'"
rs.open sql,conn,1,2

if rs.bof and rs.eof then

rs.addnew
rs("username")=username
rs("Password")=Password
rs("Purview")=Purview
rs("AdminSc_Purview_ClassID")=AdminSc_Purview_ClassID
rs("AdminSh_Purview_ClassID")=AdminSh_Purview_ClassID
rs.update

response.redirect "Admin_Add_User.asp?flag=man"
else

response.write"<SCRIPT language=JavaScript>alert('您注册的用户名已经存在,请返回刷新后重新注册!');"
response.write"javascript:history.go(-1);</SCRIPT>"
response.end

end if


end if


%>

<form method="POST" action="Admin_Add_User.asp?zt=save" name="form1">

<div align="center">
<center>

.
.
.
.
红色部分为行160
加载更多回复(2)

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧