纳粹军徽:acc数据库自动删除旧数据记录问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 08:15:51
我做了个流量统计的站,现在是数据库全数保存,我希望部分表内数据只保留一定数量(譬如30条),当有31条数据产生时,最早一条数据将被自动删除,请问具体如何操作?注:asp语言。
toge的好象有门,不过报错,所以我直接发个待修改文件,帮我改好吧。

<!-- #Include File=Conn.asp -->
<!--#include file="const.asp"-->
<%
if admin="" or admin="-" then
response.redirect "ul.asp"
end if
%>
<%
Response.Expires=0
Dim Percent(),BarWidth()
Dim Conn,Sql,Rs
Dim TotalNum,Assay,MaxWidth,Rows,iExFor

ExFor=0
MaxWidth=200
TotalNum=0
Sql="Select * From FRefer where admin='"&admin&"'Order By TRefNum DESC"

Rs.Open Sql,Conn,1,1
If Not Rs.Bof And Not Rs.Eof Then
Assay=Rs.GetRows
Rows=Ubound(Assay,2)
Else
Rows=-1
End If
Rs.Close
Conn.Close
Set Rs=Nothing
Set Conn=Nothing
For i=0 to Rows
TotalNum=TotalNum+Assay(1,i)
Next
ReDim Percent(Rows)
ReDim BarWidth(Rows)
For i=0 to Rows
If TotalNum>0 Then
Percent(i)=FormatNumber(Int(Assay(1,i)/TotalNum*10000)/100,2,-1)&"%"
BarWidth(i)=Assay(1,i)/TotalNum*MaxWidth
End If
Next
%>
<HTML>
<HEAD>

百度补充文件有限制,下略。

set rs = server.CreateObject("adodb.recordset")
rs.open "select * from 数据表 order by id desc",conn,1,1
hid = rs("id")
hid1=hid-30
do while not rs.eof
if rs("id")<hid1 then
rs.delete
end if
rs.movenext
loop
上面的代码将保留最后30条记录,其他均删除。

set rs = server.CreateObject("adodb.recordset")
rs.open "select id from table",conn,1,1
if rs.recordcount > 30 then
id = rs("id")
rs.close
conn.execute "delete * from table where id="&id
end If

看看 对你有没有帮助

先通过rs记录集把数据库里的数据从新到旧排列一下
然后采用一变量进行循环计数,当记到30的时候,取得当前记录的时间a,之后的记录则进行删除操作
delete from 表 where date<a
这样即可