以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  提示startindex 不能大于字符串长度!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=101263)

--  作者:xxcwdlwgo
--  发布时间:2017/5/27 12:42:00
--  提示startindex 不能大于字符串长度!
Dim lb2 As WinForm.Label = e.Form.Controls("Label2")
Dim lb3 As WinForm.Label = e.Form.Controls("Label3")
Dim p1 As WinForm.ProgressBar
p1 = e.Form.Controls("ProgressBar1")
p1.Maximum = DataTables("xjkh_lwg").DataRows.Count
p1.Minimum = 0 \'设置最小值
p1.Value = 0 \'设置当前值
lb2.Text = "正在分析数据……"
Dim Arys As List(Of String())
Arys = DataTables("dtgk_lwg").GetValues("使用车站|电梯编号|巡检点1|巡检点2") 
MainTable = Tables("xjkh_lwg")
systemready = False
For Each dr As DataRow In DataTables("xjkh_lwg").DataRows
    
    For Each Ary As String() In Arys
        If dr("使用车站") = ary(0) And (dr("placename") = ary(2) Or dr("placename") = ary(3))  Then 
            dr("dtcode") = ary(1)
            dr("xjsx") = ary(2) & "," & ary(3)
        End If
    Next
    p1.Value = p1.Value + 1
    lb2.Text = "正在分析数据……"
    \'lb2.Text = lb2.text & "   " & p.Value & "/" & p.Maximum
    lb2.Text = lb2.text & "   " & Format(p1.value/p1.Maximum,"0%")

    application.Doevents
Next
lb2.Text = "分析数据完成!"
systemready = True
——————————————————

Dim p2 As WinForm.ProgressBar
p2 = e.Form.Controls("ProgressBar2")
p2.Maximum = jljls
p2.Minimum = 0 \'设置最小值
p2.Value = 0 \'设置当前值
lb3.Text = "正在生成巡检评价……"
\'MainTable = Tables("xjkh_lwg")

systemready = False

For Each v() As String In DataTables("xjkh_lwg").GetValues("站段名称|使用车站|dtcode|linename|plandate")
    Dim dr1 As DataRow = DataTables("xjfx").AddNew()
    dr1("站段名称") = v(0)
    dr1("使用车站") = v(1)
    dr1("电梯编号") = v(2)
    dr1("计划名") = v(3)
    dr1("计划日期") = v(4)
    Dim rq As Date
    Date.TryParse(v(4),rq)
    Dim ztbz As Integer
    ztbz = 0
    \'Dim pj As String
    Dim filter As String
    filter ="[站段名称] = \'" & v(0) &  "\'and [使用车站] = \'" & v(1) & "\' and  [dtcode] = \'"  & v(2)  &  _
    " \'And [linename] = \'" &  v(3) &  " \' And [plandate] = \'" &  v(4) & "\'"
    
    For Each dr2 As DataRow In DataTables("xjkh_lwg").Select(filter)
……………………代码
next
   p2.Value = p2.Value + 1
    lb3.Text = "正在生成巡检评价……"
    \'lb3.Text = lb3.text & "   " & p2.Value & "/" & p2.Maximum
    lb3.Text = lb3.text & "   " & Format(p2.value/p2.Maximum,"0%")

    application.Doevents
Next
systemready = True
lb3.Text = "巡检评价写入完成!"
MainTable = Tables("xjfx")
Tables("xjfx").AutoSizeCols()

上述代码报startindex 不能大于字符串长度
横线上面部分代码运行正常,也能正常显示进度和百分比。横线下面部分,报startindex错误,我把红色部分去掉,能正常运行。

--  作者:有点蓝
--  发布时间:2017/5/27 14:52:00
--  
p2.Value = p2.Value + 1

改为

if p2.value < jljls then p2.Value = p2.Value + 1

其它地方看不出问题