Foxtable(狐表)用户栏目专家坐堂 → 可以多选的加载数问题。。。


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

主题:可以多选的加载数问题。。。

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
可以多选的加载数问题。。。  发帖心情 Post By:2014/5/1 16:09:00 [只看该作者]

lsy老师,今天没休息啊。。。

我在做多选的加载树,出现了第四张图的问题。。。消费门店 变成 Year(日期)了。而且在选完年份后,没有自动清除消费门店的勾选。选月份后是可以自动清除消费门店的勾选的。

 

 


此主题相关图片如下:单选门店.png
按此在新窗口浏览图片

 


此主题相关图片如下:选月份.png
按此在新窗口浏览图片

 



此主题相关图片如下:选年份.png
按此在新窗口浏览图片

 


此主题相关图片如下:选门店之后,直接选年份,就错了。。.png
按此在新窗口浏览图片

我的代码如下:

 

Forms("等待窗口").open()
Application.DoEvents

Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
For Each nd As WinForm.TreeNode In e.node.Nodes '清除子节点选中状态
    nd.Checked = False
Next
If e.node.ParentNode IsNot Nothing Then '去掉父节点选中状态
    e.node.ParentNode.Checked = False
End If
For Each nd As WinForm.TreeNode In trv.AllNodes
      If nd.Checked Then
        If flt > "" Then
            flt = flt & " Or " '注意用or而不是And
        End If
       Select Case e.Node.Level
            Case 0
                flt = "(" & flt & "( Year(日期)  = '" & nd.Text & "')" & ")"
            Case 1
                flt = "(" & flt & "( Year(日期)  = '" & nd.ParentNode.Text & "' And Month(日期) = '" & nd.Text & "')" & ")"
            Case 2
                flt = "(" & flt & "( Year(日期)  = '" & nd.ParentNode.ParentNode.Text & "' And Month(日期) = '" & nd.ParentNode.Text & "' and 消费门店 = '" & nd.Text & " ')" & ")"

        End Select
       End If   
Next
If flt = "" Then
   flt = "消费门店 Is Null"
End If
MessageBox.Show("您的查询条件是:" & flt)

 


Dim rgd As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")
rgd.Table = Nothing '指定绑定表

Dim sql As String
Dim filter As String = flt
sql = "select  * from ( Select 消费日期 As 日期, {rjsytVIP消费信息}.消费门店 ,  SUM(实销金额) As VIP销售额, COUNT(DISTINCT VIP卡号) As VIP销售笔数,SUM(数量) As VIP销售件数, 门店登录账号, 销售主管登录账号 ,客服主管登录账号 ,IT主管登录账号 ,营销总监登录账号 , 总经理登录账号 FROM "
sql+ = "(rjsyt管理层名单 RIGHT JOIN  rjsytVIP消费信息 ON {rjsyt管理层名单}.消费门店 = {rjsytVIP消费信息}.消费门店 ) GROUP BY 消费日期, {rjsytVIP消费信息}.消费门店, 门店登录账号 ,销售主管登录账号,客服主管登录账号,IT主管登录账号,营销总监登录账号,总经理登录账号 )  As a  where "     &  Filter   & IIF( Filter>"", " and  "," " )   &    " (门店登录账号='" & User.name & "'"  & " Or 销售主管登录账号='" & User.name & "'"   & " Or 客服主管登录账号='" & User.name & "'"  & " Or IT主管登录账号='" & User.name & "'"   & " Or 营销总监登录账号='" & User.name & "'"    &   " Or 总经理登录账号='" & User.name & "')"
'MessageBox.Show(sql)
Tables("VIP月经营门店对比_VIP月经营门店对比").Fill(sql,"VIP数据", True)


