Foxtable(狐表)用户栏目专家坐堂 → [求助]进度显示或进度条


  共有2667人关注过本帖树形打印复制链接

主题:[求助]进度显示或进度条

帅哥哟,离线,有人找我吗?
huaziqiao1976
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:137 积分:1175 威望:0 精华:0 注册:2020/9/28 9:41:00
[求助]进度显示或进度条  发帖心情 Post By:2021/1/19 11:24:00 [只看该作者]

上次根据蓝版的建议做了一个分页筛选,如果用手动点击Button控件筛选NumericComboBox4和NumericComboBox5能正常显示分页情况,但是加上e.Form.Controls("Button4").PerformClick(),自动点击后两个控件就不能正常连续的显示分页情况了,只显示其中的几页和最后一页,请蓝版修改一下代码。
If Tables("信息比对").Rows.Count = 0
    MessageBox.show("请先导入比对信息!")
    Return
End If
With DataTables("信息比对")
    .LoadTop = e.Form.Controls("ComboBox1").Value
    .LoadPage = 0
    .Load()
    e.Form.Controls("NumericComboBox5").Value = (.LoadPage + 1)
    e.Form.Controls("NumericComboBox4").Value = .TotalPages
End With

Dim cmd1 As New SQLCommand
cmd1.C
Dim dt1 As DataTable
Dim Cols1() As String = {"f_zh","f_hm","f_zjhm"}
Dim Cols2() As String = {"账号","户名","身份证号"}
cmd1.CommandText = "S*ELECT * From {tb_ckzhxx} where f_zjhm in ('" & DataTables("信息比对").GetComboListString("证号").Replace("|","','") & "') and f_scbz = 0"
dt1 = cmd1.ExecuteReader()
For Each dr1 As DataRow In dt1.DataRows
    Dim dr3 As DataRow = DataTables("股金客户信息").AddNew()
    For i1 As Integer = 0 To Cols1.Length -1
        dr3(Cols2(i1)) = dr1(Cols1(i1))
    Next
Next
DataTables("股金客户信息").Save()


If  e.Form.Controls("NumericComboBox4").Value = e.Form.Controls("NumericComboBox5").Value Then
    MessageBox.show("比对完毕")
    Dim cmd2 As New SQLCommand
    cmd2.C
    Dim dt2 As DataTable
    Dim Cols3() As String = {"f_nh","f_zh","f_rq","f_lb","f_bj","f_bjye","f_zyf","f_ywh","f_czsj"}
    Dim Cols4() As String = {"年号","账号","数字","摘要","本金","本金余额","占用费","业务号","系统日期"}
    cmd2.CommandText = "S*ELECT * From {tb_khrgtgxh} where f_zh in ('" & DataTables("股金客户信息").GetComboListString("账号").Replace("|","','") & "')"
    dt2 = cmd2.ExecuteReader()
    For Each dr3 As DataRow In dt2.DataRows
        Dim dr4 As DataRow = DataTables("股金数据").AddNew()
        For i2 As Integer = 0 To Cols3.Length -1
            dr4(Cols4(i2)) = dr3(Cols3(i2))
            If dr4("摘要") = "开户" Then
                dr4("入股金额") = dr4("本金")
            End If
            If dr4("摘要") = "入股" Then
                dr4("入股金额") = dr4("本金")
            End If
            If dr4("摘要") = "退股" Then
                dr4("退股金额") = dr4("本金")
            End If
            If dr4("摘要") = "销户" Then
                dr4("退股金额") = dr4("本金")
            End If
            If dr4("摘要") = "结算占用费" Then
                dr4("入股金额") = dr4("占用费")
            End If
        Next
    Next
    DataTables("股金数据").DeleteFor("[摘要] = '占用费转入'")
    DataTables("股金数据").DeleteFor("入股金额 = 0 ")
    DataTables("股金数据").Save()
    Dim Table1 As WinForm.Table = e.Form.Controls("Table4")
    Table1.Table.SetHeaderRowHeight(-1,-1)
    Dim b As New SQLGroupTableBuilder("股金余额查询表","股金数据")
    Dim b1 As Table = Tables("入股比对_Table4")
    b.AddTable("股金数据","账号","股金客户信息","账号") '添加统计表
    b.Groups.AddDef("{股金数据}.账号") '根据信息表户名分组
    b.Groups.AddDef("{股金客户信息}.户名") '根据信息表户名分组
    b.Groups.AddDef("{股金客户信息}.身份证号") '根据信息表户名分组
    b.Groups.AddDef("{股金客户信息}.工作单位") '根据信息表户名分组
    b.Totals.AddDef("日期",AggregateEnum.Min) '根据信息表户名分组
    b.Totals.AddDef("入股金额") '对入股金额进行统计
    b.Totals.AddDef("退股金额") '对退股金额进行统计
    b.Totals.AddExp("余额","iif(入股金额 is null,0,入股金额) - iif(退股金额 is null,0,退股金额)")
    b1.DataSource = b.BuildDataSource
    Tables("入股比对_Table4").SetColVisibleWidth("日期|80|账号|130|户名|60|身份证号|120|工作单位|140|入股金额|100|退股金额|100|余额|100|")
    Tables("入股比对_Table4").sort = "户名"
    e.Form.Controls("NumericComboBox1").Value = Tables("入股比对_Table4").rows.count
    e.Form.Controls("NumericComboBox2").Value  = Tables("入股比对_Table4").Compute("Sum(余额)")
    e.Form.Controls("NumericComboBox3").Value = Tables("信息比对").rows.count
    Return
