读书人

vb6+access不按照自然月统计每个月的

发布时间: 2012-03-21 13:33:14 作者: rapoo

vb6+access,不按照自然月统计每个月的记录该怎么写?
按照非自然月统计每月的金额,并显示出月份和金额
例如,有以下记录
jino moneynum jiludate
1 123 2008-12-3
2 234 2008-12-27
3 200 2009-1-1
4 300 2009-1-27
5 400 2009-2-2

每月开始日设置为25日,结束日为24日。
则以上五条记录统计后显示为:
日期 金额
2008-12 123
2009-01 434
2009-02 700
只用sql文,不用查出数据后再用程序分月计算,该怎么写sql文?
多谢!

[解决办法]
用这个进行分组
select iif(日期>24,取左7位(转换成字符(日期+1月)),取左7位(转换成字符(日期))),sum(moneynum) as j from table group by iif(日期>24,取左7位(转换成字符(日期+1月)),取左7位(转换成字符(日期)))

[解决办法]
最好提前定义好财务月份.
运行时检查当前月,如果没有定义,就禁止录入数据.
大部分ERP都这样做的.
[解决办法]
如果你仅仅做一个月的查询,现有的表结构没有什么不便。因为日期型字段实际上是一个 Double 值,整数部分表示的是从 1899 年 12 月起的天数。

"Select jiludate As 日期, moneynum As 金额 From table1 Where jiludate >= #2008-12-25# And jiludate < #2009-1-25#"

但是要做分月汇总,就应该添加一个财务月份字段作为查询辅助。

更新财务月份值
"Update table1 Set AccountMonth = IIf(Day(jiludate) > 25, CDate(Format(DateAdd('m', 1, jiludate), 'yyyy-m')), CDate(Format(jiludate, 'yyyy-m')))"

汇总
"Select Format(AccountMonth, 'yyyy-m') As 日期, Sum(moneynum) As 金额 From table1 Group By AccountMonth"
[解决办法]
在数据库中添加一个“会计期间”表,内容如下

Assembly code
年度 月份 开始日期   结束日期---- ---- ---------- ----------2008   12 2008-11-25 2008-12-242009   01 2008-12-25 2009-01-242009   02 2009-01-25 2009-02-24---- ---- ---------- ----------
[解决办法]
按照你后面几楼的描述,最好是增加几个字段,在数据写入时同步写入或者后期更新

列1:年份
列2:月份(这里根据上月25~本月24日这个规则算好)
列3:周序号
列4:季序号

写入时稍微多花点功夫,出报表时就方便做了。

读书人网 >VB

热点推荐