Foxtable(狐表)用户栏目专家坐堂 → [求助]统计过程中,窗口控件显示信息丢失


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

主题:[求助]统计过程中,窗口控件显示信息丢失

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]统计过程中,窗口控件显示信息丢失  发帖心情 Post By:2020/5/26 23:10:00 [显示全部帖子]

老师好!

我在测试统计的过程中,窗口中的TextBox1、ListBox1Calendar1控件原有信息都看不到了,统计运算过程结束后,才重新显示原有信息。需要怎样避免?

谢谢!

 


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/5/27 18:41:00 [显示全部帖子]

1、数据表总行数近1500万行,实际参与统计的(Filter 以后)不到1万行,窗口表的样式描绘已关。如图,点击统计按钮后,方框中的控件信息都空了,代码运行完毕后,又重新显示:

 
此主题相关图片如下:gif.gif
按此在新窗口浏览图片

 

2、统计按钮代码:

 

'添加分析表
Dim b As New SQLCrossTableBuilder("统计表1","分析数据")
b.C

'添加多表-关联列
b.AddTable("分析数据","阳历日期","股piao日线","日期") '添加统计表

 

'横向分组(竖向-行标题)
For Each s As String In e.Form.Controls("CheckedComboBox16").text.Split("|")
    If s = "日期" Then
        b.HGroups.AddDef("日期",DateGroupEnum.none)
    Else
        b.HGroups.AddDef(s) '添加列用于垂直分组
    End If
Next

 

'竖向分组(横向-列标题)
For Each s As String In e.Form.Controls("CheckedComboBox17").text.Split("|")
    If s = "日期" Then
        b.VGroups.AddDef("日期",DateGroupEnum.none)
    ElseIf s = "阳历日期" Then
        b.VGroups.AddDef("阳历日期",DateGroupEnum.none)
    Else
        b.VGroups.AddDef(s) '添加列用于水平分组
    End If
Next

 

'计算列
For Each s As String In e.Form.Controls("CheckedComboBox18").text.Split("|")
    If e.Form.Controls("CheckBox5").checked = True Then
        b.Decimals = 2  '保留两位小数
        b.Totals.AddDef(s,AggregateEnum.Sum)  '累计数统计
    ElseIf e.Form.Controls("CheckBox8").checked = True Then
        b.Decimals = 2  '保留两位小数
        b.Totals.AddDef(s,AggregateEnum.Average)  '平均数统计
    End If
Next

 

'设置统计条件
b.Filter = e.form.controls("TextBox1").Text

 

'生成汇总模式
If e.Form.Controls("CheckBox1").checked = True Then   '水平方向生成汇总
    b.HorizontalTotal = True
End If
If e.Form.Controls("CheckBox2").checked = True Then   '垂直方向生成汇总
    b.VerticalTotal = True
End If
If e.Form.Controls("CheckBox3").checked = True Then   '自动生成汇总模式
    b.Subtotal = True
End If

b.Decimals = 2  '保留两位小数
b.Build '生成统计表
Tables("统计分析_Table1").DataSource = b.BuildDataSource()

 

'窗口表样式
Tables("统计分析_Table1").grid.styles.Normal.Border.Color = Color.Red
Tables("统计分析_Table1").grid.styles.Normal.Border.Style = 1
Tables("统计分析_Table1").grid.styles.Normal.Border.width = 1
Tables("统计分析_Table1").grid.styles.Normal.Border.Direction = 0 '0-2
Tables("统计分析_Table1").DefaultRowHeight = 30
'Tables("统计分析_Table1").AutoSizeRows

 

'单元格水平居中
If e.Form.Controls("CheckBox4").checked = True Then
    For Each c As Col In Tables("统计分析_Table1").cols
        c.TextAlign = TextAlignEnum.Center
    Next
End If

 

'平均列宽
If e.Form.Controls("CheckBox6").checked = True Then
    Dim wid As Integer=(e.Form.controls("Table1").Width-50)/Tables("统计分析_Table1").Cols.Count
    Dim cls As String
    For Each c As Col In Tables("统计分析_Table1").Cols
        cls = cls & c.Name & "|" & wid & "|"
    Next
    Tables("统计分析_Table1").SetColVisibleWidth(cls.Trim("|"))
End If

 

'自动列宽
If e.Form.Controls("CheckBox7").checked = True Then
    Tables("统计分析_Table1").AutoSizeCols()
End If

 

'合并单元格
If e.Form.Controls("CheckBox12").checked = True Then
    With Tables("统计分析_Table1")  '合并
        .MergeMode = MergeModeEnum.Standard '标准合并模式
        .MergeCols.Clear() '清除原来的合并列
        Dim Names As String() = e.Form.Controls("CheckedComboBox16").text.Split("|")
        For i As Integer = 0 To Names.Length -2
            .MergeCols.Add(Names(i))
        Next
        .AllowMerge = True '启用合并模式
    End With
End If

Dim dt As Table = Tables("统计分析_Table1")  '居中
For Each c As Col In dt.Cols
    c.TextAlign = TextAlignEnum.Center
Next

 

'补齐日期
If Tables("统计分析_Table1").Cols.Contains("日期") Or Tables("统计分析_Table1").Cols.Contains("阳历日期") Then
   
    Dim  drs As  List(of  DataRow) = DataTables("分析数据").SQLSelect("年份 = '2020'")
    For Each  dr As  DataRow In drs
        Dim dr1 As DataRow = Tables("统计分析_Table1").DataTable.Find("日期 = '" & dr("阳历日期") & "'")
        If dr1 Is Nothing Then
            dr1 = Tables("统计分析_Table1").DataTable.Addnew()
            dr1("日期") = dr("阳历日期")
            Dim Names As String() = e.Form.Controls("CheckedComboBox16").text.Split("|")
            For i As Integer = 0 To Names.Length -2
                dr1(Names(i)) = dr(Names(i))
            Next
        Else
        End If
    Next
End If

 

'汇总显示目录树
If e.Form.Controls("CheckBox9").checked = True Then
    Dim t As Table = Tables("统计分析_Table1")
    t.GroupAboveData = True  '分组行位于数据行之上
    t.TreeVisible = True '显示目录树
End If

 

 




[此贴子已经被作者于2020/5/27 18:45:49编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/5/28 11:22:00 [显示全部帖子]

没有,绑定设置都是空着的。

 回到顶部