标题:求段代码 asp 批量修改时间??
只看楼主
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
Microsoft VBScript 运行时错误 (0x800A0005)
无效的过程调用或参数: 'DATEADD'
2012-06-06 16:29
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
这个不行呀,这个更新后的时间还是累加的呀,不在指定的范围内
2012-06-06 17:07
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
那你原来就要说明白 是指定更新后的数据啊,晕死
发数据的时候发个 原数据 跟 生成的结果数据,大家才能把你分析

解决方法
把所有ydate 搞成随机数就ok了就这么简单 。但是不要超过 时间的范围

自己查查函数的使用方法。
2012-06-06 17:21
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
查函数了,就是不知道怎么限制时间范围呀??帮我改一下吧,谢谢了
2012-06-06 17:27
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 = 1
rid = 7
Lyear = "2012-6-5" '日期如果也加段的话自己搞吧,照葫芦画瓢
LHour = "5-16"  '小时 时间段 按照时间规则 24以内
Lminute = "10-50" '分钟 时间段 60以内
'lid 开始id
'rid 结束id

Call SetDate(lid,rid,Lyear,LHour,Lminute)
'打开数据库自己加

Function SetDate(lid,rid,Lyear,LHour,Lminute)
    Dim Sql,Rs,Total,ydate,LHour_l,LHour_r
    Dim LHT_Hour,LHT_minute,Lht_Date
    Randomize
    LHour = Split(LHour, "-", -1, 1)
    LHT_Hour = LHour
    LHour_l = Int(LHour(1))-Int(LHour(0))+1
    LHour_r = Int(LHour(0))
    LHour = Int((LHour_l * Rnd)+LHour_r)
    
    Lminute = Split(Lminute, "-", -1, 1)
    LHT_minute = Lminute
    Lminute_l = Int(Lminute(1))-Int(Lminute(0))+1
    Lminute_r = Int(Lminute(0))
    Lminute = Int((Lminute_l * Rnd)+Lminute_r)
    Lsecond = Int((60 * Rnd) + 1)
    Lht_Date = FormatDateTime(Lyear&" "&LHour&":"&Lminute&":"&Lsecond)
    Response.write "时间段:"&FormatDateTime(Lyear&" "&LHT_Hour(0)&":"&LHT_minute(0)&":00")&""&FormatDateTime(Lyear&" "&LHT_Hour(1)&":"&LHT_minute(1)&":00")&"<br>"
    
    Set Rs = Server.Createobject("adodb.recordset")
    Total = 0
    ydate = Lht_Date
    Sql = "select id,ydate from Table_1 where id >= "&lid&" and id <= "&rid
    '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>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 18:32
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
限制LHour = "7-9"  

但是还回出11点的

[ 本帖最后由 sunfeiyao 于 2012-6-6 18:50 编辑 ]
2012-06-06 18:47
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
我测试没有啊 ???
2012-06-06 18:55
sunfeiyao
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2011-9-7
得分:0 
我测试了
lid = 1
rid = 20

多刷几次,有的
2012-06-06 18:56
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 = 1
rid = 7
Lyear = "2012-6-5" '日期如果也加段的话自己搞吧,照葫芦画瓢
LHour = "7-9"  '小时 时间段 按照时间规则 24以内
Lminute = "10-50" '分钟 时间段 60以内
'lid 开始id
'rid 结束id

Call SetDate(lid,rid,Lyear,LHour,Lminute)
'打开数据库自己加

Function GetDate(Lyeara,LHoura,Lminutea)
    Dim L_Hour,LHT_Hour,LHour_l,LHour_r,LHourb
    Dim L_minute,LHT_minute,Lminute_l,Lminute_r,Lminuteb,Lsecondb
    Randomize
    'Response.write LHour_r
    L_Hour = Split(LHoura, "-", -1, 1)
    LHT_Hour = L_Hour
    LHour_l = Int(L_Hour(1))-Int(L_Hour(0))+1
    LHour_r = Int(L_Hour(0))
    LHourb = Int((LHour_l * Rnd)+LHour_r)
    
    L_minute = Split(Lminutea, "-", -1, 1)
    LHT_minute = L_minute
    Lminute_l = Int(L_minute(1))-Int(L_minute(0))+1
    Lminute_r = Int(L_minute(0))
    Lminuteb = Int((Lminute_l * Rnd)+Lminute_r)
    Lsecondb = Int((59 * Rnd) + 1)
    'Response.write "<font color=red>"&Lyeara&" "&LHourb&":"&Lminuteb&":"&Lsecondb&"</font>"
    GetDate = FormatDateTime(Lyeara&" "&LHourb&":"&Lminuteb&":"&Lsecondb)
    Response.write "<br><font color=red>时间段:"&FormatDateTime(Lyear&" "&LHT_Hour(0)&":"&LHT_minute(0)&":00")&""&FormatDateTime(Lyear&" "&LHT_Hour(1)&":"&LHT_minute(1)&":00")&"</font>"
End Function

Function SetDate(lid,rid,Lyear,LHour,Lminute)
    Dim Sql,Rs,Total,ydate
    Randomize
    
    Set Rs = Server.Createobject("adodb.recordset")
    Total = 0
    Sql = "select id,ydate from Table_1 where id >= "&lid&" and id <= "&rid
    'Response.write sql
    Rs.Open Sql,Conn,1,1
    If Rs.Bof Or Rs.Eof Then
       'Response.write "False"
    Else
        Do Until Rs.EOF
            ydate = GetDate(Lyear,LHour,Lminute)
            '当每超过三条数据的时候判断
            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>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 18:57
coretear
Rank: 4
等 级:业余侠客
威 望:1
帖 子:102
专家分:244
注 册:2012-6-5
得分:0 
对了 超过 时间段是因为 程序里面 还加了个随机数 Int((1000 * Rnd) + 1 这个是为了 秒数输出都不一样的 ,作弊吗!就要差不多!!
2012-06-06 19:00



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




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

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