Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

能否设定条件自动在字段填上数值

Lee  发表于:2010-04-15 22:35:05  
复制

在一个关于交货准时统计的表中有以下4个字段:

 交货日期     交完日期    准时   不准时

2009-11-25  2009-11-25

2009-11-28  2009-11-29

2009-11-27  2009-11-25

2009-12-8   2009-12-5

我想设置的条件及结果为:

1.当“交完日期<=交货日期”以及“交完日期>=交货日期-2”时(意思是交货没有延期及提早不超过2天),则在“准时”字段内自动填上“1”。

2.当“交完日期>交货日期”或“交完日期<交货日期-2”时(意思是交货延期或提早超过2天),则在“不准时”字段内自动填上“1”。

如按以上条件自动填写结果是:

 交货日期     交完日期    准时   不准时

2009-11-25   2009-11-25    1

2009-11-28   2009-11-29            1

2009-11-27   2009-11-25    1

2009-12-8    2009-12-5             1

请问该如何设置自动填写?(附上Sample供研究)

点击下载此附件

 

Top
陈福祥 发表于:2010-04-15 23:07:27

按照你的要求,你的这个基础表中,“准时”与“不准时”两个字段可以不要。只需要“交货日期”和“交完日期”这两个字段。当然,如果这两个字段不能构成一个唯一主键值的话,建议再加一个什么“ID”之类的主键值。

然后,用查询语句,就可以达到你要的自到填入值的目的了:

 

SELECT 采购生产表.交货日期, 采购生产表.交完日期,

IIf([交完日期]<=[交货日期] And [交完日期]>=([交货日期]-2),1,Null) AS 准时,

IIf([交完日期]>[交货日期] Or [交完日期]<([交货日期]-2),1,Null) AS 不准时
FROM 采购生产表;



大肚秃秃 发表于:2010-04-16 09:04:36

在采购生产表中去掉“准时”与“不准时”两个字段。

然后,用查询语句,就可以达到你要的自到填入值的目的了:

SELECT 采购生产表.交货日期, 采购生产表.交完日期, IIf([交完日期]<=[交货日期] And [交完日期]>=([交货日期]-2),1,IIf([交完日期]>[交货日期] Or [交完日期]<([交货日期]-2),0,Null)) AS 是否准时
FROM 采购生产表;
这样便于统计,1表示"准时",0表示"不准时"



Lee 发表于:2010-04-16 14:36:12

一楼陈先生的SQL语句能解决上述问题(看来以后要好好学习SQL语句才行),但与此相关的有两个小问题:

1.原来表内除了交货期等四个字段外,还有PO、供应商/部门等字段,所以我在原语句的SELECT后面加入“采购生产表.供应商/部门”,但查询时弹出参数输入窗口要求输入供应商参数,可能是我SQL语句一知半解所以语法有误,请帮忙指点一下(见附件)。

2.如“交完日期”为空时,在“不准时”字段填上“1”,查询语句应如何写?

点击下载此附件

Lee 发表于:2010-04-16 14:43:01
二楼的语句同样也达到目的,也谢谢你的回复。我觉得不准时值为“0”不好,因为“1”是表示“1批次”,我把准时批次汇总后除以总批次可得出“准时交货率”。

陈福祥 发表于:2010-04-16 21:14:06

你的第二个字段有错:采购生产表.供应商 & 部门

因为在很多语言中,包括VB、SQL及其它, &符号是一个特定的运算符号,不能单独放在字段中使用,如果你非要使用它,那么必须要用[]括号把它括起来。

我改之后的语句为:

 

SELECT 采购生产表.PO, 采购生产表.[供应商&部门],

采购生产表.交货日期, 采购生产表.交完日期,

IIf([交完日期]<=[交货日期] And [交完日期]>=([交货日期]-2),1,Null) AS 准时,

IIf([交完日期]>[交货日期] Or [交完日期]<([交货日期]-2),1,Null) AS 不准时

FROM 采购生产表;



Lee 发表于:2010-04-16 22:29:55

    果然是我学艺不精,多谢陈先生指点又让我学多一点知识,麻烦陈先生救人救到底,帮我一并解决之前问题2——当“交完日期”为空时,在“不准时”字段填上“1”的查询语句(不是小弟想偷难,确是刚接触SQL语句不知如何下手),不胜感激。



陈福祥 发表于:2010-04-17 08:44:47

算了,好人做到底。我下面给你的SQL语句,结果是当“交完日期”和“交货日期”都没有值时,不准时为 空 值。

当只有“交货日期”,而没有“交完日期”时,不准时为1。有空值时,请注意使用 Nz 函数,详查帮助文件。

 

SELECT 采购生产表.PO, 采购生产表.[供应商&部门],
采购生产表.交货日期, 采购生产表.交完日期,
 IIf([交完日期]<=[交货日期] And [交完日期]>=([交货日期]-2),1,Null) AS 准时,
IIf([交完日期]>[交货日期] Or [交完日期]<([交货日期]-2),1,IIf(IsNull([交完日期]),iif(isnull([交货日期]),null, Nz([交完日期],1)),Null)) AS 不准时
FROM 采购生产表;



Lee 发表于:2010-04-17 10:27:02

问题解决了,非常感谢陈先生。



总记录:8篇  页次:1/1 9 1 :