我使用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;
代码如下:
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;
解决方案 »
- Delphi7 的查询语句相关问题,求解!!!
- ADO + [NUMBER(1)]ORACLE 负数出错
- 请教在哪里能查到delphi 6的详细代码的写法.
- 我想问一下这样的软件哪里有下载??
- 如何控制鼠标的移动范围?!
- 用什么来截取字符串
- 谁能贴贴关于面向对象编程的文章!
- 三层结构,SQL Server2000数据库,DCOM应用服务器,关于不能保存存储过程查询后所做的修改。
- zswang(伴水)(伤心中)哥哥(收)
- Midas 中的dcomconnection 的computername为什么只能设置局域网的机器(我想连一台载internet上的计算机该怎样设置)
- 这个复杂的SQL怎么写----准备给1000分
- 再弱问,fastreport中,怎么获得dateset的字段名? 我想动态设置titlebond上memo的字段名
//不会吧,可能是你漏掉了个字段,还有你在append前面加个close;
应该是那个时间日期型数据的问题。
因为只有那个类型的数据才以Double的形式存储呀!
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text := '你的添加记录的语句';
ADOQuery.Open;
一句改成:
FieldByName('grrq').Value:= DateTimePicker1.DateTime
试试看!
是不是数据库中有些项忘了赋值,而且数据项又不能为空。
最好是用INSERT INTO来增加记录
在DELPHI用IF *** ISNULL THEN
来检查一下值是否为空,以免出错!!!
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
==============================
你是转换成Double,那你看看你数据库里哪个字段是Double啊
检查后在看看程序中哪里进行了赋值
如果你要用edit赋给它,那么要先检查edit是不是为空
如果是,最好设为0,然后再继续