请教关于文本框赋值问题.
问题:
  由数据库中提取一条记录的数据,将此数据放到文本框中显示.
代码:
         //......关于数据库打开的操作从略.  
        
         form1.Edit1.text := form1.Table1.FieldValues['idno'] ;
         form1.Edit2.Text := form1.Table1.FieldValues['field2'] ;
运行结果提示:第一种情况, 在一个现有的工程中,运行这代码,提示 invalid variant type, 无法将数据库记录的数据赋值给文本框.  如果利用格式转换函数inttostr和vartostr,有的时候正常有的时候不正常. 代码如下:         form1.Edit1.text := inttostr( form1.Table1.FieldValues['idno'] );
         form1.Edit2.Text := vartostr(form1.Table1.FieldValues['field2'] );第二种情况, 直接新建一个工程,运行此代码,没有任何错误提示,结果显示良好.也不需要进行格式转换.请教哪位遇到过这样的问题?
多谢

解决方案 »

  1.   

    form1.Edit1.text := form1.Table1.fieldbyname('idno').asstring; 这样试试
      

  2.   

    这样的话,出现提示如下:variant does not reference an automation object.
    疑问是为什么相同的代码,在一个新建的工程里面就一点问题都没有呢?
    是不是需要什么设置,或者取消什么设置?
      

  3.   

    还有一个问题.
    原始代码中,第一行是整数的,还好处理,我可以用inttostr()函数来解决.
    出现问题的就是第二行字符型的和浮点数型的数据记录.用vartostr()函数也出错.
      

  4.   

    用TAdqoQuery不好吗?怎么用TTable???
      

  5.   

    以前没看过delphi,没办法不是熟练掌握的,最终放弃了别人的程序,自己重新写了一个新的程序。
      

  6.   

    估计idno为int类型的,field2为变体类型(variant)的,是类型转换的问题。
      

  7.   

    最好全部用vartostr()这种形式,还有vartoint/vartofloat/vartobool/vartodate...
    当然这些个函数是自己定义的,参考vartostr()
    [delphi5开发人员指南]上建议的function  VarToInt(const V:Variant):Integer;
    begin
      if TVarData(V).VType <> varNull then
        Result:=V
      else
        Result:=0;
    end;function  VarToFloat(const V:Variant):Double;
    begin
      if TVarData(V).VType <> varNull then
        Result:=V
      else
        Result:=0.0;
    end;还有,AsString这种形式,书中说不建议再使用了
      

  8.   

    variant does not reference an automation object.读得是同一条数据吗,是不是存的内容不一样,所以结果不一样。
    我一直用astring这种形式从未出错。
      

  9.   

    用BDE连接数据库,可能BDE里转化变体类型的方式不同。