各位大虾,我在写一个语句的时候很郁闷啊,可能很弱智,大家帮帮忙啊~~
语句是这样写的:
with qry do
begin
close;
sql.clear;
sql.add('select sum(amount) from CosttempTable');//amount是Costtemptable表中的一个字段,money型的
open;
end;
因为引发这个查询的是一个Click事件,而有时候这个临时表里是没有数据的,
我定义了一个total,整形的,然后写
if qry.Fieldvalues['SUM'] = '' then total := 0;
total := qry.Fieldvalues['SUM'];
然后我就用inttostr(total)把数值转换为STRING输出,却总是在当临时表里没有数据时出错,说不能将空类型转为STRING,帮帮忙啊!小弟第一次用DELPHI,以前一直用C的

解决方案 »

  1.   

    with qry do
    begin
    close;
    sql.clear;
    sql.add('select sum(amount) from CosttempTable');//amount是Costtemptable表中的一个字段,money型的
    open;
    if recordcount <> 0 then
    begin
      //查询到数据,则进行操作A
    end else begin
      //没有查询到数据,则...B
    end;
    end;
      

  2.   

    在SQL语句里加个isnull函数把空值转为0,'select Isnull(sum(amount), 0) from CosttempTable'然后在操作记录的时候加(判断记录集是否为空):
    if not IsEmpty then
    beginend;
      

  3.   

    谢谢楼上的,方法虽然是这样,可还是不行,报同样的错。
    我想了一下,是不是查询语句的问题,执行这条语句recordcount 应该一直是1 吧?
      

  4.   

    请教3楼的,为什么我用了你的方法后,数据搞反了,当表为空值时,Total有值,当表为不空时,Total为0??
      

  5.   

    不要使用qry.Fieldvalues['SUM'] 
    采用qry.FieldByName('SUM').asInteger
    就不会有这样的错误了Fieldvalues['SUM']  的返回值是Variant类型