Foxtable(狐表)用户栏目专家坐堂 → 增加两日期之间统计数量代码


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

主题:增加两日期之间统计数量代码

帅哥,在线噢!
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/26 7:58:00 [显示全部帖子]

加上给GetUniqueValues和Compute加上日期条件就行啊:

 

Dim khs As List(of String) = DataTables("出口处理").GetUniqueValues("用盘单位 > ''", "用盘单位")
Dim pds As List(of String) = DataTables("出口处理").GetUniqueValues("品种1  > ''", "品种1")
Dim dt1 AS Date = "#02/01/2011" '开始日期
Dim dt2 AS Date = "#12/31/2011" '结束日期
Dim rf As String  = " And 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"

Dim dt AS New DataTableBuilder("处理数量")
dt.AddDef("客户", Gettype(String), 32)
For i As Integer = 2 To 8
    Dim lst As List(of String)  = DataTables("出口处理").GetUniqueValues("品种" & i &  " > ''" & rf , "品种" & i)
    For Each nm AS String In Lst
        If pds.Contains(nm) = False
            pds.Add(nm)
        End If
    Next
Next
For Each pd As String In pds
    dt.AddDef(pd, Gettype(Integer))
Next
dt.Build
Dim tb AS Table = Tables("处理数量")
Dim Sum AS Integer
For Each kh As String In khs
    Dim r As Row = tb.AddNew()
    r("客户")  = kh
    For Each pd As String In pds
        sum = 0
        For i As Integer = 1 To 8
            sum = sum + DataTables("出口处理").Compute("Sum(数量" & i & ")", "品种" & i & " = '" & pd & "' And 用盘单位 = '"  & kh & "'" & rf)
        Next
        r(pd) = sum
    Next
Next
Dim sr As Row = tb.AddNew()
sr("客户") = "合计"
For Each pd As String In pds
    sum = 0
    For Each r AS Row In tb.Rows
        sum = sum + r(pd)
    Next
    sr(pd) = sum
Next

 

[此贴子已经被作者于2011-3-26 8:03:54编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/26 9:53:00 [显示全部帖子]

我手误,漏掉了个#, 应该:
 
Dim dt1 AS Date = #02/01/2011#  '开始日期
Dim dt2 AS Date = #12/31/2011#  '结束日期




 回到顶部
帅哥,在线噢!
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/26 11:38:00 [显示全部帖子]

这是不可能的事情


 回到顶部
帅哥,在线噢!
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/26 14:49:00 [显示全部帖子]

对,用数据说话。

如果你所有的数据都在这两个日期之中,当然得到结果就是所有的数据。


 回到顶部
帅哥,在线噢!
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/26 16:01:00 [显示全部帖子]

我 大概知道你为啥不行了,我的代码是固定两个日期测试的,而你要的却是从窗口输入两个日期。

上次我告诉你要在窗口插入两个日期控件,代码也会从日期控件取值,并给出对应的代码。
现在你已经接触了一段时间,所以
今天我是直接告诉你如何统计指定日期范围,代码用的是两个固定的日期。
你继续从窗口输入起始日期,却不去修改你的代码,当然结果就不对了。

 

如果要从窗口去日期范围,稍微修改代码即可,当我我只是给你加上日期范围,你得保证你原来的代码正确:

 

Dim khs As List(of String) = DataTables("出口处理").GetUniqueValues("用盘单位 > ''", "用盘单位")
Dim pds As List(of String) = DataTables("出口处理").GetUniqueValues("品种1 > ''", "品种1")
Dim dt1 As Date = e.Form.Controls("DateTimePicker1").Value
Dim dt2 As Date = e.Form.Controls("DateTimePicker2").Value

Dim rf As String = " And 日期列名 >= #" & dt1 & "# And 日期列名 <= #" & dt2 & "#"
Dim dt As New DataTableBuilder("处理数量")
dt.AddDef("客户", Gettype(String), 32)
For i As Integer = 2 To 8
    Dim lst As List(of String) = DataTables("出口处理").GetUniqueValues("品种" & i & " > ''" & rf , "品种" & i)
    For Each nm As String In Lst
        If pds.Contains(nm) = False
            pds.Add(nm)
        End If
    Next
Next
For Each pd As String In pds
    dt.AddDef(pd, Gettype(Integer))
Next
dt.Build
Dim tb AS Table = Tables("处理数量")
Dim Sum AS Integer
For Each kh As String In khs
    Dim r As Row = tb.AddNew()
    r("客户") = kh
    For Each pd As String In pds
        sum = 0
        For i As Integer = 1 To 8
            sum = sum + DataTables("出口处理").Compute("Sum(数量" & i & ")", "品种" & i & " = '" & pd & "' And 用盘单位 = '" & kh & "'" & rf)
        Next
        r(pd) = sum
    Next
Next
Dim sr As Row = tb.AddNew()
sr("客户") = "合计"
For Each pd As String In pds
    sum = 0
    For Each r As Row In tb.Rows
        sum = sum + r(pd)
    Next
    sr(pd) = sum
Next

[此贴子已经被作者于2011-3-26 16:03:09编辑过]

 回到顶部