Foxtable(狐表)用户栏目专家坐堂 → 如何获取sqlquery表,如何写


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

主题:如何获取sqlquery表,如何写

美女呀,离线,留言给我吧!
susu312
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
如何获取sqlquery表,如何写  发帖心情 Post By:2018/12/19 20:42:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下: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  '垂直方向生成汇总

 

 

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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By: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") '打开生成的统计表

 

代码如上

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/19 22:32:00 [只看该作者]

弹出列名看看

 

msgbox(chuiZhi)

 

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


 回到顶部
美女呀,离线,留言给我吧!
susu312
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/19 22:41:00 [只看该作者]

以下是引用susu312在2018/12/19 22:38:00的发言:

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

 

可以,参考

 

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


 回到顶部
美女呀,离线,留言给我吧!
susu312
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By: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") '打开生成的统计表

 

 

老师,红色为啥不对呀


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/19 22:53:00 [只看该作者]

1、报什么错?

 

2、msgbox(chuizhi) 弹出什么?


 回到顶部