如何解决这个错误:“could not convert variant of type(Null) into type (Double)”?

yeyuzy 2005-01-06 10:33:29
我使用ADOQuery来添加一条新的记录时出现这样的错误提示:“could not convert variant of type(Null) into type (Double)”?
代码如下:
append;
FieldByName('flh').AsString:=Edit1.text;
FieldByName('isbn').AsString:=Edit2.text;
FieldByName('sm').AsString:=Edit3.text;
FieldByName('zz').AsString:=Edit4.text;
FieldByName('zzh').AsString:=Edit5.text;
FieldByName('cbz').AsString:=Edit6.text;
FieldByName('cbd').AsString:=Edit7.text;
FieldByName('cch').AsString:=Edit8.text;
FieldByName('dj').AsString:=Edit9.text;
FieldByName('kb').AsString:=Edit10.text;
FieldByName('zd').AsString:=Edit11.text;
FieldByName('ys').AsString:=Edit12.text;
FieldByName('cbn').AsString:=Edit13.text;
FieldValues['grrq'] := DateTimePicker1.date;
post;
...全文
6628 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenchanyee 2005-01-14
  • 打赏
  • 举报
回复
你在添加前判断一下 如果为null 可用给它赋值为0
yeyuzy 2005-01-14
  • 打赏
  • 举报
回复
我用ADOTabel就没有任何问题。
yeyuzy 2005-01-14
  • 打赏
  • 举报
回复
with ADOQuery1 do
begin
append;
FieldByName('flh').AsString:=Edit1.text;
FieldByName('isbn').AsString:=Edit2.text;
FieldByName('sm').AsString:=Edit3.text;
FieldByName('zz').AsString:=Edit4.text;
FieldByName('zzh').AsString:=Edit5.text;
FieldByName('cbz').AsString:=Edit6.text;
FieldByName('cbd').AsString:=Edit7.text;
FieldByName('cch').AsString:=Edit8.text;
FieldByName('dj').AsString:=Edit9.text;
FieldByName('kb').AsString:=Edit10.text;
FieldByName('zd').AsString:=Edit11.text;
FieldByName('ys').AsString:=Edit12.text;
FieldByName('cbn').AsString:=Edit13.text;
FieldByName('grrq').Value:=DateTimePicker1.date;
post;
end;
除了grrq为datetime型字段外,其它的都是字符型字段。
名称 类型 长度 是否允许为空
ID int 4 0 (自动增加)
FLH char 8 1
ZZH char 4 1
CCH char 6 1
SM char 60 1
ZZ char 30 1
CBD char 8 1
CBZ char 30 1
CBN char 5 1
GRRQ datetime 8 1
BC char 6 1
ZD char 4 1
YS char 4 1
KB char 4 1
DJ char 10 1
ISBN char 30 1
xwhope 2005-01-14
  • 打赏
  • 举报
回复
最好你直接发上你的源码和数据库上来检查一下,如果可能的话!!!
最好是用INSERT INTO来增加记录
在DELPHI用IF *** ISNULL THEN
来检查一下值是否为空,以免出错!!!
何鲁青 2005-01-14
  • 打赏
  • 举报
回复
如果有空格也不应该是NULL
是不是数据库中有些项忘了赋值,而且数据项又不能为空。
yuvotesyg518 2005-01-14
  • 打赏
  • 举报
回复
FieldValues['grrq'] := DateTimePicker1.date;
一句改成:
FieldByName('grrq').Value:= DateTimePicker1.DateTime
试试看!
yeyuzy 2005-01-14
  • 打赏
  • 举报
回复
我的问题是出在日期时间型字段。
Kshape 2005-01-14
  • 打赏
  • 举报
回复
:“could not convert variant of type(Null) into type (Double)”?
==============================
你是转换成Double,那你看看你数据库里哪个字段是Double啊
检查后在看看程序中哪里进行了赋值
如果你要用edit赋给它,那么要先检查edit是不是为空
如果是,最好设为0,然后再继续
yeyuzy 2005-01-14
  • 打赏
  • 举报
回复
求助!!!!!!!!!!!!
pdbird 2005-01-07
  • 打赏
  • 举报
回复
检查是不是还漏了其它字段的赋值
cdsgajxlp 2005-01-07
  • 打赏
  • 举报
回复
up
gxgyj 2005-01-07
  • 打赏
  • 举报
回复
说白了,就是你保存数据时,有些字段的值没有...................
yuvotesyg518 2005-01-07
  • 打赏
  • 举报
回复
could not convert variant of type(Null) into type (Double)”?
应该是那个时间日期型数据的问题。
因为只有那个类型的数据才以Double的形式存储呀!
FreePlayBoy 2005-01-07
  • 打赏
  • 举报
回复
如果位空的話,建議使用String插入,Text內容做類型轉換,如不為空可以依據插入欄位數據類型做轉換可以試看看.
joanagle 2005-01-07
  • 打赏
  • 举报
回复
建议改成这样写好了:
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text := '你的添加记录的语句';
ADOQuery.Open;
todouwang 2005-01-07
  • 打赏
  • 举报
回复
如果我不使用ADOQuery,使用ADOTable就可以添加记录。
//不会吧,可能是你漏掉了个字段,还有你在append前面加个close;
aiirii 2005-01-06
  • 打赏
  • 举报
回复
>>不论Edit1、Edit2、Edit3、Edit4......Edit13的Text值是否为空,都会出现这个错误。

不大可能! 检查是不是还漏了其它字段的赋值
Hozaka 2005-01-06
  • 打赏
  • 举报
回复
我一直都用 ADOQuery.FieldValues['FieldName'] := Value; 的,跟楼主的有什么区别吗?或者说我的语法不够标准

不过我倒是没碰到过类似的问题
smiler007 2005-01-06
  • 打赏
  • 举报
回复
添加记录最好用一个单独的AdoQuery,用SQL的Insert into语句....
yeyuzy 2005-01-06
  • 打赏
  • 举报
回复
我使用的是SQL数据库,除了grrq为时间日期型外,其余的都为字符型。

如果我不使用ADOQuery,使用ADOTable就可以添加记录。
加载更多回复(2)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