Foxtable(狐表)用户栏目专家坐堂 → [求助]SQLGroupTableBuilder问题


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

主题:[求助]SQLGroupTableBuilder问题

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


加好友 发短信
等级:三尾狐 帖子:646 积分:4893 威望:0 精华:0 注册:2016/1/16 22:42:00
[求助]SQLGroupTableBuilder问题  发帖心情 Post By:2018/3/23 8:48:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1p99su$`s%uc1khs@dzh~(u.png
图片点击可在新窗口打开查看


Dim CombGetColTbl As WinForm.ComboBox = e.Form.Controls("CombGetColTbl") 'CombGetColTbl对应第一张图的{产值付款流程表}
If CombGetColTbl.Items.Count<1 Then
    MessageBox.Show("没有需要统计的表")
    Return
End If
Dim MainSumTable As String = CombGetColTbl.Items(0) '统计使用的主表
Dim  CombSumCol As WinForm.ListBox = e.Form.Controls("LstSumCol1")'对应第一张图的{SUM(申报金额) SUM(批复金额)}
If CombSumCol.Items.Count<1 Then
    MessageBox.Show("没有选定统计列")
    Return
End If
Dim SumName As String = e.Form.Controls("TxtGroup1").TEXT '生成查询表的名字
Dim tStr As String = ""
If SUMNAME.Trim() = "" Then
    SUMNAME= MainSumTable & "统计表"
    e.Form.Controls("TxtGroup1").TEXT = SUMNAME
End If
Dim DetailCol As WinForm.ListBox = e.Form.Controls("LstDetailDec1") '对应第一张图的{都匀电厂补水管,都匀电厂柴油机,都匀电厂复用水}
Dim nCn As Integer = DetailCol.Items.Count -1
Dim bdx(CombSumCol.Items.Count-1 , iif(nCn<0 ,0 , nCn) ) As SQLGroupTableBuilder '
Dim dtx(CombSumCol.Items.Count-1 , iif(nCn<0 ,0 , nCn) )  As fxDataSource
Dim vSum(CombSumCol.Items.Count-1) As  mColValue '
Functions.Execute("Fun分离lstboxs数据",CombSumCol,vSum,MainSumTable,"",False)
Dim vGrp(iif(nCn<0 ,0 , nCn)) As  mColValue '
Functions.Execute("Fun分离lstboxs数据",DetailCol,vGrp,MainSumTable,e.Form.Controls("CombGetColTbl1").text,False)
For i As Integer=0   To CombSumCol.Items.Count -1
    For j As Integer=0   To iif(nCn<1,0,ncn)
        If i=0 And j=0 Then
            bdx(0,0) = New SQLGroupTableBuilder(SUMNAME,MainSumTable )
        Else
            bdx(I,J) = New SQLGroupTableBuilder(SUMNAME & i & j,MainSumTable )
        End If
        bdx(I,J).C
    Next
Next
For L As Integer = 0 To CombGetColTbl.Items.Count -1 ''连接多表
    Dim CombLinkCol01 As WinForm.ComboBox = e.Form.Controls("CombLinkCol" & L & "1") '连接字段
    Dim CombLinkCol02 As WinForm.ComboBox = e.Form.Controls("CombLinkCol" & L & "2") '连接字段
    If L>0 Then
        If CombLinkCol01.Text <> "" AndAlso CombLinkCol02.text <> "" Then
            For i As Integer=0  To CombSumCol.Items.Count -1
                For j As Integer =0 To iif(nCn<1,0,ncn)
                    bdx(I,J).AddTable(MainSumTable ,CombLinkCol01.Text ,CombGetColTbl.Items(L) ,CombLinkCol02.Text )
                Next
            Next
            
        End If
    End If
Next
Dim LstGrpName As WinForm.ListBox = e.Form.Controls("LstDesColName1") ' 统计时的分组列
Dim grpN(LstGrpName.Items.Count-1) As String
Dim il As Integer =0
For i As Integer =0 To (LstGrpName.Items.Count -1)
    tStr = LstGrpName.Items(i)
    il=tStr.IndexOf("}.")
    grpN(i)=tstr.Trim()
    For j As Integer = 0 To CombSumCol.Items.Count -1
        For k As Integer = 0 To iif(nCn<1,0,ncn)
            bdx(j,k).Groups.AddDef( tStr ,IIF(IL>0, tStr.SubString(tStr.IndexOf("}.") +2 ),tStr) ) '
            'MessageBox.Show("J"  & J & "     K" & K & "GRP:" & tStr, & "GRP:" & tStr)
        Next
    Next
Next
For i As Integer =0 To CombSumCol.Items.Count -1 ''开始统计
    For j As Integer = 0 To  iif(nCn<1,0,ncn) 'DetailCol
        bdx(I,j).Totals.AddDef( vSum(i).Value ,  vSum(i).Value & "_" & vGrp(j).dfVal) ' tStr.SubString(tStr.IndexOf("}.") +2 ) )
        'MessageBox.Show("IvSum(i).Value "  & vSum(i).Value  & "     vSum(i).Value _ vGrp(j).dfVal" & vSum(i).Value & "_" & vGrp(j).dfVal & "GRP:" & tStr)
        If vGrp(j).dfVal<>"" Then bdx(I,j).Filter =  vGrp(j).Value & " = '" & vGrp(j).dfVal & "'"
        
        dtx(i,j) = bdx(I,j).BuildDataSource()
        '
        
        If i<> 0 Or j<> 0 Then '
'            MessageBox.Show("grpN(0) I"  & i & grpN(0) & "     grpN(1) J" & J & grpN(1) & "vSum(J).dfVal" & vGrp(j).dfVal  )
            dtx(0,0).Combine(grpN ,dtx(I,j), grpN)'
        End If
    Next
Next

Tables("通用分组查询器_TblData").DataSource = bdx(0,0) '这个结果出来后,见图第二张,怎么会没有动呢?
Tables("通用分组查询器_TblData").AutoSizeCols()

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


加好友 发短信
等级:三尾狐 帖子:646 积分:4893 威望:0 精华:0 注册:2016/1/16 22:42:00
  发帖心情 Post By:2018/3/23 9:08:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:}(nm0rmmua8m%wqs}p@_21o.png
图片点击可在新窗口打开查看

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


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

不理解你的问题,出什么错?具体项目发上来测试。

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


加好友 发短信
等级:三尾狐 帖子:646 积分:4893 威望:0 精华:0 注册:2016/1/16 22:42:00
  发帖心情 Post By:2018/3/23 9:56:00 [只看该作者]

哎,麻烦看下代码有问题没有,特别是Tables("通用分组查询器_TblData").DataSource = bdx(0,0),可不可以这样玩

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


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

Tables("通用分组查询器_TblData").DataSource = bdx(0,0)

 

改成

 

Tables("通用分组查询器_TblData").DataSource = dtx(0,0)

 

如果有问题,做个例子发上来测试。


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


加好友 发短信
等级:三尾狐 帖子:646 积分:4893 威望:0 精华:0 注册:2016/1/16 22:42:00
  发帖心情 Post By:2018/3/23 12:35:00 [只看该作者]

谢谢有点甜老师,正是你指出的那条困扰我一天一夜,终于按我要求搞出查询结果了。另外想问一下老师,这总汇总查询,比如有一列是文本型,也要在查询里占一列,内容也不想让它变化,有办法吗?


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


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

以下是引用小美菜在2018/3/23 12:35:00的发言:
另外想问一下老师,这总汇总查询,比如有一列是文本型,也要在查询里占一列,内容也不想让它变化,有办法吗?
 

 

文本列,作为分组列,其值肯定不会变化;

 

如果不是分组列,作为统计列,那么可以用表达式 max(文本列) 获取值


 回到顶部