以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口的SQLQuery表能不能加进去加载树?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=45506)

--  作者:fubblyc
--  发布时间:2014/1/28 9:05:00
--  窗口的SQLQuery表能不能加进去加载树?
请问各位老师:

窗口的SQLQuery表能不能加进去加载树?

下面是帮助的文档,不过是针对内部表的。那外部查询表呢?能否也实现?


2、然后新建一个窗口,窗口中插入一个目录树(TreeView),窗口的AfterLod事件代码设为:

Dim cmd As New SQLCommand
Dim
dt As DataTable
cmd
.CommandText = "SELECT DISTINCT 产品,客户 From {订单}"
dt
= cmd.ExecuteReader()
Dim
trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree(dt,"产品|客户")
trv
.Nodes.Insert("加载所有数据",0)


3、最后将目录树的NodeMouseDoubleClick事件设为:

Dim Filter As String
If
e.Node.Text = "加载所有数据" Then
Filter = ""
Else
Dim
Value() As String
Value = e.Node.FullPath.Split("\\")
Select
Case e.Node.Level
Case
0
Filter ="[产品] = \'" & Value(0) & "\'"
Case 1
Filter ="[产品] = \'" & Value(0) & "\' And [客户] = \'" & Value(1) & "\'"
End Select
End
If
DataTables
("订单").LoadFilter = Filter
DataTables
("订单").Load()

这样我们只需双击某个节点,既可动态加载对应的订单


--  作者:有点甜
--  发布时间:2014/1/28 19:32:00
--  
 外部表也一样的哦亲,只需要指定数据源的名称就行了。


--  作者:fubblyc
--  发布时间:2014/1/28 20:45:00
--  
谢谢有点甜老师,可以了!!!
--  作者:fubblyc
--  发布时间:2014/2/17 21:00:00
--  
有点甜老师 

我的这个表是一个用select语句写出来的窗口的SQLQuery表,select语句如下:

SELECT VIP消费信息.购买日期 AS "日期", VIP消费信息.门市专柜编号 AS "门市专柜编号", VIP消费信息.门市专柜简称 AS "门市专柜简称", SUM(VIP消费信息.实收金额) AS "VIP销售额", 门店整体销售额.门店整体销售额 AS "门店整体销售额" ,SUM(VIP消费信息.实收金额)/门店整体销售额.门店整体销售额 AS "VIP销售占比",COUNT(DISTINCT VIP消费信息.VIP卡号) AS "VIP销售笔数",SUM(VIP消费信息.数量) AS "VIP销售件数", SUM(VIP消费信息.实收金额)/COUNT(DISTINCT VIP消费信息.VIP卡号) AS "VIP客单价", SUM(VIP消费信息.实收金额)/SUM(VIP消费信息.数量) AS "VIP物单价", SUM(VIP消费信息.实收金额)/COUNT(DISTINCT VIP消费信息.VIP卡号)/SUM(VIP消费信息.实收金额)/SUM(VIP消费信息.数量) AS "VIP连带率"
FROM (dbo.VIP消费信息 AS VIP消费信息
     INNER JOIN dbo.门店整体销售额 AS 门店整体销售额 ON (VIP消费信息.购买日期 = 门店整体销售额.购买日期 and VIP消费信息.门市专柜编号 = 门店整体销售额.门市专柜编号 ))
GROUP BY VIP消费信息.购买日期, VIP消费信息.门市专柜编号, VIP消费信息.门市专柜简称, 门店整体销售额.门店整体销售额

我想在这个表的旁边加一个  加载树,照着帮助了,窗口的After Load 代码如下:
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT Year(日期) As 年, Month(日期) As 月, 门市专柜编号 From {经营成果分析_经营成果分析}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "年|月|门市专柜编号")

也设置了目录树的代码:
Dim Value()As String
Dim Filter As String
Value = e.Node.FullPath.Split("\\")
Select Case e.Node.Level
    Case 0
        Filter ="Year(日期) = " & Value(0)
    Case 1
        Filter ="Year(日期) = " & Value(0) & " And Month(日期) = " & Value(1)
    Case 2
        Filter ="Year(日期) = " & Value(0) & " And Month(日期) = " & Value(1) & " And 门市专柜编号 = \'" & Value(2) & "\'"
    End Select
DataTables("经营成果分析_经营成果分析").LoadFilter = Filter
DataTables("经营成果分析_经营成果分析").Load()

应用窗口时显示:
对象名 \'经营成果分析_经营成果分析\' 无效。
错误代码位置:窗口,经营成果分析,After Load

是什么情况呢?
cmd.CommandText = "SELECT DISTINCT Year(日期) As 年, Month(日期) As 月, 门市专柜编号 From {经营成果分析_经营成果分析}"

表名不是这样写吗?

[此贴子已经被作者于2014-2-17 21:00:39编辑过]

--  作者:有点甜
--  发布时间:2014/2/17 21:14:00
--  
呃……表名应该这样写