Dim g As New GroupTableBuilder("统计表2",Tables("VIP月经营门店对比_VIP月经营门店对比").DataTable)
g.Groups.AddDef("日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("日期",DateGroupEnum.Month , "月")
g.Groups.AddDef("消费门店")
g.Totals.AddDef("VIP销售额", "" ,"VIP销售额_值")
g.Totals.AddDef("VIP销售笔数", "" ,"VIP销售笔数_值")
g.Totals.AddDef("VIP销售件数", "" ,"VIP销售件数_值")
g.SamePeriodGrowth = True
g.CircleGrowth = True
g.GrandProportion = True
Tables("VIP月经营门店对比_VIP月经营门店对比").DataSource = g.BuildDataSource()

Tables("VIP月经营门店对比_VIP月经营门店对比").DataTable.DataCols.Add("VIP客单价", Gettype(Double), "VIP销售额 / VIP销售笔数")
Tables("VIP月经营门店对比_VIP月经营门店对比").DataTable.DataCols.Add("VIP物单价", Gettype(Double), "VIP销售额 / VIP销售件数")
Tables("VIP月经营门店对比_VIP月经营门店对比").DataTable.DataCols.Add("VIP连带率", Gettype(Double), "VIP销售件数 / VIP销售笔数")

 

Forms("等待窗口").close()

[此贴子已经被作者于2014-5-1 16:11:18编辑过]

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/5/1 16:33:00 [只看该作者]

发个简单的例子,包括目录树和相关的表。

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/5/1 16:40:00 [只看该作者]

初步判断是这一段:

If e.node.ParentNode IsNot Nothing Then '去掉父节点选中状态
    e.node.ParentNode.Checked = False
End If

 

没有穷尽父节点。


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/5/1 16:44:00 [只看该作者]


 

[此贴子已经被作者于2014-5-1 16:51:29编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/5/1 16:50:00 [只看该作者]

对的,应该是。

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/5/1 17:16:00 [只看该作者]

因楼主要求,为了楼主数据安全,删除实例。

代码由楼主贴在下面。

[此贴子已经被作者于2014-5-1 17:27:54编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/5/1 17:21:00 [只看该作者]

哈,谢谢lsy老师!!lsy老师,麻烦你帮我把那个例子删掉。。。

 

贴出代码,供有需要的人参考:

 

 

VIP月经营门店对比_TreeView1_AfterCheckNode

 

Forms("等待窗口").open()

Application.DoEvents

Dim s As String = "Year(日期)|Month(日期)|消费门店"

Dim Colstr() As String

Dim trv As WinForm.TreeView = e.Sender

Dim flt As String

Dim nd As WinForm.TreeNode

Dim pd As WinForm.TreeNode

Dim notchecked As Integer

Dim t As Table

Colstr = s.Split("|")

For Each nd In e.node.allNodes

    nd.Checked = False

Next

pd = e.Node.ParentNode

Do While pd IsNot Nothing

    pd.Checked = False

    pd = pd.ParentNode

Loop

For Each nd In trv.AllNodes

    If nd.Checked  Then

        Dim rts() As String = nd.FullName.Split("\")

        Dim vals As String = ""

        For i As Integer = 0 To rts.length - 1

            If vals > "" Then

                vals = vals & " And "

                vals = vals & Colstr(i) & " = '" & rts(i) & "'"

            Else

                vals = vals & Colstr(i) & " = '" & rts(i) & "'"

            End If

        Next

        If flt > "" Then

            flt = flt & " Or (" & vals & ")"

        Else

            flt = vals

        End If

        notchecked + = 1

    End If

Next

'MessageBox.Show("您的查询条件是:" & flt)

 

Dim rgd As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")

rgd.Table = Nothing '指定绑定表

 

Dim sql As String

Dim filter As String = flt

sql = "select  * from ( Select 消费日期 As 日期, {rjsytVIP消费信息}.消费门店 ,  SUM(实销金额) As VIP销售额, COUNT(DISTINCT VIP卡号) As VIP销售笔数,SUM(数量) As VIP销售件数, 门店登录账号, 销售主管登录账号 ,客服主管登录账号 ,IT主管登录账号 ,营销总监登录账号 , 总经理登录账号 FROM "

sql+ = "(rjsyt管理层名单 RIGHT JOIN  rjsytVIP消费信息 ON {rjsyt管理层名单}.消费门店 = {rjsytVIP消费信息}.消费门店 ) GROUP BY 消费日期, {rjsytVIP消费信息}.消费门店, 门店登录账号 ,销售主管登录账号,客服主管登录账号,IT主管登录账号,营销总监登录账号,总经理登录账号 )  As a  where "     &  Filter   & IIF( Filter>"", " and  "," " )   &    " (门店登录账号='" & User.name & "'"  & " Or 销售主管登录账号='" & User.name & "'"   & " Or 客服主管登录账号='" & User.name & "'"  & " Or IT主管登录账号='" & User.name & "'"   & " Or 营销总监登录账号='" & User.name & "'"    &   " Or 总经理登录账号='" & User.name & "')"

'MessageBox.Show(sql)

'DataTables("VIP月经营门店对比_VIP月经营门店对比").SQLLoad(sql)

Tables("VIP月经营门店对比_VIP月经营门店对比").Fill(sql,"VIP数据", True)

 

 

Dim g As New GroupTableBuilder("统计表2",Tables("VIP月经营门店对比_VIP月经营门店对比").DataTable)

g.Groups.AddDef("日期", DateGroupEnum.Year, "年")

g.Groups.AddDef("日期",DateGroupEnum.Month , "月")

g.Groups.AddDef("消费门店")

g.Totals.AddDef("VIP销售额", "" ,"VIP销售额_值")

g.Totals.AddDef("VIP销售笔数", "" ,"VIP销售笔数_值")

g.Totals.AddDef("VIP销售件数", "" ,"VIP销售件数_值")

g.SamePeriodGrowth = True

g.CircleGrowth = True

g.GrandProportion = True

Tables("VIP月经营门店对比_VIP月经营门店对比").DataSource = g.BuildDataSource()

 

Tables("VIP月经营门店对比_VIP月经营门店对比").DataTable.DataCols.Add("VIP客单价", Gettype(Double), "VIP销售额 / VIP销售笔数")

Tables("VIP月经营门店对比_VIP月经营门店对比").DataTable.DataCols.Add("VIP物单价", Gettype(Double), "VIP销售额 / VIP销售件数")

Tables("VIP月经营门店对比_VIP月经营门店对比").DataTable.DataCols.Add("VIP连带率", Gettype(Double), "VIP销售件数 / VIP销售笔数")

 

Tables("VIP月经营门店对比_VIP月经营门店对比").Cols("VIP销售额").GrandTotal = True '指定要合计的列

'Tables("VIP月经营门店对比_VIP月经营门店对比").Cols("门店整体销售额").GrandTotal = True '指定要合计的列

Tables("VIP月经营门店对比_VIP月经营门店对比").Cols("VIP销售笔数").GrandTotal = True '指定要合计的列

Tables("VIP月经营门店对比_VIP月经营门店对比").Cols("VIP销售件数").GrandTotal = True '指定要合计的列

Tables("VIP月经营门店对比_VIP月经营门店对比").GrandTotal = True '显示合计模式

 

rgd.Table = Tables("VIP月经营门店对比_VIP月经营门店对比")

rgd.Build

 

Forms("等待窗口").close()

[此贴子已经被作者于2014-5-1 17:24:51编辑过]

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/5/1 17:27:00 [只看该作者]

好,楼主这样不错,既保证数据安全,又有分享精神。


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/5/1 17:36:00 [只看该作者]

lsy老师才真不错呢!!!技术实力强,又乐于助人。我也要开始看看论坛里的问题,有我可以解决的我也试着解决一下!

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/5/1 17:52:00 [只看该作者]

For Each nd In trv.AllNodes
    If nd.Checked  Then
        Dim rts() As String = nd.FullName.Split("\")
        Dim vals As String = ""
        For i As Integer = 0 To rts.length - 1
            If vals > "" Then
                vals =  vals & " And "
                vals =  vals & Colstr(i) & " = '" & rts(i) & "'"
            Else
                vals =  vals & Colstr(i) & " = '" & rts(i) & "'"
            End If
        Next
        If flt > "" Then
            flt = "(" & flt & " Or (" & vals & ")" & ")"
        Else
            flt = "(" & vals & ")"
        End If
        notchecked + = 1
    End If
Next

 

这一段我这样改了下。有用到的人到时候可以参考,我也是弄了好久才做出来的。


 回到顶部