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


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

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

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


加好友 发短信
等级:一尾狐 帖子:494 积分:4632 威望:0 精华:0 注册:2014/3/4 21:20:00
[求助]目录树中不能直接使用 SQLCommand 生产的表  发帖心情 Post By:2020/9/2 13:41:00 [显示全部帖子]

目录树里的事件代码,
为什么 dt 表生成以后。不能按 dt 条件过滤。
年,月 不能直接使用 dt 中的 别名 年,月。而必须使用原表中的字段。目录树事件中 必须把A15是否入库 = 'Y' 加入,不然没有Y的也过滤出来了。


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.ConnectionName = con_name
cmd.CommandText = "Se lect A04部门代号,A05部门 车间, A15是否入库,YEAR(A03生产日期) as 年,MONTH(A03生产日期) as 月,A58简称 简称, A07品号,A08品名,A09货品规格, " & _
"SUM(isnull(A49不良,0)) 不良,SUM(isnull(A48产量,0)) 产量,SUM(isnull(A50良品,0)) 良品  from 生产日报 " & _
"where A15是否入库 = 'Y' " & _
"group by A04部门代号,A05部门,A15是否入库,YEAR(A03生产日期),MONTH(A03生产日期),A58简称,A07品号,A08品名,A09货品规格 "
dt = cmd.ExecuteReader()
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 ="YEAR(A03生产日期)  = '" & dr("年") & "' AND A15是否入库 = 'Y'"
        Case 1
            Filter ="YEAR(A03生产日期)  = '" & dr("年") & "' And MONTH(A03生产日期) = '" & dr("月") & "' AND A15是否入库 = 'Y'"
    End Select
End If
tab.DataSource = dt
dt.loadFilter = Filter
dt.Load

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


加好友 发短信
等级:一尾狐 帖子:494 积分:4632 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/9/2 14:09:00 [显示全部帖子]

之前已经测试了,外层我套了一个。还是和没套一样的效果
where A15是否入库 = 'Y'  确实没有在dt 中生效

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


加好友 发短信
等级:一尾狐 帖子:494 积分:4632 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/9/2 14:21:00 [显示全部帖子]

SQL 外套后,列名无效。

图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:一尾狐 帖子:494 积分:4632 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/9/2 15:02:00 [显示全部帖子]

看  日报不良  那个页签下的。多谢。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树sqlcommand.rar


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


加好友 发短信
等级:一尾狐 帖子:494 积分:4632 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/9/3 9:17:00 [显示全部帖子]

蓝版这个方法好,图片点击可在新窗口打开查看图片点击可在新窗口打开查看
还有疑问。
1.这里问题的原理是什么:年,月 不能直接使用 dt 中的 别名 年,月。而必须使用原表中的字段。目录树事件中 必须把A15是否入库 = 'Y' 加入,不然没有Y的也过滤出来了。
2.SUM(iif(isnull(A48产量),0)) as 产量  这样子写为什么是没有值。换成 sum(A48产量) as 产量。就有值了。。
3.在MS SQL中求和中不能有NULL 值的。在ACCESS 好像是可以有NULL的吗?


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


加好友 发短信
等级:一尾狐 帖子:494 积分:4632 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/9/3 15:16:00 [显示全部帖子]

这个 iif 的语法是错的吧。在SQL中调用access里数据时。

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


加好友 发短信
等级:一尾狐 帖子:494 积分:4632 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/9/3 15:23:00 [显示全部帖子]

调试好了。这样写,就OK了
SUM(iif(isnull(A48产量),0,A48产量)) as 产量 

 回到顶部