我想做一个根据Edit中的汉字来查询汉字对应的字段,结果在 fieldbyname('Chinese').AsString := tmpVar提示:invalid variant type conversion 请大家帮我看一下问题所在!(我在数据库中定义字段chinese为Alpha类型代码如下:
procedure TForm1.button1Click(Sender: TObject);
var
  len ,count,i:integer;
  tmpVar :Variant;
  trans,tmpStr :Widestring;begin
  with table1 do
  begin
    table1.open();
    indexfieldnames := 'Chinese';
    setkey;
    i := 1;
    count := 1;
    trans := Edit1.text;
    len := length(trans);
    tmpVar := VarArrayCreate([1,1],varVariant); //创建一个变量数组
    while (i<len) do
    begin
      tmpStr := Copy(trans,i,2);
      tmpVar[Count]:= tmpstr;
      Inc(count);
      VarArrayRedim(tmpVar,count);
      i := i + 2;
      fieldbyname('Chinese').AsString := tmpVar;
      if gotokey then
      memo1.text := memo1.text+fieldbyname('Address').Asstring;
    end;
  end;
end;

解决方案 »

  1.   

    赋值的类型不兼容啊,
    fieldbyname('Chinese').AsString := tmpVar;
    一个Variant能赋给string吗
    试试fieldbyname('Chinese').AsVariant := tmpVar;能不能满足你的要求
      

  2.   

    fieldbyname('Chinese').AsString := tmpStr; 
    or
    fieldbyname('Chinese').AsString := tmpVar[count];
      

  3.   

    谢谢,其实改成.AsVariant := tmpvar我也试过,,我在数据库中是把字段‘chinese’设定成alpha,如果那样改,单步调试时就会出现 invalid value for field‘chinese’,照你这样改,那应该把field中的‘chinese’改成什么类型呢!
    希望再给点提示!谢谢
      

  4.   

    按照LocustWei(LocustWei) 的修改,程序单步调试没有错误
    只要一成功,马上给分
      

  5.   

    本人在if gotokey then的前面加一个编辑框能显示前面的汉字输入,但是却执行完memo1.text := memo1.text+fieldbyname('Chinese').Asstring; 文本框memo1中却没有显示相应的数据库中内容,if otokey then 也执行了,这会是什么原因呢