sql.add('insert into differ_cycle_charge');
sql.add('select cycle_id_SEQ.nextval,:iserv_id,''0519'',:iacc_nbr,');
    sql.add(':icharge,:inumber,:icompl_date,:insc_date,sysdate,');
    SQL.ADD('NULL,NULL,NULL,NULL,NULL,NULL,');
    sql.add(':icycle_type_id,:iacct_item_type_id,''W0A'',:istaffid,null,null,''1'',null');
    sql.add('from dual');
    parambyname('iserv_id').asinteger:=nserv_id;
    parambyname('iacc_nbr').asstring:=nacc_nbr;
    parambyname('icharge').asinteger:=ncharge;
    parambyname('inumber').asinteger:=nnumber;
    parambyname('icompl_date').asdatetime:=ncompl_date;
    parambyname('insc_date').asdatetime:=nnsc_date;
    parambyname('icycle_type_id').asinteger:=ncycle_type_id;
    parambyname('iacct_item_type_id').asinteger:=nacct_item_type_id;
    parambyname('istaffid').asinteger:=gistaffid;
 Execsql;
然后就出错 list index out of bounds(0)

解决方案 »

  1.   

    你肯定在FORMCREATE里做了查询,然后ADOQUERY1.INSERTRECORD的时候没有清空ADOQUERY1中的SQL语句。解决方法是在放一个ADOQUERY2。
      

  2.   

    清空的呀,我第一句就是
    SQL。CLOSE;
    SQL。CLEAR;
      

  3.   

    with query do
      begin
        close;
        sql.clear;
    sql.add('insert into differ_cycle_charge');
    sql.add('select cycle_id_SEQ.nextval,:iserv_id,''0519'',:iacc_nbr,');
        sql.add(':icharge,:inumber,:icompl_date,:insc_date,sysdate,');
        SQL.ADD('NULL,NULL,NULL,NULL,NULL,NULL,');
        sql.add(':icycle_type_id,:iacct_item_type_id,''W0A'',:istaffid,null,null,''1'',null');
        sql.add('from dual');
        parambyname('iserv_id').asinteger:=nserv_id;
        parambyname('iacc_nbr').asstring:=nacc_nbr;
        parambyname('icharge').asinteger:=ncharge;
        parambyname('inumber').asinteger:=nnumber;
        parambyname('icompl_date').asdatetime:=ncompl_date;
        parambyname('insc_date').asdatetime:=nnsc_date;
        parambyname('icycle_type_id').asinteger:=ncycle_type_id;
        parambyname('iacct_item_type_id').asinteger:=nacct_item_type_id;
        parambyname('istaffid').asinteger:=gistaffid;
     Execsql;
    end;
    就是这样,哪个高手帮我一下????
      

  4.   

    建议你在 insert into table后列出字段
    这是一个好的习惯
      

  5.   

    加一句
    fields.clear;
    试试
      

  6.   

    我发现是TDBLookupComboBox的问题。
    但是我在另一个FORM里用的就没问题呀,
    请那位高手指点一下,不胜感激!
      

  7.   

    我已经说了是ListBox、ComboBox等列表越界的问题我不知你是怎么用的,猜想是执行SQL查询后,TDBLookupComboBox对应的字段值为空,所以出现这个问题。
      

  8.   

    1 一种可能 SQL.Clear
    sql.add('insert into differ_cycle_charge');
    .......2 一种可能
    parambyname 出错  param也是一个TList类型
      

  9.   

    我什么也没动呀,就是
    parambyname(xxx').asinteger:=strtoint(dblk_acctitemtype.keyvalue);
    execsql;
    然后就出错,list index out of bounds(0)。
    但是我在另外的FORM中用的好好的呀,一模一样!
    老大,你在帮我看看,是那里错了!谢谢!
      

  10.   

    根本跟字段没有关系,我就是只插入一个字段
    而且不用到TDBLookupComboBox。
    在执行EXECSQL后,还是出错,但是记录已经插入到表里了!
    为什么??
    为什么????
    为什么?????
      

  11.   

    越界
    是不是你的select和insert的字段对应不对,才出现数据的越界呢,
      

  12.   

    还是不对呀,我把什么控件都删了!
    就保留 
    sql.add('insert into differ_cycle_charge(state)');
    sql.add('values(''W0A'')');
    execsql;
    然后就出错   list index out of bounds(0)。
    怎么回事呀?以前都用的好好的呀!