以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教高效流水帐统计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40692)

--  作者:sxqq123
--  发布时间:2013/9/26 20:05:00
--  请教高效流水帐统计问题

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:蒸发收碱.table


图片点击可在新窗口打开查看此主题相关图片如下:9月26日.jpg
图片点击可在新窗口打开查看
我使用高效流水帐模式统计每天收碱数量,出现问题是:

1、当月第一个数据不能正常统计(见项目例子)。

2、当月最后一天数据不能正常统计(曾经出现过)。

3、表中日期到24日,在今天(26日)出现月份切换(见图片)。

请教大师是什么原因?如何处理?


--  作者:有点甜
--  发布时间:2013/9/26 20:35:00
--  
 看半天,理解不了你的意思。

 第一个问题解决。

 第二个问题,没有发现,25号的数据怎么就统计不正确了?

 第三个问题,你说得月份切换,是什么意思啊?你的例子未能体现

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:蒸发收碱.table
[此贴子已经被作者于2013-9-26 20:36:03编辑过]

--  作者:sxqq123
--  发布时间:2013/9/26 20:44:00
--  
第三个问题是:应该在日期列出现26日时才切换到下个月份,现在表中日期列只统计到24日,表相当于转换到下个月份,因为没有输入数据所以显示空白,相当于在今天(9月26日)执行了表中没有的26日,不清楚是什么原因造成的?请教
--  作者:有点甜
--  发布时间:2013/9/26 21:03:00
--  
 不会啊,只有在日期列输入2013-09-26,才会筛选下一个月的数据哦。我输入2013-09-24的时候,筛选正常。
--  作者:sxqq123
--  发布时间:2013/9/26 21:07:00
--  

我这现在就是这种情况,能不能麻烦你指导一下


--  作者:sxqq123
--  发布时间:2013/9/26 21:10:00
--  

 

[此贴子已经被作者于2013-9-26 21:27:04编辑过]

--  作者:有点甜
--  发布时间:2013/9/26 21:13:00
--  
 用下面这个gif软件,录制一段你操作情况来看看? 

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:随时随地gif.exe.zip

[此贴子已经被作者于2013-9-26 21:15:24编辑过]

--  作者:sxqq123
--  发布时间:2013/9/26 21:48:00
--  

为什么  If drs.Count = 1 Then
            e.DataRow("全月用量_标号统计")=e.DataRow("数量")
        Else
下起作用?

而必须使用drs(0)("全月用量_标号统计") = drs(0)("数量")


--  作者:有点甜
--  发布时间:2013/9/26 21:59:00
--  
 如果满足条件的话,肯定会起作用的,你试试表里只有一行数据的情况,肯定会执行的。

 多写下面的代码,只是为了确保第一行有数据。

 你编写的代码还有值得改进的地方,不然每修改一行数据,整个表重新统计一次,太不划算了。

 高效流水账不是你这样设计的。


--  作者:sxqq123
--  发布时间:2013/9/26 22:08:00
--  

第三个问题我怀疑原因可能是:我设计的加载是代码与筛选代码不一致?

加载代码如下;

Dim dn As Date = Date.Today
If dn.Day < 26 Then
    dn = dn.AddMonths(-1)
End If
Dim dn1 As Date = New Date(dn.Year,dn.Month,26)
Dim dn2 As Date = dn1.AddMonths(1).AddDays(-1)
Dim Filter As String
Filter = "日期 >=  \'" & dn1 & "\'And 日期 <= \'" & dn2 & "\'"

With DataTables("蒸发收碱")
    .LoadFilter = Filter

筛选代码如下:

Dim dt As Date = e.DataRow("日期")
If dt.Day < 26 Then
    dt = dt.AddMonths(-1)
End If
Dim dt1 As Date = New Date(dt.Year,dt.Month ,26)
Dim dt2 As Date = dt1.AddMonths(1).AddDays(-1)
If e.DataCol.name = "日期" Then
    If e.DataRow.IsNull("日期") = False
        Dim Filter As String
        Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"
        Tables("蒸发收碱").Filter = Filter
    End If
End If

    .Load()
End With

如果是这样,在第二天统计前一天数据情况下(最主要是26日统计25日的数据),如何处理比较好?如果不是这个原因?请教大师指点可能还会有什么可能,我再处理,谢谢。