Office中国论坛/Access中国论坛

标题: 追加问题-- 愿出金币,望朋友相助解决问题 [打印本页]

作者: 086-china    时间: 2008-10-6 09:10
标题: 追加问题-- 愿出金币,望朋友相助解决问题
各位国庆快乐吧,

问题是:为什么不能跨年追加,即当年份是2009年1月份时,追加不了,

高人回复了下面函数,但尝试多日仍未能解决问题,请各位再帮帮我改改实例题.

pre_Y=year(dateadd("M",-1,date()))
pre_M=month(dateadd("M",-1,date()))

[ 本帖最后由 086-china 于 2008-10-6 14:57 编辑 ]
作者: ui    时间: 2008-10-6 11:28
会不会日期的格式不对呢
作者: 086-china    时间: 2008-10-6 11:39
原帖由 ui 于 2008-10-6 11:28 发表
会不会日期的格式不对呢

元老:你能不能帮我看一看,我实在等着急用,先谢谢了!!!
作者: 086-china    时间: 2008-10-6 14:16
原帖由 cuxun 于 2008-10-6 13:43 发表
dateadd("M",-1,date())就是月份减一呀,这个就可以了:)


先谢了!非常抱歉,我是新手,请问要修改那里,见下图
作者: sxgaobo    时间: 2008-10-6 18:07
其实好多问题都不是战术问题,而是战略问题啊!你可以另开个窗口专做那事啊!定义好时间在追加数据啊!
作者: zyp    时间: 2008-10-6 19:23
金币免了,免得大家以为我见钱眼开。

我将楼主表中的很多字段设置了默认值为0,以免出现追加不上的情况。另外,在处理数据时,尽量不要将数字型的字段值为null,这样很容易出错,空值可用0填入。

楼主应该举一反三,触类旁通才是。我上次告诉你pre_Y=year(dateadd("M",-1,date()))和pre_M=month(dateadd("M",-1,date())),就是希望你能从中得以启发,但我看到你的查询中取得上个月时,月份是用上了我告诉你的表达式,而年份仍用year(now()),那么势必造成系统日期为1月时,取得上月时出错,上月的月份成为12,这是对的,但年份仍为本年而非上年。后面的条件也是,你的意思是想取得上月的上月的资料自动追加到上月,但你只做了月份限制,而非年份限制,如果系统中有多个年份,且都有相同的月份那该如何,岂不是要全部都追加?应该用年份和月份同时进行条件限制。
作者: zyp    时间: 2008-10-6 19:27
查询语句如下,注意红色部分是我修改过的

INSERT INTO 工资项目明细表 ( 姓名ID, 基础工资, 岗位工资, 绩效工资, 住房补助, 伙食补助, 其它, 保险, 工龄工资, 岗位补助, 月份, 年份, 标记, 出勤天数 )
SELECT 工资项目明细表.姓名ID, 工资项目明细表.基础工资, 工资项目明细表.岗位工资, 工资项目明细表.绩效工资, 工资项目明细表.住房补助, 工资项目明细表.伙食补助, 工资项目明细表.其它, 工资项目明细表.保险, 工资项目明细表.工龄工资, 工资项目明细表.岗位补助, Month(DateAdd("m",-1,Date())) AS 月份, Year(DateAdd("m",-1,Date())) AS 年份, 工资项目明细表.标记, 工资项目明细表.出勤天数
FROM 姓名表 INNER JOIN 工资项目明细表 ON 姓名表.员工ID = 工资项目明细表.姓名ID
WHERE (((工资项目明细表.标记)=-1) AND ((姓名表.在职)=-1) AND ((工资项目明细表.月份)=Month(DateAdd("m",-2,Date()))) AND ((工资项目明细表.年份)=Year(DateAdd("m",-2,Date()))));
作者: wang1950317    时间: 2008-10-7 08:52
Zyp老师真是热心,值得学习!
作者: 086-china    时间: 2008-10-7 09:45
致Zyp老师及所有给我帮助的朋友最高敬意,深表谢意,我会努力学习,尽力帮助有需要帮助的朋友。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3