关于根据编辑框中汉字查表问题
我想做一个根据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;
问题点数:20、回复次数:5Top
1 楼tjianliang(乡关何处)回复于 2005-08-01 12:47:03 得分 10
赋值的类型不兼容啊,
fieldbyname('Chinese').AsString := tmpVar;
一个Variant能赋给string吗
试试fieldbyname('Chinese').AsVariant := tmpVar;能不能满足你的要求
Top
2 楼LocustWei(LocustWei)回复于 2005-08-01 12:56:32 得分 10
fieldbyname('Chinese').AsString := tmpStr;
or
fieldbyname('Chinese').AsString := tmpVar[count];Top
3 楼firetop818(用户中文昵称)回复于 2005-08-01 12:56:36 得分 0
谢谢,其实改成.AsVariant := tmpvar我也试过,,我在数据库中是把字段‘chinese’设定成alpha,如果那样改,单步调试时就会出现 invalid value for field‘chinese’,照你这样改,那应该把field中的‘chinese’改成什么类型呢!
希望再给点提示!谢谢Top
4 楼firetop818(用户中文昵称)回复于 2005-08-01 13:00:59 得分 0
按照LocustWei(LocustWei) 的修改,程序单步调试没有错误
只要一成功,马上给分Top
5 楼firetop818(用户中文昵称)回复于 2005-08-01 13:35:28 得分 0
本人在if gotokey then的前面加一个编辑框能显示前面的汉字输入,但是却执行完memo1.text := memo1.text+fieldbyname('Chinese').Asstring; 文本框memo1中却没有显示相应的数据库中内容,if otokey then 也执行了,这会是什么原因呢Top




