Foxtable(狐表)用户栏目专家坐堂 → MYSQL-如何转


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

主题:MYSQL-如何转

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
MYSQL-如何转  发帖心情 Post By:2023/11/22 12:46:00 [显示全部帖子]

、将窗口的AfterLoad事件设为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

'首先生成统计表
Dim
 dt As DataTable
Dim
 b As New GroupTableBuilder("统计表1",DataTables("窗口_订单"))
b
.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b
.Groups.AddDef("日期",DateGroupEnum.Month,"")
b
.Groups.AddDef("产品")
b
.Totals.AddDef("客户",AggregateEnum.Count,"订单数") '根据客户列来统计记录数,也就是订单数
dt
 = b.Build(True) '参数设置为True,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树

Dim
 trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree(dt"||产品")
trv
.StopRedraw
For
 Each nd As WinForm.TreeNode In trv.AllNodes
    
Dim Year As Integer = nd.DataRow("")
    
Dim Month As Integer = nd.DataRow("")
    
Dim Product As String = nd.DataRow("产品")
    
Select Case nd.Level
        
Case 0
            
nd.Text = nd.text & "(" & dt.Compute("Sum(订单数)"," = " & Year& ")"
        
Case 1
            
nd.Text = nd.text & "(" & dt.Compute("Sum(订单数)"," = " & Year & " And  = " & Month& ")"
        
Case 2
            
nd.Text = nd.text & "(" & nd.DataRow("订单数"& ")"
    
End Select
Next

trv
.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("Sum(订单数)"& "条)",0)
trv
.ResumeRedraw

上面的代码中,请留意第8行代码:

dt = b.Build(True'参数设置为True,生成一个临时表,不在主界面显示

加上参数True后,Build生成的表,不会在主界面显示,当不再有地方引用这个表或这个表中的行和列时,这个表就会被自动销毁,参考不显示生成的表
以本节的例子来说,由于根据这个表生成了目录树,目录树节点的DataRow属性会引用这个表中的行,所以直到关闭窗口,这个表才会被自动销毁。

6、将目录树的NodeMouseDoubleClick事件设为:

Dim Filter As String = ""
If 
e.node.Name <> "显示所有行" Then '要用Name属性,不能用Text属性
    
Dim d1 As Date
    Dim 
d2 As Date
    Dim 
Year As Integer = e.Node.DataRow("")
    Dim 
Month As Integer = e.Node.DataRow("")
    Dim 
Product As String = e.Node.DataRow("产品")
    Select Case 
e.Node.Level
        Case 
0
            
d1 = New Date(Year,1,1'取得该年的第一天
            
d2 = new Date(Year,12,31'取得该年的最后一天
            
Filter = "日期 >= #" & d1 & "# And 日期 <= #" & d2 & "#"
        Case 
1
            
d1 = New Date(YearMonth1'取得该月的第一天
            
d2 = new Date(YearMonthDate.DaysInMonth(Year,Month)) '取得该月的最后一天
            
Filter = "日期 >= #" & d1 & "# And 日期 <= #" & d2 & "#"
        Case 
2
            
d1 = New Date(YearMonth1'取得该月的第一天
            
d2 = new Date(YearMonthDate.DaysInMonth(Year,Month)) '取得该月的最后一天
            
Filter = "日期 >= #" & d1 & "# And 日期 <= #" & d2 & "# And 产品 = '" & Product & "'"
    End Select
End If
Tables(
"订单").Filter = Filter


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/22 14:17:00 [显示全部帖子]


t2.AllowEdit = False 'sqlta


Dim dt As DataTable
Dim trv3 As WinForm.TreeView = e.Form.Controls("TreeView4")
trv.BuildTree(DataTables("窗口_Table1"), "年|月|产品")
trv3.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim Month As Integer = nd.DataRow("月")
    Dim Product As String = nd.DataRow("品名")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "年(" & dt.Compute("Sum(订单数)", "年 = " & Year) & "条)"
        Case 1
            nd.Text = nd.text & "月(" & dt.Compute("Sum(订单数)", "年 = " & Year & " And 月 = " & Month) & "条)"
        Case 2
            nd.Text = nd.text & "(" & nd.DataRow("订单数") & ")"
    End Select
Next
trv3.Nodes.Insert("加载所有行", "加载所有行(" & dt.Compute("Sum(订单数)") & "条)", 0)
trv3.ResumeRedraw

执行报错,年无效,如何解决?
[此贴子已经被作者于2023/11/23 18:00:18编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/22 14:26:00 [显示全部帖子]

t2.Groups.AddDef("采购日期",DateGroupEnum.Year,"年")
t2.Groups.AddDef("采购日期",DateGroupEnum.Month,"")
t2.Groups.AddDef("采购产品")
补上,

报错:Groups不是Table
sql里都没有年月日这种列,当然就不能用的
正确代码如何写?

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/22 22:46:00 [显示全部帖子]

百度

6. YEAR():从日期中提取年份。

7. MONTH():从日期中提取月份。


怎么用?


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/23 16:44:00 [显示全部帖子]

Dim dt As DataTable

Dim Sql-3 = "SELE-CT DISTINCT Year(日期) As 年, Month(日期) As 月, 品名 From 窗口_Table1 "

Dim trv3 As WinForm.TreeView = e.Form.Controls("TreeView4")
trv.BuildTree(DataTables("窗口_Table1"), "年|月|产品")
trv3.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim Month As Integer = nd.DataRow("月")
    Dim Product As String = nd.DataRow("品名")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "年(" & dt.Sq-l3("Sum(订单数)", "年 = " & Year) & "条)"
        Case 1
            nd.Text = nd.text & "月(" & dt.Sq-l3("Sum(订单数)", "年 = " & Year & " And 月 = " & Month) & "条)"
        Case 2
            nd.Text = nd.text & "(" & nd.DataRow("订单数") & ")"
    End Select
Next
trv3.Nodes.Insert("加载所有行", "加载所有行(" & dt.Compute("Sum(订单数)") & "条)", 0)
trv3.ResumeRedraw

报错:nd.Text = nd.text & "年(" & dt.Sq-l3("Sum(订单数)", "年 = " & Year) & "条)"不是DataTable


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/23 17:06:00 [显示全部帖子]

Dim Sq-l2 = "DISTINCT Year(日期) As 年, Month(日期) As 月, 品名 from mysql里的某表

from mysql里的某表" ,是表A和表B合并成临时表,临时表能用吗?

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/23 17:59:00 [显示全部帖子]

Dim db = HySq-l.DataBaseFactory.CreateDatabase("my") 
Dim dt As DataTable
Dim Sql-3 = "SELEC-T DISTINCT Year(日期) As 年, Month(日期) As 月, 品名 From 窗口_Table1"
Dim Sql-3 = "SELEC-T DISTINCT Year(日期) As 年, Month(日期) As 月, 品名 From 表A"

dt = db.ExecuteReader(Sql-3)
dt = db.ExecuteReader()
Dim trv3 As WinForm.TreeView = e.Form.Controls("TreeView4")
trv3.BuildTree(dt, "年|月|品名")


窗口_Table1"临时表,表A正表,二者执行都会报下面错的提示
报错
重载决策失败,因为没有可访问的“ExecuteReader”接受此数目的参数。
[此贴子已经被作者于2023/11/23 18:06:17编辑过]

 回到顶部