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

求段代码 asp 批量修改时间??

sunfeiyao 发布于 2012-06-05 21:52, 4470 次点击
求段代码 asp 批量修改时间??
数据库
表:aaa
字段1:ID
字段2(时间): 2012-6-5 19:35:43
(假设有1-20个记录)
指定修改ID段为5-10   也就是指修改5-10的记录
指定 修改字段2(时间)开始时间段  如 2012-6-5 10:35:43——2012-6-5 19:35:43,
在2012-6-5 10:35:43——2012-6-5 19:35:43中随机时间更新字段2(时间)3个   
完成后自动  换为
2012-6-6 10:35:43——2012-6-6 19:35:43 中随机时间更新字段2(时间)3个
以此类推。。。

也就是 批量更新时间 每天更新 3个时间
62 回复
#52
sunfeiyao2012-06-06 23:10
哦,老师,我知道用时间排序就好的
但是这个想用ID排序的  ,程序复杂,我是在搞不定,请老师给个代码,学习一下
#53
coretear2012-06-06 23:47
到csdn吧 ,给我+点分 ,我没分了 哈
#54
coretear2012-06-06 23:50
睡觉了 明天 回答
#55
sunfeiyao2012-06-07 08:12
来了,在线等待。。。
#56
coretear2012-06-07 08:33
程序代码:
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
lid = 1
rid = 7
Lyear = FormatDateTime(now(),2) '日期如果也加段的话自己搞吧,照葫芦画瓢
'
小时 时间段 按照时间规则 24以内 最好在最好不要超过 22,因为有随机的+59秒所以可能产生日期+1天的可能
LHour = "9-20"  
'按照时间规则 60以内 最好在最好不要超过 58,因为有随机的+59秒所以可能产生日期+1天的可能
Lminute = "1-58"

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)
    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
    Dim LLHour,LLminute
    Randomize
    'LLHour = LHour
    'LLminute = Lminute
    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
            '随机根据当前时间生成时间,加(1-59)秒随机数,可以换分钟,小时
            ydate = GetDate(Lyear,LHour,Lminute)
            ydate = DATEADD ("s" , Int((59 * Rnd) + 1),ydate)
            BHour = FormatDateTime(ydate,3)
            
            AHour = Split(LHour, "-", -1, 1)
            BHour = Split(BHour, ":", -1, 1)
            
            Aminute= Split(Lminute, "-", -1, 1)
        
            LHour = BHour(0)&"-"&AHour(1)
            Lminute = BHour(1)&"-"&Aminute(1)
            '当每超过三条数据的时候判断
            If (Total Mod 3)=0 Then
                '每3条+1天
                If Total <> 0 Then
                    ydate = DATEADD ("d" , 1, ydate)
                    Lyear = FormatDateTime(ydate,2)
                    Total = 0
                    'LHour = LLHour
                    'Lminute = LLminute
                'Else
                    'LHour = BHour(0)&"-"&AHour(1)
                    'Response.Write LHour
                    'ydate =
                End If
            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
#57
sunfeiyao2012-06-07 09:10
??? 限制7-8点 怎么还回出9点10点的呢??求解
ID:16 更新时间:2012-6-12 9:59:20

ID:17 更新时间:2012-6-12 10:00:18

ID:18 更新时间:2012-6-12 9:41:39

ID:19 更新时间:2012-6-13 9:44:22

ID:20 更新时间:2012-6-13 9:56:27
#58
coretear2012-06-07 09:14
不管了 自己看 里面写的很明吧了
#59
sunfeiyao2012-06-07 09:16
老师 送佛送到西吧,帮忙看看吧,呵呵~~~
#60
coretear2012-06-07 09:17
会有累计 几个小时的可能 随机时间 8:59:59 出来这个随机时间, 程序设定 时间 要升序 ,那必须+时间 难道 你在让他 降序??,如果那样你就用 原来写的方法就好
#61
sunfeiyao2012-06-07 09:26
能不能限制从7点开始随机时间  

每当更新3个时间后 在从7点开始

#62
coretear2012-06-07 09:41
程序代码:

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
lid = 1
rid = 7
Lyear = FormatDateTime(now(),2) '日期如果也加段的话自己搞吧,照葫芦画瓢
'
小时 时间段 按照时间规则 24以内 最好在最好不要超过 22,因为有随机的+59秒所以可能产生日期+1天的可能
LHour = "9-20"  
'按照时间规则 60以内 最好在最好不要超过 58,因为有随机的+59秒所以可能产生日期+1天的可能
Lminute = "1-58"

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)
    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
    Dim LLHour,LLminute
    Randomize
    LLHour = Split(LHour, "-", -1, 1)
    LLminute = Split(Lminute, "-", -1, 1)
   
    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
        ydate = GetDate(Lyear,LHour,Lminute)
        Do Until Rs.EOF
            '随机根据当前时间生成时间,加(1-59)秒随机数,可以换分钟,小时
            ydate = DATEADD ("s" , Int((59 * Rnd) + 1),ydate)
            BHour = FormatDateTime(ydate,3)
            
            AHour = Split(LHour, "-", -1, 1)
            BHour = Split(BHour, ":", -1, 1)
            
            Aminute= Split(Lminute, "-", -1, 1)
        
            LHour = BHour(0)&"-"&AHour(1)
            Lminute = BHour(1)&"-"&Aminute(1)
            '当每超过三条数据的时候判断
            If (Total Mod 3)=0 Then
                '每3条+1天
                If Total <> 0 Then
                    '重新初始化各值
                    ydate = FormatDateTime(ydate,2)&" "&LLHour(0)&":"&LLminute(0)&":00"
                    'Response.write ydate
                    ydate = DATEADD ("d" , 1, ydate)
                    Lyear = FormatDateTime(ydate,2)
                    LHour = LLHour(0)&"-"&LLHour(1)
                    Lminute = LLminute(0)&"-"&LLminute(1)
                    Total = 0
                End If
            End If
           ydate = GetDate(Lyear,LHour,Lminute)
        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


工作去了,你在自己改吧,给你都这样了你在搞不定的话,我无语,不会帮你了,等于害你了
#63
sunfeiyao2012-06-07 09:45
老师,您真好,谢谢,能留下您的QQ吗??有问题还可以请教吗??
12