不懂编程呀,VBS里面的for下面的if运行不了,大神帮我看看什么问题

  • t
    t526
    每次运行的时候都执行的else,前面的IF判断全部失效,难道elseif QD = c20 Then要用文本比较?不会啊


    cscript c:\1.vbs





    Const adUseClient = 3
    Const adStateClosed = 0

    Dim sdate
    sdate="2020-7-1"
    If(DateDiff("d",sdate,Date())>0) Then
    WScript.quit
    End If


    Dim Cnt
    Dim maxid
    Dim sleepTime
    Dim QD

    Dim fpath
    fpath="D:\JCC120.mdb"

    sleepTime=10000

    Set Conn=CreateObject("adodb.connection"
    Set Rs=CreateObject("ADODB.Recordset"
    Conn.CursorLocation = adUseClient

    strCon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fpath & ";Persist Security Info=False"
    Conn.Open strCon


    if Rs.State <> adStateClosed Then Rs.Close
    Rs.Open "select max(id) as mid from Act",Conn
    if Rs.RecordCount > 0 Then
    maxid = rs("mid"
    End If
    Rs.Close
    Conn.Close
    WScript.Echo "程序开始,当前最大ID: " & maxid

    While 1=1
    Conn.Open strCon
    if Rs.State <> adStateClosed Then Rs.Close
    Rs.Open "SELECT * from Act where id > " & maxid & " order by id" ,Conn
    Cnt = Rs.RecordCount

    If Cnt > 0 Then
    Rs.MoveFirst
    For i = 1 To Cnt
    'WScript.Echo "key="&rs("iTime"&vbcrlf&"a="&rs("NAM_GL1"
    maxid = rs("id")
    QD = rs("ClassType")
    if QD = c15 Then
    Conn.Execute "update Act set S1=100,S2=100,S3=100,S4=100,S22=100,S23=100
    elseif QD = c20 Then
    Conn.Execute "update Act set S1=200,S2=200,S3=200,S4=200,S22=200,S23=200
    elseif QD = c25 Then
    Conn.Execute "update Act set S1=300,S2=300,S3=300,S4=300,S22=300,S23=300
    elseif QD = C30 Then
    Conn.Execute "update Act set S1=400,S2=400,S3=400,S4=400,S22=400,S23=400
    elseif QD = C30S Then
    Conn.Execute "update Act set S1=500,S2=500,S3=500,S4=500,S22=500,S23=500
    elseif QD = c40 Then
    Conn.Execute "update Act set S1=600,S2=600,S3=600,S4=600,S22=600,S23=600
    elseif QD = c50 Then
    Conn.Execute "update Act set S1=700,S2=700,S3=700,S4=700,S22=700,S23=700
    else
    Conn.Execute "update Act set S1=700,S2=700,S3=700,S4=700,S22=700,S23=700
    rs.MoveNext
    end if
    Next
    End If

    Rs.Close
    Conn.Close
    WScript.Echo "本次处理" & Cnt & "行,已处理的最大Id=" & maxid

    WScript.Echo "Sleep " & sleepTime/1000 & "秒"
    Wscript.Sleep sleepTime
    Wend

    Set Rs = Nothing
    Set Conn = Nothing


    Function rndnum()
    Randomize()
    If Rnd() > 0.5 Then
    Randomize()
    rndnum = 1 + Rnd()/100
    Else
    Randomize()
    rndnum = 1 - Rnd()/100
    End If
    End Function
  • m
    manhere
    你的C**怎么冒出来的?如果是字符串比较请加引号
  • t
    t526
    回复2#manhere


    if 如果比较是中文字符串,比如把C15改成中文名字 ,加引号也可以吗?
  • t
    t526
    C15是ClassType里面的字符串值。有些包含汉字
  • e
    ever638
    还没写过这么长的代码,能力不够
  • h
    happyd8699
    C15如果是变量,没有赋值
    如果是字符串,要加双引号,if QD = "C15"
  • 遗忘海岸
    发文件上来
  • l
    lonee
    花一点儿时间用python重写,就能全平台了。