首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb6+access,不按照自然月统计每个月的记录该如何写

2012-03-21 
vb6+access,不按照自然月统计每个月的记录该怎么写?按照非自然月统计每月的金额,并显示出月份和金额例如,

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:季序号

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

热点排行