在程序的输入界面中,有两上文本框来让用户输入日期,但是不要求用户一定要输入日期,可以为空,不输入任何值!但是我在更新的时候,要怎样将这两上文本框中的值写到ACCESS数据库中呢?我是先声明两个日期型变量,代码简要如下:
Dim dtFirst as date
dim dtSecond as dateif isdate(txt1.text)=true then
dtfirst=txt1.text
else
dtfirst=???? '这里如果填NULL,则会出错
endifif isdate(txt2.text)=true then
dtsecond=txt2.text
else
dtSecond=??? '这里如果填NULL,则会出错
endif请教各位,如上的???处应该填入什么值比较好呢?
Dim dtFirst as date
dim dtSecond as dateif isdate(txt1.text)=true then
dtfirst=txt1.text
else
dtfirst=???? '这里如果填NULL,则会出错
endifif isdate(txt2.text)=true then
dtsecond=txt2.text
else
dtSecond=??? '这里如果填NULL,则会出错
endif请教各位,如上的???处应该填入什么值比较好呢?
直接赋值到字段就行了,比如:
rs.fields("日期字段名").value=iif(isdate(text1),cdate(text1),null)
dtfirst=txt1.text
else
dtfirst=Date
endif
dtfirst=txt1.text
else
dtfirst=""
endif
一般情况下会变成1900-1-1这个时间
Dim dtFirst as Varient
dim dtSecond as Varient其次用null(不过你这里让用户手工填个日期,不怕用户骂死你?)
if isdate(txt1.text)=true then
dtfirst=txt1.text
else
dtfirst=Null
endif
...最后,写sql语句的时候
if isnull(dtFirst) then
'null的时候的语句
else
'非null的时候的语句
endif注意了,access里日期用#分隔,而null两边不能用#,别写错了
我不想用条件语句来判断,这样的话要重复很多代码的,而且我这个界面中不只这两个日期要判断的!并且本身这条SQL语句已经很长了,有十几行,如果用条件判断,那代码太长了!
绝对没有这个意思,是程序需要,我这是写商用程序,不是做练习的!
申明为string
Dim dtFirst as String
dim dtSecond as Stringif isdate(txt1.text)=true then
dtfirst=Format(txt1.text,"yyyy/mm/dd")
else
dtfirst=""(你要的形式)
endif
再去拼你的SQL字符串
因为我数据表中的这两个值为日期型,所以不好按你所说的方法去更新!我想要么用日期格式,要么用空值,但就是不知道空值要如何赋给这个日期型变量呢?
首先要搞清楚,只有不更新相关字段的原始状态才可能使字段值为Null,你不可能赋给它一个Null。只要赋值,它就不是Null了。
如果你一定要赋值,可用的解决办法只有一个,将用户没有输入日期的值置为一个不可能的值,例如1899-12-30(相当于0,日期值实际上是double型数值)。此后只要检测到0,就是用户没有输入的值。
ydate=Null,不报错;
ydate="9999-12-31",也可以啊,这是极限值,如果真有用户这么输,把它认为是自动填入的也没什么问题吧