向表animals.db(字段有NAME,SIZE,AREA,其中NAME,AREA类型为Character,SIZE为Number)中插入新记录时,在Query1中添加:
var 
name,area:string;
size:integer;begin
name:=edit1.text;
area:=edit2.text;
size:=strtoint(edit3.text);
……
insert into animals.db 
(name,area)
values(:name,:area)
{以上简写}
query1.parambyname('name').asstring:=Name;
query1.parambyname('area').asstring:=Area;
……
运行时可以正确插入NAME,AREA字段值,但当向NAME,SIZE,AREA中插入新值时,即:
insert into animals.db 
(name,size,area)
values(:name,:size,:area)  //运行时出现错误,且就在这一行
query1.parambyname('name').asstring:=Name;
query1.parambyname('size').asstring:=inttostr(size);
query1.parambyname('area').asstring:=Area;
……
当运行程序时,出现错误对话框,即:
Debugger Exception Notification 对话框:
 project book_1.exe raised exception class EDBEngineError with message'Invalid use of  keyword.
 Token:size,area)
 values(?,?,?)
 line Number:2'.Process stopped.Use Step or Run to continue.
如何改写代码?

解决方案 »

  1.   

    问:回复人: bigery(bigery) ( ) 信誉:90 
    能讲详细一点吗?
    我觉得以上差别就是name,area是字符型,而size是整形,你觉得这与运行错误有关吗?
      

  2.   

    query1.parambyname('size').asInteger:=size;
    试一下
      

  3.   

    query1.parambyname('size').asstring:=inttostr(size);
    改:query1.parambyname('size').asInteger:=size;
      

  4.   

    Query.ParamByName('FieldName').Value:=Value;//值直接写就可以了,但保证和你对应字段的类型一致。
      

  5.   

    你将SIZE定义为STRING,就可以了,没必要转来转去的