两个日期型字段相互赋值问题(100分)

  • 主题发起人 主题发起人 jxj
  • 开始时间 开始时间
J

jxj

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在有两个表:A、B。SQL7.0
A表有一字段为:预抵日期:为smalldatetime类型
b表有一字段为:到达日期:为smalldatetime类型。

我现在用A表的字段给B表赋值。
b.edit;
b.fieldbyanem('到达日期').asdatetime:=a.fieldbyname('预抵日期').asdatetiem;
b.post;

如果A表的预抵日期不为空,那么程序没有错误。
如果A表的预抵日期为空(NULL),那么程序会出现如下错误:
 
判断一下阿:
if trim(a.fieldbyname('预抵日期').asdatetiem)='' then
exit;//即不复制
 
A的日期为空,则delphi中用asdatetime做类型转换时自然会认为是不合法的日期,而产生异常。
我想,这类情况应该用条件语句判断,做特殊处理,即:为空时....
不为空时;try
b.fieldbyanem('到达日期').asdatetime:=
a.fieldbyname('预抵日期').asdatetime //判日期是否合法
except
showmessage('日期不合法')//当然此处日期从表中而来,应该不会不合法。
end;


 
同意liamy
也可以这样写
if not a.fieldbyname('预抵日期').isnull then
b.fieldbyanem('到达日期').asdatetime:=
a.fieldbyname('预抵日期').asdatetime;
 
没看清楚是null,抱歉,还有我的语法错误:asdatetime 变成asstring;
 
你在SQL SERVER中是不是将B表的该字段设为不允许空了,如果是这样,则当你给它赋值
时就会出错
 
b.fieldbyanem('到达日期'). Value :=a.fieldbyname('预抵日期').Value

或者

b.fieldbyanem('到达日期'). Assign( a.fieldbyname('预抵日期') )

不用考虑null

 
g:liamy and pipi
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部