以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  通过目录树的条件来做子查询  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=53491)

--  作者:fubblyc
--  发布时间:2014/7/9 10:31:00
--  通过目录树的条件来做子查询

各位老师好,遇到一个基础的问题研究半天没弄会,请教下老师。。


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

想实现,通过目录树选择的条件来做子查询

 

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
        If nd.Level = 0 Then \'注意下面的条件都要用括号括起来
            flt = flt & "( 方案名称 = \'" & nd.Text & "\')"
        Else
            flt = flt & "( 方案名称 = \'" & nd.ParentNode.Text & "\' And 鱼群名称 = \'" & nd.Text & "\')"
        End If
    End If   
Next

 

\'DataTables("汇总分析_VIP回访记录").loadFilter = flt
\'DataTables("汇总分析_VIP回访记录").load


Dim sql As String
sql = "Select 消费日期 As 日期, 归属门店, SUM(实销金额) As VIP销售额, COUNT(DISTINCT VIP卡号) As VIP销售笔数 FROM {VIP消费信息} where VIP电话 in  (select VIP电话 from VIP回访记录 where 方案名称 =  )  GROUP BY  消费日期, 归属门店 "
Tables("汇总分析_到店人数统计").Fill( sql,"VIP数据",True)



--  作者:Bin
--  发布时间:2014/7/9 10:34:00
--  
你的问题是什么?
--  作者:fubblyc
--  发布时间:2014/7/9 10:38:00
--  通过目录树的条件来做子查询

谢谢Bin老师。

Dim sql As String
sql = "Select 消费日期 As 日期, 归属门店, SUM(实销金额) As VIP销售额, COUNT(DISTINCT VIP卡号) As VIP销售笔数 FROM {VIP消费信息} where VIP电话 in  (select VIP电话 from VIP回访记录 where 方案名称 =  ) 【这里想要实现的是查询记录的条件是flt,但是子查询只能是具体的字段条件,而不能像loadfilter = flt 这样写。】GROUP BY  消费日期, 归属门店 "
Tables("汇总分析_到店人数统计").Fill( sql,"VIP数据",True)

[此贴子已经被作者于2014-7-9 10:39:09编辑过]

--  作者:有点甜
--  发布时间:2014/7/9 10:38:00
--  

Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
Dim filter As String = "1=2"
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
        If nd.Level = 0 Then \'注意下面的条件都要用括号括起来
            flt = flt & "( 方案名称 = \'" & nd.Text & "\')"
    filter &= " or 方案名称 = \'" & nd.Text & "\'"
        Else
            flt = flt & "( 方案名称 = \'" & nd.ParentNode.Text & "\' And 鱼群名称 = \'" & nd.Text & "\')"
    filter &= " or 方案名称 = \'" & nd.ParentNode.Text & "\'"
        End If
    End If   
Next

\'DataTables("汇总分析_VIP回访记录").loadFilter = flt
\'DataTables("汇总分析_VIP回访记录").load


Dim sql As String
sql = "Select 消费日期 As 日期, 归属门店, SUM(实销金额) As VIP销售额, COUNT(DISTINCT VIP卡号) As VIP销售笔数 FROM {VIP消费信息} where VIP电话 in  (select VIP电话 from VIP回访记录 where " & filter & " )  GROUP BY  消费日期, 归属门店 "
Tables("汇总分析_到店人数统计").Fill( sql,"VIP数据",True)


--  作者:有点甜
--  发布时间:2014/7/9 10:40:00
--  

4楼是复杂的,这个是简单的

 

Dim trv As WinForm.TreeView = e.Sender
Dim flt As String = "1=2"
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 nd.Level = 0 Then \'注意下面的条件都要用括号括起来
            flt = flt & " or ( 方案名称 = \'" & nd.Text & "\')"
        Else
            flt = flt & " or ( 方案名称 = \'" & nd.ParentNode.Text & "\' And 鱼群名称 = \'" & nd.Text & "\')"
        End If
    End If   
Next

 

\'DataTables("汇总分析_VIP回访记录").loadFilter = flt
\'DataTables("汇总分析_VIP回访记录").load


Dim sql As String
sql = "Select 消费日期 As 日期, 归属门店, SUM(实销金额) As VIP销售额, COUNT(DISTINCT VIP卡号) As VIP销售笔数 FROM {VIP消费信息} where VIP电话 in  (select VIP电话 from VIP回访记录 where " & flt & " )  GROUP BY  消费日期, 归属门店 "
Tables("汇总分析_到店人数统计").Fill( sql,"VIP数据",True)

 


--  作者:fubblyc
--  发布时间:2014/7/9 10:45:00
--  

对,哎,居然可以这样子,我怎么没想到呢!

谢谢甜老师!!

[此贴子已经被作者于2014-7-9 10:53:40编辑过]