以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何按时间段统计?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51038)

--  作者:syzsyk
--  发布时间:2014/5/18 1:11:00
--  [求助]如何按时间段统计?

 

DataTables("动物产地检疫工作情况日汇总表").DataRows.Clear()
Dim vals As List(Of String) = DataTables("动物产地检疫工作记录").GetValues("申报单编号","申报单编号 Is Not Null And 基本情况_检疫时间 >= \'" & Date.Today & " 00:00:00\' and 基本情况_检疫时间  < \'" & Date.Today & " 23:59:59\'")
For Each val As String In vals
    Dim ndr As DataRow = DataTables("动物产地检疫工作情况日汇总表").AddNew()
    ndr("申报单编号") = val
    Dim cdjl As DataRow = DataTables("动物产地检疫工作记录").Find("申报单编号 = \'"& val & "\' and 基本情况_检疫时间 >= \'" & Date.Today & " 00:00:00\' and 基本情况_检疫时间  < \'" & Date.Today & " 23:59:59\'")
    If cdjl IsNot Nothing Then
        ndr("货主") = cdjl("基本情况_货主姓名")
        ndr("动物种类") = cdjl("基本情况_动物种类")
        ndr("检疫数量") = cdjl("基本情况_数量")
        ndr("检疫地点") = cdjl("基本情况_检疫地点")
        ndr("合格数") = cdjl("检疫结果处理_合格数")
        ndr("《动物检疫合格证明》编号") = cdjl("检疫结果处理_出具动物检疫合格证明编号")
        ndr("不合格数") = cdjl("检疫结果处理_检疫不合格_法定检疫对象_数量")+cdjl("检疫结果处理_检疫不合格_其它_数量")
        ndr("《检疫处理通知单》编号") = cdjl("检疫结果处理_检疫不合格_出具检疫处理通知单编号")
        ndr("目的地") = cdjl("基本情况_到达地点")
        ndr("运载工具牌号") = cdjl("基本情况_运载工具牌号")
        ndr("官方兽医姓名") = cdjl("官方兽医姓名")
        ndr("备注") = cdjl("备注")
    End If
Next
Dim hjdr As DataRow = DataTables("动物产地检疫工作情况日汇总表").AddNew
hjdr("货主") = "合计:" & DataTables("动物产地检疫工作情况日汇总表").GetValues("货主","货主 Is Not Null And 货主 <> \'合计\'").Count
hjdr("申报单编号") = DataTables("动物产地检疫工作情况日汇总表").GetValues("申报单编号","申报单编号 Is Not Null And 货主 <> \'合计\'").Count
hjdr("动物种类") = DataTables("动物产地检疫工作情况日汇总表").GetValues("动物种类","动物种类 Is Not Null And 货主 <> \'合计\'").Count
hjdr("检疫数量") = DataTables("动物产地检疫工作情况日汇总表").Compute("Sum(检疫数量)","货主 <> \'合计\'")
hjdr("检疫地点") = DataTables("动物产地检疫工作情况日汇总表").GetValues("检疫地点","检疫地点 Is Not Null And 货主 <> \'合计\'").Count
hjdr("合格数") = DataTables("动物产地检疫工作情况日汇总表").Compute("Sum(合格数)","货主 <> \'合计\'")
hjdr("《动物检疫合格证明》编号") = DataTables("动物产地检疫工作情况日汇总表").GetValues("《动物检疫合格证明》编号","《动物检疫合格证明》编号 Is Not Null And 货主 <> \'合计\'").Count
hjdr("不合格数") = DataTables("动物产地检疫工作情况日汇总表").Compute("Sum(不合格数)","货主 <> \'合计\'")
hjdr("《检疫处理通知单》编号") = DataTables("动物产地检疫工作情况日汇总表").GetValues("《检疫处理通知单》编号","《检疫处理通知单》编号 Is Not Null And 货主 <> \'合计\'").Count
hjdr("目的地") = DataTables("动物产地检疫工作情况日汇总表").GetValues("目的地","目的地 Is Not Null And 货主 <> \'合计\'").Count
hjdr("运载工具牌号") = DataTables("动物产地检疫工作情况日汇总表").GetValues("运载工具牌号","运载工具牌号 Is Not Null And 货主 <> \'合计\'").Count
hjdr("官方兽医姓名") = DataTables("动物产地检疫工作情况日汇总表").GetValues("官方兽医姓名","官方兽医姓名 Is Not Null And 货主 <> \'合计\'").Count
MainTable = Tables("动物产地检疫工作情况日汇总表")

 

