你combobox1.text代表的哪个字段属性是什么?
有可能不能转换成为string的

解决方案 »

  1.   

    (1)上面的代码显然是由于数据类型没有指明的缘故才出现
       "invalid variant type conversion"这样的提示;
    (2)下面的代码出现"variant does not reference an automation object"
       的提示显然是说fieldbyname()里的参数不能由对象属性来代替,所以你还
       是根据Combobox1.ItemIndex值来分别枚举可能的情况。
    晚辈献丑了,还望高手赐教的。
      

  2.   

    procedure TForm1.ComboBox1Change(Sender: TObject);// test ok
    begin if not VarIsNull(ClientDataSet1.FieldbyName(ComboBox1.Text).OldValue) then
       Edit1.Text:=ClientDataSet1.FieldbyName(ComboBox1.Text).OldValue; if not VarIsNull(ClientDataSet1.FieldbyName(ComboBox1.Text).NewValue) then
      Edit2.Text:=ClientDataSet1.FieldbyName(ComboBox1.Text).NewValue; if not VarIsNull(ClientDataSet1.FieldbyName(ComboBox1.Text).Value) then
      Edit3.Text:=ClientDataSet1.FieldbyName(ComboBox1.Text).Value;
    end;
      

  3.   

    procedure TForm1.ComboBox1Change(Sender: TObject);// test ok
    begin if not VarIsNull(ClientDataSet1.FieldbyName(ComboBox1.Text).OldValue) then
       Edit1.Text:=ClientDataSet1.FieldbyName(ComboBox1.Text).OldValue; if not VarIsNull(ClientDataSet1.FieldbyName(ComboBox1.Text).NewValue) then
      Edit2.Text:=ClientDataSet1.FieldbyName(ComboBox1.Text).NewValue; if not VarIsNull(ClientDataSet1.FieldbyName(ComboBox1.Text).Value) then
      Edit3.Text:=ClientDataSet1.FieldbyName(ComboBox1.Text).Value;
    end;
      

  4.   

    如果我没猜错的话.你的程序是"李维" 的例子。This is a bug.
      

  5.   

    lwm8246(lwm8246)说的正确,以前也遇到过这样的错误,如果数据库中的对应字段没有赋过值,
    ClientDataSet1.FieldbyName(ComboBox1.Text).OldValue的返回值为空不能转换成字符串的,而clientdataset1.fieldbyname(combobox1.text).oldvalue.asstring ;的写法根本不对。
      

  6.   

    谢谢lwm8346,我的程序是李维的例程,我试试,分数等回儿加上
      

  7.   

    OldValue  NewValue  CurValue
    请问是啥东东?以前我从未见过
      

  8.   

    谢谢lwm8246和lz-0618,问题解决了