Access交流中心

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

日期函数赋值窗体控件值出错问题

叶子  发表于:2009-07-18 23:01:45  
复制

如:inputdate是窗体的一个文本控件,=dateserial(year(me.inputdate),1,1) 没有结果,可=dateserial(year(inputdate),1,1) 就有结果了,为什么这样,能否详细讲讲日期函数赋值引用问题,多谢啦

 

Top
点燃一支烟 发表于:2009-07-19 11:26:34

DateSerial 函数

对于指定的年、月、日,返回 Date 子类型的 Variant

DateSerial(year, month, day)

Arguments

Year

从 100 到 9999 之间的数字或数值表达式

Month

任意数值表达式。

Day

任意数值表达式。

说明

要指定日期,如 1991 年 12 月 31 日,DateSerial 函数中每个参数的取值范围都应该是可接受的;即日的取值应在 1 和 31 之间,月的取值应在 1 和 12 之间。但是,也可以使用表示某日之前或之后的年、月、日数目的数值表达式为每个参数指定相对日期。

以下样例中使用了数值表达式代替绝对日期。在这里,DateSerial 函数返回 1990 年 8 月 1 日之前十年 (1990 - 10) 零两个月 (8 - 2) 又一天 (1 - 1) 的日期:即 1980 年 5 月 31 日。

Dim MyDate1, MyDate2
MyDate1 = DateSerial(1970, 1, 1)         ' Returns January 1, 1970.
MyDate2 = DateSerial(1990 - 10, 8 - 2, 1 - 1)   ' Returns May 31, 1980.

对于 year 参数,若取值范围是从 0 到 99,则被解释为 1900 到 1999 年。对于此范围之外的 year 参数,则使用四位数字表示年份(例如 1800 年)。

当任何一个参数的取值超出可接受的范围时,则会适当地进位到下一个较大的时间单位。例如,如果指定了 35 天,则这个天数被解释成一个月加上多出来的日数,多出来的日数取决于其年份和月份。但是如果参数值超出 -32,768 到 32,767 的范围,或者由三个参数指定(无论是直接还是通过表达式指定)的日期超出了可以接受的日期范围,就会发生错误。

注意:

象这样的问题,你能上网的话最好去搜索,自己能上互联网却疏于动用"搜索"工具去主动寻找答案无论如何不能说是一件明智的事情,呵呵,尽管这样,还是帮你"百度"了一下,想更深入了解的话,自己继续"百度".



江苏笨笨 发表于:2009-08-14 12:45:55
版主,看了下上面只是多了个ME.操作符,其他都一样的,应该不存在时间超范围的问题

点燃一支烟 发表于:2009-08-15 17:22:51
写=dateserial(year(inputdate),1,1) 之所以就有结果,是因为这是在该控件的设计视图属性里的控件来源里写,而不是在事件过程里面写的,在控件来源里面写,实际上用的是表达式生成器,实际上是=dateserial(year([inputdate]),1,1),调用的是窗体里的字段[inputdate],它不识别me.inputdate

点燃一支烟 发表于:2009-08-15 17:35:07

在事件过程里是用vba代码:如这么写:

Private Sub inputdate_AfterUpdate()

Me.Text2 = DateSerial(Year(Me.inputdate), 1, 1)
End Sub



点燃一支烟 发表于:2009-08-15 17:36:45
如有需要可用cdate函数转化为日期

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