这个是统计当天的数据,红色部分代码如何改写可实现按指定的时间段统计?


--  作者:逛逛
--  发布时间:2014/5/18 8:52:00
--  

增加1个  DateTimePicker 名为 开始日期

增加1个  DateTimePicker 名为 结束日期

 

时间格式设置为 Date

 

Dim vals As List(Of String) = DataTables("动物产地检疫工作记录").GetValues("申报单编号","申报单编号 Is Not Null And 基本情况_检疫时间 >= \'" & 开始日期.value & " 00:00:00\' and 基本情况_检疫时间  < \'" & 结束日期.value  & " 23:59:59\'")
For Each val As String In vals
    Dim ndr As DataRow = DataTables("动物产地检疫工作情况日汇总表").AddNew()
    ndr("申报单编号") = val
    Dim cdjl As DataRow = DataTables("动物产地检疫工作记录").Find("申报单编号 = \'"& val & "\' and 基本情况_检疫时间 >= \'" & 开始日期.value  & " 00:00:00\' and 基本情况_检疫时间  < \'" &  结束日期.value  & " 23:59:59\'")


--  作者:有点甜
--  发布时间:2014/5/18 9:06:00
--  

  没必要搞得太复杂

 

Dim vals As List(Of String) = DataTables("动物产地检疫工作记录").GetValues("申报单编号","申报单编号 Is Not Null And 基本情况_检疫时间 >= \'" & 开始日期.value & "\' and 基本情况_检疫时间  < \'" & 结束日期.value.AddDays(1)  & "\'")
For Each val As String In vals
    Dim ndr As DataRow = DataTables("动物产地检疫工作情况日汇总表").AddNew()
    ndr("申报单编号") = val
    Dim cdjl As DataRow = DataTables("动物产地检疫工作记录").Find("申报单编号 = \'"& val & "\' and 基本情况_检疫时间 >= \'" & 开始日期.value  & "\' and 基本情况_检疫时间  < \'" &  结束日期.value.AddDays(1)  & "\'")


--  作者:syzsyk
--  发布时间:2014/5/18 15:22:00
--  

谢谢逛逛、有点甜帮助!

还有个问题,想实现当开始日期和结束日期没有选择时,提示选择开始日期或结束日期,加了如下代码:

 

If e.Form.Controls("开始日期").value Is Nothing AndAlso e.Form.Controls("结束日期").value Is Nothing Then
MessageBox.Show("请您一定选择开始日期和结束日期!", "提示")
Else

.....

.....

如果只选择开始日期或结束日期,另一个不选,运行时显示如下错误,哪里有问题?:

 

 

 

 


图片点击可在新窗口打开查看此主题相关图片如下:t3.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-5-18 15:22:43编辑过]

--  作者:有点甜
--  发布时间:2014/5/18 15:30:00
--  

判断一下

 

 

Dim filter As String = ""
If 开始日期.value IsNot Nothing Then
    filter = " And 基本情况_检疫时间 >= \'" & 开始日期.value & "\'"
End If
If 结束日期.value IsNot Nothing Then
    filter = " and 基本情况_检疫时间  < \'" & 结束日期.value.AddDays(1)  & "\'"
End If

 

Dim vals As List(Of String) = DataTables("动物产地检疫工作记录").GetValues("申报单编号","申报单编号 Is Not Null " & filter)
For Each val As String In vals
    Dim ndr As DataRow = DataTables("动物产地检疫工作情况日汇总表").AddNew()
    ndr("申报单编号") = val
    Dim cdjl As DataRow = DataTables("动物产地检疫工作记录").Find("申报单编号 = \'"& val & "\' " & filter)