ASP操作数据库遇到的一些问题

cykinnn 2010-06-24 11:18:25
我用人家成型的例子改动一下来做的。
原例运行没问题,程序如下:
 <%
Set rs=Server.CreateObject("ADODB.Recordset")
Sql="Select * from crtoys where rkcount>ckcount order by id"
rs.Open Sql,Conn,1,1
if rs.eof then
%>
<tr>
<td colspan="5">   暂时未添加信息</td>
</tr>
<%
else
do while not rs.eof
%>
<tr>
<td> 
<%Set rs1=Server.CreateObject("ADODB.Recordset")
Sql="Select * from toys where id="&rs("toyid")
rs1.Open Sql,Conn,1,1
if rs1.eof=false then
response.Write(rs1("toyname"))
end if
%></td>
<td> <%=rs("rkcount")%></td>
<td> <%=rs("rkdate")%></td>
<td> <%=rs("rkry")%></td>
<td> <a href="cktoys_edit.asp?id=<%=rs("id")%>">出库</a>
</td>
</tr>
<%
rs.movenext
loop
end if
%>


然后我自己改过后的代码如下:

<%
Set rs=Server.CreateObject("ADODB.Recordset")
Sql="Select * from kucun order by k_id"
rs.Open Sql,Conn,1,1
if rs.eof then
%>
<tr>
<td colspan="5">   暂时未添加信息</td>
</tr>
<%
else
do while not rs.eof
%>
<tr>
<td> 
<%Set rs1=Server.CreateObject("ADODB.Recordset")
Sql="Select * from info where i_ccode="&rs("k_ccode")
rs1.Open Sql,Conn,1,1
if rs1.eof=false then
response.Write(rs1("i_name"))
end if
%></td>
<td> <%=rs("k_rkamount")%></td>
<td> <%=rs("k_rkdate")%></td>
<td> <%=rs("k_pos")%></td>
<td> <a href="cktoys_edit.asp?id=<%=rs("id")%>">出库</a>
</td>
</tr>
<%
rs.movenext
loop
end if
%>


自我觉得没有什么问题,可以一运行,网页提示:
错误类型:
Microsoft JET Database Engine (0x80040E10)
至少一个参数没有被指定值。
/01/beijian/kucun.asp, 第 52 行

第52行就是我改过后的程序中的
rs1.Open Sql,Conn,1,1
请各位高手帮忙看看到底有什么地方不对。

另外,如果需要数据库的设计,我也可以发上来。不知道哪里能上传图片。

...全文
68 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanmaohui 2010-06-24
  • 打赏
  • 举报
回复
Sql="Select * from info where i_ccode="&rs("k_ccode")
i_ccode 不是int
lds1ove 2010-06-24
  • 打赏
  • 举报
回复
rs("k_ccode") & ""
EdwardLong 2010-06-24
  • 打赏
  • 举报
回复
Sql="Select * from info where i_ccode="&rs("k_ccode")
response.write(sql)
response.end


你这样检查不出来的,这只是检查了其中的一个值而已
别忘记你 rs("k_ccode") 是从 RS 循环过来的。 只要循环过程中 有一个 数据为空 就会出错。
sy_binbin 2010-06-24
  • 打赏
  • 举报
回复
Sql="Select * from info where i_ccode="&rs("k_ccode")
把这个SQL语句打印出来

确定数据库的表和字段名称正确
EdwardLong 2010-06-24
  • 打赏
  • 举报
回复
或者改下代码
if NotNull(rs("k_ccode")) then
Set rs1=Server.CreateObject("ADODB.Recordset")
Sql="Select * from info where i_ccode="&rs("k_ccode")
rs1.Open Sql,Conn,1,1
if rs1.eof=false then
response.Write(rs1("i_name"))
end if
end if

cykinnn 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 edwardlong 的回复:]
应该是 rs("k_ccode") 无值,建议检查下 数据表
[/Quote]
我在程序里面改动过一点,想看一下是不是rs("k_ccode")有问题,改动如下:

Sql="Select * from info where i_ccode="&rs("k_ccode")
response.write(sql)
response.end


然后在显示中可以看到sql中的值,里面显示了rs("k_ccode")的值呀!
数据库中一定是有值的。
EdwardLong 2010-06-24
  • 打赏
  • 举报
回复
应该是 rs("k_ccode") 无值,建议检查下 数据表
cykinnn 2010-06-24
  • 打赏
  • 举报
回复
这个问题我换了种方式解决,就是用两表联合查询的方式,而不是像例子中的开两个变量。
<%
Set rs=Server.CreateObject("ADODB.Recordset")
Sql="Select * from kucun,info where i_ccode=k_ccode order by k_rkdate"
rs.Open Sql,Conn,1,1
%>

写成上面这个样子,直接就可以用rs来判断或操作了。
只是我很难理解为什么原例中这样写可以,我这样写就不行了。
呵呵,感谢大家的帮助!
wtg321 2010-06-24
  • 打赏
  • 举报
回复
i_ccode='"&rs("k_ccode")
加个单引号试一下.
momoxiangnile 2010-06-24
  • 打赏
  • 举报
回复

这个错误好像就是数据库里的字段出问题了,你仔细查下看喽

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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