以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何获取sqlquery表,如何写  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129006)

--  作者:susu312
--  发布时间:2018/12/19 20:42:00
--  如何获取sqlquery表,如何写


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 


 

\'\'定义数据两个统计1\\2的数据字典,便于引用显示值
Dim dmp1 = Tables("统计1").cols("分组列").DataMap
Dim dmp2 = Tables("统计2").cols("分组列").DataMap
Dim b1 As New CrossTableBuilder("统计表1","person")

\'\'设置水平分组
For Each r As Row In Tables("统计1").Rows
   If r.IsNull("分组列")=False Then
       If r.IsNull("日期分组")=False Then
            b1.HGroups.AddDef(r("分组列"), DateGroupEnum.Year,  r("标题") )
       Else
            b1.HGroups.AddDef(r("分组列"),r("标题") )\'添加列用于水平分组
       End If
   Else
       Continue For
   End If
Next

\'\'设置垂直分组 count判断的是为空的列
Dim count As Integer = 0
For Each r As Row In Tables("统计2").Rows
     If r.IsNull("分组列")=False Then
        count=count+1
     End If
Next

\'\'判断是否没有选择垂直分组列
If count = 0 OrElse count = Tables("统计2").Rows.Count Then
     MessageBox.Show("请选择垂直分组列", "提示", MessageBoxButtons.ok, MessageBoxIcon.Information)
     \'\'使得按钮点完后,不要再是选定色
     e.form.controls("Table2").Select
     Return
End If
\'\'如果只有一组垂直分组列,就给加模式
If count=1 Then
   For Each r As Row In Tables("统计2").Rows
     If r.IsNull("分组列") =False  Then
        r("模式") =dmp2( r("分组列")) & "_{0}"  \'\'作赋值操作
        b1.VGroups.AddDef(r("分组列"), r("模式"))
        Exit For
     End If
   Next
Else
   For Each r As Row In Tables("统计2").Rows
     If r.IsNull("分组列")=False Then
            If  r.IsNull("模式")=False  Then  \'\'如果用户输入模式,则允许并赋值
                 b1.VGroups.AddDef( r("分组列"), r("模式"))
            Else
                 b1.VGroups.AddDef(r("分组列"))   \'添加列用于垂直分组
            End If
     End If
   Next
End If
\'

\'\'设置统计
\'\'避免用户跳过几行开始输入的问题
For Each r As Row In Tables("统计2").Rows
    If r.IsNull("分组列") =False Then
        b1.Totals.AddDef(r("分组列"), AggregateEnum.Count) \'添加列用于统计
        Exit For
   End If
Next

\'\'\'设置统计选项
b1.HorizontalTotal = True   \'水平方向生成汇总
b1.VerticalTotal = True  \'垂直方向生成汇总

 

 

老师 ,红色那里我如何写表呀,我是 基于这个窗口下面这个表进行统计,


--  作者:有点甜
--  发布时间:2018/12/19 21:45:00
--  

改成比如

 

Dim b1 As New CrossTableBuilder("统计表1", datatables("窗口1_Table1"))

 

或者

 

Dim b1 As New CrossTableBuilder("统计表1", tables("窗口1_Table1").datatable)


--  作者:susu312
--  发布时间:2018/12/19 22:29:00
--  
以下是引用有点甜在2018/12/19 21:45:00的发言:

改成比如

 

Dim b1 As New CrossTableBuilder("统计表1", datatables("窗口1_Table1"))

 

或者

 

Dim b1 As New CrossTableBuilder("统计表1", tables("窗口1_Table1").datatable)


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

老师,这个错误是啥意思?

\'\'获取统计控件的值
Dim chuiZhi As String = e.Form.Controls("chuiZhi").Value
If chuiZhi Is Nothing  Then
    e.Form.Controls("chuiZhi").Error="请选择垂直分组列"
    Return
Else
   chuiZhi = chuiZhi.Replace(" ","")
End If
Dim b As New CrossTableBuilder("统计表1", DataTables("时间节点_Table1"))
b.HGroups.AddDef("离退休单位") \'添加客户列用于水平分组
b.VGroups.AddDef(chuiZhi) \'添加产品列用于垂直分组
b.Totals.AddDef(chuiZhi) \'添加数量列用于统计
b.HorizontalTotal = True   \'水平方向生成汇总
b.VerticalTotal = True  \'垂直方向生成汇总
b.Build
MainTable = Tables("统计表1") \'打开生成的统计表

 

代码如上

 


--  作者:有点甜
--  发布时间:2018/12/19 22:32:00
--  

弹出列名看看

 

msgbox(chuiZhi)

 

这一列,必须是数值列,才能统计的。


--  作者:susu312
--  发布时间:2018/12/19 22:38:00
--  
以下是引用有点甜在2018/12/19 22:32:00的发言:

弹出列名看看

 

msgbox(chuiZhi)

 

这一列,必须是数值列,才能统计的。

老师,我知道原因了,那啥,可以把这个生成的统计表再传入那个sqlquery么?

 

 

\'\'获取统计控件的值
Dim chuiZhi As String = e.Form.Controls("chuiZhi").Value
If chuiZhi Is Nothing  Then
    e.Form.Controls("chuiZhi").Error="请选择垂直分组列"
    Return
Else
   chuiZhi = chuiZhi.Replace(" ","")
End If
Dim b As New CrossTableBuilder("统计表1", DataTables("时间节点_Table1"))
b.HGroups.AddDef("离退休单位") \'添加单位列用于水平分组
b.VGroups.AddDef(chuiZhi,chuiZhi&"_{0}") \'添加垂直分组
b.Totals.AddDef(chuiZhi, AggregateEnum.Count) \'添加用于统计
b.HorizontalTotal = True   \'水平方向生成汇总
b.VerticalTotal = True  \'垂直方向生成汇总
b.Build
MainTable = Tables("统计表1") \'打开生成的统计表

 

 

老师,红色为啥不对呀

[此贴子已经被作者于2018/12/19 22:42:03编辑过]

--  作者:有点甜
--  发布时间:2018/12/19 22:41:00
--  
以下是引用susu312在2018/12/19 22:38:00的发言:

老师,我知道原因了,那啥,可以把这个生成的统计表再传入那个sqlquery么?

 

可以,参考

 

tables("窗口1_Table1").DataSource = DataTables("统计表1")


--  作者:susu312
--  发布时间:2018/12/19 22:52:00
--  
以下是引用有点甜在2018/12/19 22:41:00的发言:

 

可以,参考

 

tables("窗口1_Table1").DataSource = DataTables("统计表1")

\'\'获取统计控件的值
Dim chuiZhi As String = e.Form.Controls("chuiZhi").Value
If chuiZhi Is Nothing  Then
    e.Form.Controls("chuiZhi").Error="请选择垂直分组列"
    Return
Else
   chuiZhi = chuiZhi.Replace(" ","")
End If
Dim b As New CrossTableBuilder("统计表1", DataTables("时间节点_Table1"))
b.HGroups.AddDef("离退休单位") \'添加单位列用于水平分组
b.VGroups.AddDef(chuiZhi,chuiZhi&"_{0}") \'添加垂直分组
b.Totals.AddDef(chuiZhi, AggregateEnum.Count) \'添加用于统计
b.HorizontalTotal = True   \'水平方向生成汇总
b.VerticalTotal = True  \'垂直方向生成汇总
b.Build
MainTable = Tables("统计表1") \'打开生成的统计表

 

 

老师,红色为啥不对呀


--  作者:有点甜
--  发布时间:2018/12/19 22:53:00
--  

1、报什么错?

 

2、msgbox(chuizhi) 弹出什么?