sSql := ' select NAME_TX,LINKMAN_TX,NOTES_TX,VENDOR_ID from VENDOR where'+
      ' Fax_TX='+''''+Trim(EditFax.Text)+'''';
    ADODataSet3.Close;
    ADODataSet3.CommandText := sSql;
    ADODataSet3.Open;
首先声明connection连接没有问题,然后我调用ADODataSet3.Fields[1].asstring出现list index out of bound(1),可是用一个dggrid调试是选出4个字段阿,大人帮忙啊,我苦啊谢谢先

解决方案 »

  1.   

    对了,后台数据库用的是sql server,再次表示感谢
      

  2.   

    sSql:= 'select NAME_TX,LINKMAN_TX,NOTES_TX,VENDOR_ID from VENDOR 
    where Fax_TX=''%s''';
    sSql:=format(Ssql,[Trim(EditFax.Text)]);
    ADODataSet3.Close;
        ADODataSet3.CommandText := sSql;
        ADODataSet3.Open;
      

  3.   

    查询有没有数据,如果没有数据即ADODataSet3.recordcount=0就会出现此错
      

  4.   

    zhangnan623老兄bug again...55555
      

  5.   

    sSql := ' select NAME_TX,LINKMAN_TX,NOTES_TX,VENDOR_ID from VENDOR where'+
          ' Fax_TX='+''''+Trim(EditFax.Text)+'''';
    改为
    sSql := 'select NAME_TX,LINKMAN_TX,NOTES_TX,VENDOR_ID from VENDORwhereFax_TX='''+Trim(EditFax.Text)+'''';
    试一试
      

  6.   

    即使没有数据也没关系,关键数据集要真的打开,你可以跟踪到ADODataSet3.Fields[1].asstring这一句看一下ADODataSet3.Fields[1].Count是多少,应该是4,如果是零就有问题
      

  7.   

    正常的写法if not(ADODataSet3.IsEmpty) then
      ADODataSet3.Fields[1].asstring.....
      

  8.   

    sSql := 'SELECT NAME_TX, LINKMAN_TX, NOTES_TX, VENDOR_ID FROM VENDOR ' 
            + 'WHERE Fax_TX = ' + '''' + Trim(EditFax.Text) + '''' + '';Sql语句做相应修改即可。
      

  9.   

    估计是不是一个adoconnection可以连接的adodataset有限阿
      

  10.   

    回复人: ibicf(i believe i can fly) ( ) 信誉:96  2003-12-08 17:25:00  得分:0 
     
     
      估计是不是一个adoconnection可以连接的adodataset有限阿
      
     楼主:  一个adoconnection连接的adodataset应该可以是N多个,
            我曾经连过40个都没问题;        另:其实一般只要有4、5个adodataset就够用了;
      

  11.   

    我试过,无论数据集中是否有记录,都可以引用Fields[1]。
    问题可能出在,楼主没有打ADO的补丁
      

  12.   

    不可能,没记录你只能访问 Fields[0]。
      

  13.   

    我这么做的,把字段分开选,先选product_id,然后执行,在通过product_id去选其它字段,就可以解决,谢了各位先放一天,明天揭帖,再次感谢
      

  14.   

    注意这里:'where Fax_TX=Trim(EditFax.Text)';
    原因是: length(trim(EditFax.Text))大于Fax_TX字段的宽度。