以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sQL直接统计库龄  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128928)

--  作者:weibu
--  发布时间:2018/12/18 15:18:00
--  sQL直接统计库龄
老师我用的SQL数据库,狐表里面统计表名称为“溯源码”,其中字段【入库日期】为Date日期型,格式:2018-12-11;以下代码正确吗?
Dim dr As DataRow = DataTables("用户信息").find("用户名 = \'" & 用户名 & "\'")  \'找到当前登录者所在的行
Dim filter As String = "1=2"
If dr("职位") = "管理者" Then
    Dim drs = DataTables("部门信息").Select("层级 like \'" & dr("层级") & "%\'")
    For Each cdr As DataRow In drs
        Filter &= " or 出库部门 = \'" & cdr("所属部门") & "\'" 
    Next
    Else If dr("职位") = "职员" Then
    Filter = "出库部门 = \'" & dr("所属部门") & "\'" 

End If
Dim g As New SQLGroupTableBuilder("库龄分析", "dbo.溯源码") ‘老师这个表的名称应该写狐表里面的名称,还SQL库中的名称,需要带dbo吗?
g.Groups.AddDef("商品名称")
g.Groups.AddDef("商品条码")
g.Totals.AddDef("入库日期",AggregateEnum.Min,"最大库龄")
g.Totals.AddDef("入库日期",AggregateEnum.Average,"平均库龄")
g.Totals.AddExp("1-30天","iif(入库日期 >= Date.Today.AddDays(-30),1,0)")
g.Totals.AddExp("30-60","iif(入库日期 >= Date.Today.AddDays(-60) And 入库日期 < Date.Today.AddDays(-30),,1,0)")  ’这段代码能否这么写
g.Filter = filter
g.Build()
MainTable = Tables("库龄分析")

--  作者:有点甜
--  发布时间:2018/12/18 16:11:00
--  

1、
 
Dim g As New SQLGroupTableBuilder("库龄分析", "溯源码")
 
2、

g.Totals.AddExp("1-30天","case when 入库日期>=\'" & Date.Today.AddDays(-30) & "\' then 1 else 0 end")


--  作者:weibu
--  发布时间:2018/12/18 16:53:00
--  
老师提示SQL统计语句错误
--  作者:有点甜
--  发布时间:2018/12/18 17:06:00
--  
以下是引用weibu在2018/12/18 16:53:00的发言:
老师提示SQL统计语句错误

 

贴出所写代码。


--  作者:weibu
--  发布时间:2018/12/18 17:16:00
--  
Dim dr As DataRow = DataTables("用户信息").find("用户名 = \'" & 用户名 & "\'")  \'找到当前登录者所在的行
Dim filter As String = "1=2"
If dr("职位") = "管理者" Then
    Dim drs = DataTables("部门信息").Select("层级 like \'" & dr("层级") & "%\'")
    For Each cdr As DataRow In drs
        Filter &= " or 当前所在部门 = \'" & cdr("所属部门") & "\'And 是否可用 = 1" 
    Next
    Else If dr("职位") = "职员" Then
    Filter = "当前所在部门 = \'" & dr("所属部门") & "\'And 是否可用 = 1" 

End If
Dim g As New SQLGroupTableBuilder("库龄分析", "溯源码")
g.Groups.AddDef("商品名称")
g.Groups.AddDef("商品条码")
g.Totals.AddDef("入库日期",AggregateEnum.Min,"最大库龄")
g.Totals.AddDef("入库日期",AggregateEnum.Average,"平均库龄")
g.Totals.AddExp("1-30天","case when 入库日期>=\'" & Date.Today.AddDays(-30) & "\' then 1 else 0 end")
g.Totals.AddExp("30-60天","case when 入库日期>=\'" & Date.Today.AddDays(-60) & "\' and 入库日期<\'" & Date.Today.AddDays(-30) & "\' then 1 else 0 end")
g.Filter = filter
g.Build()
MainTable = Tables("库龄分析")

--  作者:有点甜
--  发布时间:2018/12/18 18:00:00
--  

1、

 

Dim g As New SQLGroupTableBuilder("库龄分析", "溯源码")
g.ConnectionName = "数据源名"

 

2、删减你的代码,定位看哪句代码开始有问题


--  作者:weibu
--  发布时间:2018/12/19 9:24:00
--  
老师找到错误代码了,日期没有平均值。感谢