标题:求段代码 asp 批量修改时间??
只看楼主
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
这样吧 你列一个数据表 原数据 跟 新数据 我用asp给你 做个参考
2012-06-06 09:30
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
新数据 是随机生成的呀???
2012-06-06 09:35
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
aaa.zip (11.97 KB)
2012-06-06 09:38
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
在线,等待。。。求解
2012-06-06 10:37
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
data table
--------
id      ydate
--------
1    2012-06-05 16:12:31.000
2    2012-06-05 17:12:31.000
3    2012-06-05 18:12:31.000
4    2012-06-05 19:12:31.000
5    2012-06-05 20:12:31.000
6    2012-06-05 21:12:31.000
7    2012-06-05 22:12:31.000
-------------------------------
处理方法
------------------------------
程序代码:
'lid 开始id
'rid 结束id
'ldate 开始时间
'rdate 结束时间
Call SetDate(1,7,"2012-6-5 16:12:30","2012-6-5 22:12:32")
'打开数据库自己加
Function SetDate(lid,rid,ldate,rdate)
    Dim Sql,Rs,Total,ydate
    Set Rs = Server.Createobject("adodb.recordset")
    Total = 0
    ydate = Now()'可指定固定时间
    Sql = "select id from Table_1 where id >= "&lid&" and id <= "&rid&" and DateDiff(s,ydate,'"&ldate&"') < 0 And DateDiff(s,ydate,'"&rdate&"') > 0"
    Rs.Open Sql,Conn,1,1
    If Rs.Bof Or Rs.Eof Then
       SetDate = "False"
    Else
        Do Until Rs.EOF
            '当每超过三条数据的时候判断
            If (Total Mod 3)=0 Then
                '随机根据当前时间生成时间,加(1-1000)秒随机数,可以换分钟,小时
                ydate = DATEADD ("s" , Int((1000 * Rnd) + 1),ydate)
                '每3条+1天
                If Total <> 0 Then
                    ydate = DATEADD ("d" , 1, ydate)
                    Total = 0
                End If
                
            Else
                '随机根据当前时间生成时间
                ydate = DATEADD ("s" ,Int((1000 * Rnd) + 1), ydate)
            End If
        Response.write "<br><br>ID:"&Rs("id")&" 更新时间:"&ydate&"<br>"
        Sql = "Update Table_1 Set ydate='"&ydate&"' Where id="&Rs("id")
        Response.write Sql
        Conn.Execute(Sql)
        Total=Total+1     
        Rs.MoveNext
        Loop        
    End If
    Rs.Close
    Set Rs = Nothing
    SetDate = "True"
End Function
'关闭数据库自己加

----------------------------------------
结果
-----
ID:1 更新时间:2012/6/6 11:11:40
ID:2 更新时间:2012/6/6 11:20:34
ID:3 更新时间:2012/6/6 11:30:14
ID:4 更新时间:2012/6/7 11:35:04
ID:5 更新时间:2012/6/7 11:40:06
ID:6 更新时间:2012/6/7 11:53:01
ID:7 更新时间:2012/6/8 11:53:16

[ 本帖最后由 coretear 于 2012-6-6 11:38 编辑 ]
2012-06-06 11:03
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
无语,这些东西,逻辑差不多自己搞搞就好
2012-06-06 11:07
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
001.zip (8.49 KB)

错误类型:
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/001.asp, 第 20 行
2012-06-06 12:09
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
第一个问题
以下语句应该在 打开数据库以后调用
Call SetDate(1,7,"2012-6-5 16:12:30","2012-6-5 22:12:32")

第二个问题

你用的是access我用sql习惯了 ,sql语句稍改以下就行,多输出个“”就行

Sql = "select id,ydate from Table_1 where id >= "&lid&" and id <= "&rid&" and DateDiff(""s"",ydate,'"&ldate&"') < 0 And DateDiff(""s"",ydate,'"&rdate&"') > 0"

第三给你个高效的access的数据库连接,你那个效率低

Dim Db,Conn
Db = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("01.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open Db
2012-06-06 12:58
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
程序代码:
Dim Db,Conn
Db = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("01.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open Db


'lid 开始id
'rid 结束id
'ldate 开始时间
'rdate 结束时间
Call SetDate(1,7,"2012-6-5 16:12:30","2012-6-5 22:12:32")
'打开数据库自己加


Function SetDate(lid,rid,ldate,rdate)
    Dim Sql,Rs,Total,ydate
    Set Rs = Server.Createobject("adodb.recordset")
    Total = 0
    ydate = Now()'可指定固定时间
    Sql = "select id,ydate from Table_1 where id >= "&lid&" and id <= "&rid&" and DateDiff(""s"",ydate,'"&ldate&"') < 0 And DateDiff(""s"",ydate,'"&rdate&"') > 0"
    'Response.write sql
    Rs.Open Sql,Conn,1,1
    If Rs.Bof Or Rs.Eof Then
       Response.write "False"
    Else
        Do Until Rs.EOF
            '当每超过三条数据的时候判断
            If (Total Mod 3)=0 Then
                '随机根据当前时间生成时间,加(1-1000)秒随机数,可以换分钟,小时
                ydate = DATEADD ("s" , Int((1000 * Rnd) + 1),ydate)
                '每3条+1天
                If Total <> 0 Then
                    ydate = DATEADD ("d" , 1, ydate)
                    Total = 0
                End If
                
            Else
                '随机根据当前时间生成时间
                ydate = DATEADD ("s" ,Int((1000 * Rnd) + 1), ydate)
            End If
        Response.write "<br><br>ID:"&Rs("id")&" 更新时间:"&ydate&"<br>"
        Sql = "Update Table_1 Set ydate='"&ydate&"' Where id="&Rs("id")
        Response.write Sql
        Conn.Execute(Sql)
        Total=Total+1     
        Rs.MoveNext
        Loop        
    End If
    Rs.Close
    Set Rs = Nothing
    Response.write "True"
End Function
'关闭数据库自己加
Conn.Close
Set Conn = Nothing
2012-06-06 13:00
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
出问题 做单步调试就好,呵呵呵,下了,有问题留言

[ 本帖最后由 coretear 于 2012-6-6 13:24 编辑 ]
2012-06-06 13:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-370881-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.075066 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved