源代码:
  Q2.Close;
  Q2.SQL.Clear;
  Q2.SQL.Add('select * from xxx');
  Q2.Open;
item.SubItems.Add(q2.Fieldbyname('fbillno').AsString);//varchar2类型
item.SubItems.Add(q2.fieldbyname('fdate').AsString);//date类型
item.SubItems.Add(q2.Fieldbyname('aaa').AsString);//number类型在运行item.SubItems.Add(q2.fieldbyname('fdate').AsString);//date类型
这一句时报以下错误:
project aaa.exe raised exception class EOleException with message 'Multiple-step operaiton generated errors. Check each status value'. process stopped. Use Step or Run to continue.如果把那句屏蔽就没有问题,都是同一个表中的字段,为什么啊????快疯了!!!

解决方案 »

  1.   

    调试:
    1.Q2.open后,先判断一下有没有记录,
    2.将(item.SubItems.Add(q2.fieldbyname('fdate').AsString);//date类型) 提到(item.SubItems.Add(q2.Fieldbyname('fbillno').AsString);//varchar2类型)前面试试看是不是date型这句的问题,
    如果是,就是fdate有问题,再说一下出错情况如何
      

  2.   

    item.SubItems.Add(DateToStr(q2.fieldbyname('fdate').AsDatetime));//试一下
      

  3.   

    csouth(金子) :试过了,还是一样
    记录是肯定有的,因为其它语句都提出值来了。是那句的问题,报错就是上面我说的啊
    zjf27(还是菜的很) :我看到这个问题的时候,首先想到的就是这样,呵呵,可惜没用
      

  4.   

    你把那句去掉,直接加个字符串看出错吗
    item.SubItems.Add(q2.fieldbyname('fdate').AsString);//date类型
    改为
    item.SubItems.Add(2003-05-05')
    先看这样可以吗
      

  5.   

    tw_cshn(一无所有):虽然觉得你的说法不可思议,但还是试了试,没有问题
    我的试法:用item.SubItems.Add(datetostr(date));代替那句
    没有问题。
    但换回去照样报错,我重启,甚至换另一台机器,全都是这样,什么原因啊???啊。。
    想死了。。
      

  6.   

    检查数据库,fdate的字段名有没有写错,应该不会有其它问题的,或者换一个字段名试试
      

  7.   

    item.SubItems.Add(q2.fieldbyname('fdate').AsDate);//
      

  8.   

    出错信息有时候难以用常理推断的,
    你可以在数据库中试着再建一个date型的字段,取它的值看看能不能通过,这是调试么,要试试每一种可能性.to soldier7451:date型的可以用asString直接转换成字符串型呀
      

  9.   

    严重同意楼上的,delphi是不能自动转换类型的
      

  10.   

    既然我说的那样不错你就
    item.SubItems.Add(FormatDateTime('YYYY-MM-DD',q2.fieldbyname('fdate').AsDateTime);//
    如果还有问题,那就是数据有空的在加个条件
    if q2.fieldbyname('fdate').AsString<>'' then
      item.SubItems.Add(FormatDateTime('YYYY-MM-DD',q2.fieldbyname('fdate').AsDateTime)
    else
      item.SubItems.Add('NULL');
      

  11.   

    楼上请解释一下这样做的含义是什么,好吗?只是换了个格式,datetostr不是一样可以吗?反正无所谓格式,只是只要是这个字段就错。
    再着,日期型的数据是没有空值的。
    呵呵,不管怎么样,谢谢你们!可惜这好像不属于delphi的问题了,因为换了数据库后什么问题都没有了,再次感谢!
    如果今天没有人发言,我就结帖了!谢谢!
      

  12.   

    认为主要的原因是你的格式需要转化,delphi不支持自动转化,所以你必须先转化在添加,你可以试试下面的代码:
       item.SubItems.Add(datetostr(q2.fieldbyname('fdate').AsDatetime));//date类型
       item.SubItems.Add(floattostr(q2.Fieldbyname('aaa').AsFloat));//number类型
      上面有一个小小的要求就是你要保证你的数据库中该条记录中该字段的值不可以为空,其实你也可以用:
      try
        item.SubItems.Add(datetostr(q2.fieldbyname('fdate').AsDatetime));//date类型
        item.SubItems.Add(floattostr(q2.Fieldbyname('aaa').AsFloat));//number类型
      except
        showmessage('输入你自己认为的提示信息!如:该记录中的该字段的值是空的!')
      end{try}
      

  13.   

    如此解决:   不用fieldbyname('ss').as... ,改用 q2.fieldvalues['fdate'],应该解决!