注册 登录
编程论坛 ASP技术论坛

ASP+ACCESS 删除数据库记录问题!

riospark 发布于 2008-11-26 16:58, 2531 次点击
del.asp 代码如下:
---------------------------------------------------------------
<%

Dim connstr

connstr="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("data.mdb")
Set conn=Server.CreateObject("Adodb.Connection")
conn.Open connstr

Set rs=server.Createobject("Adodb.recordset")

SQL="Select * From infor"
rs.open sql,conn,1,3

rs.delete
rs.update

rs.Close
Set rs=Nothing
conn.Close
Set conn=Nothing

%>

<html>
    <center>
        <body>
            <a href="list.asp">返回</a>
        </body>
    </center>
<html>
-------------------------------------------------------------
问题是这样可以删除 ACCESS 表 infor 中的记录, 但是它只能按照从上到下的顺序删除.
从上到下就是按照写入数据库的时间顺序删除.
我的想法是选择删除哪个就得删除哪个, 但不知道该怎么做.
哪位高手会的帮下忙了.
15 回复
#2
sunfishy2008-11-26 17:16
SQL="Select * From infor"

得加上条件.
#3
riospark2008-11-26 17:25
<%

Dim connstr
Dim userName

connstr="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("data.mdb")
Set conn=Server.CreateObject("Adodb.Connection")
conn.Open connstr

Set rs=Server.Createobject("Adodb.Recordset")

userName=Request.QueryString("txtUser")

SQL="Select * From infor where username='"& txtUser &"' "
rs.open sql,conn,1,3

rs.delete
rs.update

rs.Close
Set rs=Nothing
conn.Close
Set conn=Nothing

%>
是这样吗???
刚开始做ASP.. 还不太明白.
Dim userName
userName=request.QueryString("txtUser")
这段代码是不是返回值, 然后根据这个返回的值在数据库里进行选择删除啊???

[[it] 本帖最后由 riospark 于 2008-11-26 17:28 编辑 [/it]]
#4
sunfishy2008-11-26 17:28
是的.
#5
riospark2008-11-26 17:30
但是运行后是同样的效果.. 呵呵.. 真郁闷啊..
#6
sunfishy2008-11-26 17:34
userName=Request.QueryString("txtUser")

SQL="Select * From infor where username='"& txtUser &"' "

你这里有错
应该是:
userName=Request.QueryString("txtUser")

SQL="Select * From infor where username='"& username &"' "
#7
sunfishy2008-11-26 17:43
<%

Dim connstr
Dim userName

connstr="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("data.mdb")
Set conn=Server.CreateObject("Adodb.Connection")
conn.Open connstr

Set rs=Server.Createobject("Adodb.Recordset")

userName=Request.QueryString("txtUser")'得到客户端传值.并赋于变量userName

SQL="Select * From infor where username='"& userName&"' "   '搜索记录集
rs.open sql,conn,1,3
if not rs.eof then
rs.delete '执行删除
rs.update '可省略
else
response.write "数据库中没有你想要删除的数据"
end if
'方法二:用conn.execute
'sql="delete From infor where username='"& userName&"' "
'if no
'if not rs.eof then
'conn.execute(sql)
'else
'response.write "数据库中没有你想要删除的数据"
'end if
rs.Close
Set rs=Nothing
conn.Close
Set conn=Nothing

//---------------

%>
#8
riospark2008-12-10 12:29
还是不行呀...
#9
hmhz2008-12-10 12:43
conn.execute "delete infor where username='"& userName&"'"
#10
riospark2008-12-10 13:04
del.asp源码 .. 斑竹帮忙看看撒..
<%

Dim connstr
Dim id

connstr="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("data.mdb")
Set conn=Server.CreateObject("Adodb.Connection")
conn.Open connstr

Set rs=Server.Createobject("Adodb.Recordset")

id=Request.QueryString("txtID")

SQL="Delete From infor where id='"& id &"' "

conn.Execute(SQL)
rs.update

rs.Close
Set rs=Nothing
conn.Close
Set conn=Nothing

%>

<html>
    <center>
        <body>
            <a href="list.asp">返回</a>
        </body>
    </center>
</html>

错误类型:
Microsoft JET Database Engine (0x80040E10)
至少一个参数没有被指定值。
/del.asp, 第 22 行

第 22 行就是这个..conn.Execute(SQL)
#11
madpbpl2008-12-10 13:39
1.infor 表里是否有id这个字段?
2.如果id是自动编号
SQL="Delete From infor where id='"& id &"' "
改成
SQL="Delete From infor where id="&id
#12
riospark2008-12-10 15:26
没有id这个字段.. 自动编号的字段名为 txtID ..
-----------------------------------------------------
删除连接的那个页面里的代码是
<a href="del.asp?id=<%=rs("txtID")%>">删除</a>

把del.asp的代码要改成
txtID=Request.QueryString("txtID")
SQL="Delete From infor where txtID="&txtID
----------------------------------------------------
然后错误提示是
语法错误 (操作符丢失) 在查询表达式 'txtID=' 中。
/del.asp, 第 22 行

操作符丢失是说值没有传过来吗?
#13
sunfishy2008-12-10 15:32
恩.
#14
riospark2008-12-10 15:46
问题已解决: 关键的几个代码如下
----------list.asp 中的删除记录超连接------------
<a href="del.asp?txtID=<%=rs("txtID")%>">删除</a>
-------------------------------------------------

--------del.asp 中的传值代码和数据库语句---------
txtID=Request.QueryString("txtID")
SQL="Delete From infor where txtID="&txtID
-------------------------------------------------
数据表 infor 中的自动编号字段名为 txtID

这样就一切搞定了..

非常感谢楼上给予答复和意见的各位朋友..
#15
anlige2008-12-10 15:49
加查询条件啊~
where...
#16
kira0072008-12-11 09:37
删除操作 又不需要返回纪录集 ,何必多此一举建纪录集
直接用 就是了。如果ID是整型 是不要‘’的
id=Request.QueryString("txtID")
SQL="Delete From infor where id='"& id &"' "
conn.Execute(SQL)
下面这些都是多余的
Set rs=Server.Createobject("Adodb.Recordset")
rs.update

rs.Close
Set rs=Nothing
既然提示 “至少一个参数没有被指定值。”

那就是说 id=Request.QueryString("txtID") 没有获取到值,你最好测试下 ID 是否有值
1