以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 显示执行的行号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102049)

--  作者:2900819580
--  发布时间:2017/6/12 14:59:00
--  [求助] 显示执行的行号
Dim tb As Table = Tables(e.Form.Name & "_Table1")
For i As Integer = 0  To tb.Rows.Count - 1
    Dim r As Row = tb.Rows(i)
    Dim dr As DataRow = DataTables("物料表").SQLFind("代码 = \'" & R("物料代码") & "\'")
   If dr IsNot Nothing Then  dr("采购负责人") = R("制单")
Next
MessageBox.Show("负责人更新完成")

如上面的代码,如果行号比较多,会给人家感觉程序死机一样。如何可以实现
执行开始时会出现一个对话框,显示执行的行号,和进度条。

[此贴子已经被作者于2017/6/12 15:16:14编辑过]

--  作者:有点色
--  发布时间:2017/6/12 15:15:00
--  
 具体你的问题。
--  作者:2900819580
--  发布时间:2017/6/12 15:17:00
--  
以下是引用有点色在2017/6/12 15:15:00的发言:
 具体你的问题。

Dim tb As Table = Tables(e.Form.Name & "_Table1")
For i As Integer = 0  To tb.Rows.Count - 1
    Dim r As Row = tb.Rows(i)
    Dim dr As DataRow = DataTables("物料表").SQLFind("代码 = \'" & R("物料代码") & "\'")
   If dr IsNot Nothing Then  dr("采购负责人") = R("制单")
Next
MessageBox.Show("负责人更新完成")

如上面的代码,如果行号比较多,会给人家感觉程序死机一样。如何可以实现
执行开始时会出现一个对话框,显示执行的行号,和进度条。


--  作者:有点色
--  发布时间:2017/6/12 15:23:00
--  

试试这样

 

Dim tb As Table = Tables(e.Form.Name & "_Table1")
Dim dms As String = ""
For i As Integer = 0  To tb.Rows.Count - 1
    Dim r As Row = tb.Rows(i)
    dms = dms & "\'" & r("物料代码") & "\',"
Next
DataTables("物料表").loadfilter = "代码 in (" & dms.trim(",") & ")"
DataTables("物料表").load
For i As Integer = 0  To tb.Rows.Count - 1
    Dim r As Row = tb.Rows(i)
    Dim dr As DataRow = DataTables("物料表").Find("代码 = \'" & R("物料代码") & "\'")
    If dr IsNot Nothing Then  dr("采购负责人") = R("制单")
Next

MessageBox.Show("负责人更新完成")


--  作者:有点色
--  发布时间:2017/6/12 15:24:00
--  

 如果还需要进度条,参考

 

http://www.foxtable.com/webhelp/scr/0793.htm

 

 


--  作者:2900819580
--  发布时间:2017/6/12 15:43:00
--  
老师,这样子,为什么Label的内容一直不变的呢?

Forms("窗口4").open
Dim p As WinForm.ProgressBar = Forms("窗口4").Controls("ProgressBar1")
Dim la As WinForm.Label = Forms("窗口4").Controls("Label1")
p.Maximum = MainTable.Rows.Count \'设置最大值
p.Minimum = 0 \'设置最小值
p.Value = 0 \'设置当前值
For i As Integer = 0 To MainTable.Rows.Count - 1
    \'MainTable.Rows(i)("第一列") = i
    
    If i Mod 20 = 0 Then
        
        la.text = i & "/" & MainTable.Rows.Count
        p.Value = i \'当前值为已经完成的行数
    End If
Next



--  作者:有点色
--  发布时间:2017/6/12 15:43:00
--  

 看看

 

http://www.foxtable.com/webhelp/scr/1476.htm

 


--  作者:2900819580
--  发布时间:2017/6/12 16:00:00
--  
老师增加上去了,但跟进度进度条不同步,数字早就跑完了,进度条还在跑

Forms("窗口4").open
Dim p As WinForm.ProgressBar = Forms("窗口4").Controls("ProgressBar1")
Dim la As WinForm.Label = Forms("窗口4").Controls("Label1")
p.Maximum = MainTable.Rows.Count \'设置最大值
p.Minimum = 0 \'设置最小值
p.Value = 0 \'设置当前值
For i As Integer = 0 To MainTable.Rows.Count - 1

    Application.DoEvents()        
        la.text = i & "/" & MainTable.Rows.Count
        p.Value = i \'当前值为已经完成的行数

Next
[此贴子已经被作者于2017/6/12 16:00:40编辑过]

--  作者:有点色
--  发布时间:2017/6/12 16:03:00
--  
 代码没问题,请把进度条设置成【标准样式】
--  作者:2900819580
--  发布时间:2017/6/12 19:26:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目11.table

老师,三种模式都试过了。还是不行 ,数字完成了,进度条还没走完。

[此贴子已经被作者于2017/6/12 19:26:46编辑过]