Else
    If e.Form.Controls("NumericComboBox4").Value >= e.Form.Controls("NumericComboBox5").Value Then
        e.Form.Controls("Button4").PerformClick()
    End If
End If
如果根据分页的情况做一个进度条,
Dim p As WinForm.ProgressBar
p = e.Form.Controls(
"ProgressBar1")
p.Maximum = 
e.Form.Controls("NumericComboBox4").Value '设置最大值
p.Minimum = 
'设置最小值
p.Value = 
'设置当前值
求e.Form.Controls("NumericComboBox5").Value变动时显示进度的代码

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109678 积分:558082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/19 11:26:00 [只看该作者]

请上传实例测试

 回到顶部
帅哥哟,离线,有人找我吗?
huaziqiao1976
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:137 积分:1175 威望:0 精华:0 注册:2020/9/28 9:41:00
  发帖心情 Post By:2021/1/19 11:48:00 [只看该作者]

实例
[此贴子已经被作者于2021/1/19 11:52:41编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
huaziqiao1976
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:137 积分:1175 威望:0 精华:0 注册:2020/9/28 9:41:00
  发帖心情 Post By:2021/1/19 11:54:00 [只看该作者]

实例
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:股金客户管理.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109678 积分:558082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/19 12:06:00 [只看该作者]

连接不到数据库,无法测试。

如果是要显示进度,到循环里给p.Value赋值:http://www.foxtable.com/webhelp/topics/0793.htm

 回到顶部
帅哥哟,离线,有人找我吗?
huaziqiao1976
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:137 积分:1175 威望:0 精华:0 注册:2020/9/28 9:41:00
  发帖心情 Post By:2021/1/19 12:17:00 [只看该作者]

唉,就是不知道怎样与e.Form.Controls("NumericComboBox5").Value变动时显示进度的代码了,下面这段应该怎么改
For i As integer = 0 To MainTable.Rows.Count - 1
    
MainTable.Rows(i)("第一列") = i 
    
If i Mod 100 = Then
        p.Value = i 
'当前值为已经完成的行数
    
End 
If
Next
[此贴子已经被作者于2021/1/19 12:18:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109678 积分:558082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/19 13:32:00 [只看该作者]

p.Value = e.Form.Controls("NumericComboBox5").Value

 回到顶部
帅哥哟,离线,有人找我吗?
huaziqiao1976
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:137 积分:1175 威望:0 精华:0 注册:2020/9/28 9:41:00
  发帖心情 Post By:2021/1/19 14:19:00 [只看该作者]

With DataTables("信息比对")
    .LoadTop = e.Form.Controls("ComboBox1").Value
    .LoadPage = 0
    .Load()
    e.Form.Controls("NumericComboBox5").Value = (.LoadPage + 1)
    e.Form.Controls("NumericComboBox4").Value = .TotalPages
Dim p As WinForm.ProgressBar
p = e.Form.Controls("ProgressBar1")
p.Maximum = .TotalPages
p.Minimum = 0 '设置最小值
p.Value = e.Form.Controls("NumericComboBox5").Value '设置当前值
Dim pv As Integer
pv = .TotalPages * e.Form.Controls("NumericComboBox5").Value
p.Value = pv
End With


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109678 积分:558082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/19 14:27:00 [只看该作者]

去掉

Dim pv As Integer
pv = .TotalPages * e.Form.Controls("NumericComboBox5").Value
p.Value = pv

 回到顶部