e.form.controls("Table1").Table.Datatable.Load()
或者
Tabels("窗口名_Table1").Datatable.Load()

--  作者:fubblyc
--  发布时间:2014/2/17 21:22:00
--  
哎,我还是上传例子上来给您看下。。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学习案例.rar



--  作者:有点甜
--  发布时间:2014/2/17 22:06:00
--  
不能直接引用查询表执行加载数据操作的。

afterload代码

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT Year(日期) As 年, Month(日期) As 月, 门市专柜编号 from (Select VIP消费信息.购买日期 As 日期, VIP消费信息.门市专柜编号 As 门市专柜编号, VIP消费信息.门市专柜简称 As 门市专柜简称, SUM(VIP消费信息.实收金额) As VIP销售额, 门店整体销售额.门店整体销售额 As 门店整体销售额 ,SUM(VIP消费信息.实收金额)/门店整体销售额.门店整体销售额 As VIP销售占比,COUNT(DISTINCT VIP消费信息.VIP卡号) As VIP销售笔数,SUM(VIP消费信息.数量) As VIP销售件数, SUM(VIP消费信息.实收金额)/COUNT(DISTINCT VIP消费信息.VIP卡号) As VIP客单价, SUM(VIP消费信息.实收金额)/SUM(VIP消费信息.数量) As VIP物单价, SUM(VIP消费信息.实收金额)/COUNT(DISTINCT VIP消费信息.VIP卡号)/SUM(VIP消费信息.实收金额)/SUM(VIP消费信息.数量) As VIP连带率" _
& " FROM (dbo.VIP消费信息 As VIP消费信息" _
& " INNER JOIN dbo.门店整体销售额 As 门店整体销售额 ON (VIP消费信息.购买日期 = 门店整体销售额.购买日期 And VIP消费信息.门市专柜编号 = 门店整体销售额.门市专柜编号 ))" _
& " GROUP BY VIP消费信息.购买日期, VIP消费信息.门市专柜编号, VIP消费信息.门市专柜简称, 门店整体销售额.门店整体销售额) as temp"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "年|月|门市专柜编号")


双击代码

Dim Value()As String
Dim Filter As String
Value = e.Node.FullPath.Split("\\")
Select Case e.Node.Level
    Case 0
        Filter ="Year(日期) = " & Value(0)
    Case 1
        Filter ="Year(日期) = " & Value(0) & " And Month(日期) = " & Value(1)
    Case 2
        Filter ="Year(日期) = " & Value(0) & " And Month(日期) = " & Value(1) & " And 门市专柜编号 = \'" & Value(2) & "\'"
End Select
Tables("门店成果分析_经营成果分析").Fill("select * from (Select VIP消费信息.购买日期 As 日期, VIP消费信息.门市专柜编号 As 门市专柜编号, VIP消费信息.门市专柜简称 As 门市专柜简称, SUM(VIP消费信息.实收金额) As VIP销售额, 门店整体销售额.门店整体销售额 As 门店整体销售额 ,SUM(VIP消费信息.实收金额)/门店整体销售额.门店整体销售额 As VIP销售占比,COUNT(DISTINCT VIP消费信息.VIP卡号) As VIP销售笔数,SUM(VIP消费信息.数量) As VIP销售件数, SUM(VIP消费信息.实收金额)/COUNT(DISTINCT VIP消费信息.VIP卡号) As VIP客单价, SUM(VIP消费信息.实收金额)/SUM(VIP消费信息.数量) As VIP物单价, SUM(VIP消费信息.实收金额)/COUNT(DISTINCT VIP消费信息.VIP卡号)/SUM(VIP消费信息.实收金额)/SUM(VIP消费信息.数量) As VIP连带率" _
& " FROM (dbo.VIP消费信息 As VIP消费信息" _
& " INNER JOIN dbo.门店整体销售额 As 门店整体销售额 ON (VIP消费信息.购买日期 = 门店整体销售额.购买日期 And VIP消费信息.门市专柜编号 = 门店整体销售额.门市专柜编号 ))" _
& " GROUP BY VIP消费信息.购买日期, VIP消费信息.门市专柜编号, VIP消费信息.门市专柜简称, 门店整体销售额.门店整体销售额) as temp where " & filter, "VIP数据", True)

--  作者:fubblyc
--  发布时间:2014/2/17 22:41:00
--  
谢谢有点甜老师,你可以给我那个例子吗?我在你写的那个例子看下。
我复制这些代码还是出错。
说:
afterload代码

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C

不是cmd的成员......

--  作者:有点甜
--  发布时间:2014/2/17 22:49:00
--  
 呃,楼主,请灵活变通下,cmd.C你原本怎么写,现在就怎么写connectionName
--  作者:有点酸
--  发布时间:2014/2/17 22:53:00
--  

甜兄,下次记得加个空格:

 

cmd.connection name = "数据源"

 

这样就不会被这个论坛屏蔽了。