Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树中不能直接使用 SQLCommand 生产的表


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

主题:[求助]目录树中不能直接使用 SQLCommand 生产的表

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


加好友 发短信
等级:超级版主 帖子:112401 积分:572273 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/2 13:56:00 [显示全部帖子]

SQL的语法就这样的,如果要使用表名,外层再套一个select

cmd.CommandText = "select * from (原来的sql语句) as a"

另外SQL语句里已经有【where A15是否入库 = 'Y'】这个添加,不可能还会查询出没有Y的数据

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


加好友 发短信
等级:超级版主 帖子:112401 积分:572273 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/2 14:15:00 [显示全部帖子]

表格导部分数据出来测试一下

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


加好友 发短信
等级:超级版主 帖子:112401 积分:572273 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/2 14:37:00 [显示全部帖子]

这个是点击目录树的代码吧。生成目录树的代码发上来看看

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


加好友 发短信
等级:超级版主 帖子:112401 积分:572273 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/2 14:50:00 [显示全部帖子]

调换一下顺序
End If

dt.loadFilter = Filter
dt.Load
tab.DataSource = dt

另外套一层我测试没有问题

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


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


加好友 发短信
等级:超级版主 帖子:112401 积分:572273 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/2 15:29:00 [显示全部帖子]

换种方式,没有必要加载2次

Dim tab As Table = Tables("绩效统计_table4")
'1查询缴库成本表中数据,2并设置目录树的筛选条件,3查询表附加给窗口控件表,4按筛选条件调用查询内容------↓
Dim dt As DataTable
Dim cmd As New SQLCommand
Dim cbh As WinForm.CheckBox = e.Form.Controls("CheckBox2")
cmd.C
cmd.CommandText = "select * from ( Select A04部门代号,A05部门 as 车间, A15是否入库,YEAR(A03生产日期) as 年,MONTH(A03生产日期) as 月,A58简称 as 简称, A07品号,A08品名,A09货品规格, " & _
"SUM(iif(isnull(A49不良),0)) as 不良,SUM(iif(isnull(A48产量),0)) as 产量,SUM(iif(isnull(A50良品),0)) as 良品  from {生产日报} " & _
"where A15是否入库 = 'Y' " & _
"group by A04部门代号,A05部门,A15是否入库,YEAR(A03生产日期),MONTH(A03生产日期),A58简称,A07品号,A08品名,A09货品规格) as xx "


Dim Filter As String
If e.node.Name = "所有数据" Then
    Filter = ""
Else
    Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
    Select Case e.Node.Level
        Case 0
            Filter =" where [年] = " & dr("年")    ' And A15是否入库 = 'Y'"
        Case 1
            Filter =" where [年]=" & dr("年") & " and [月]=" & dr("月") 
    End Select
End If
cmd.CommandText = cmd.CommandText & Filter 
dt = cmd.ExecuteReader()
tab.DataSource = dt

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


加好友 发短信
等级:超级版主 帖子:112401 积分:572273 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/3 9:51:00 [显示全部帖子]

1、生成目录树的时候也加上这个条件
2、SUM(iif(A48产量 is null,0,A48产量)) as 产量 

 回到顶部