我试过了tomye,wql,rainbow等各位大侠的所有招式,还是无法破解。提示错误如:Variant does not reference
;an automation object,invalid variant type conversion。typeid是“站点类型”字段
,文本型,长度为1,数据库TStation已有('A','B','C','D')四条记录,现在当增加一条记录时,
query1.sql.Text='select max(Typeid) as maxtypeid from TStation'查找出最大的类型
号('D'),并自动转换成下一个字母'E'(一般情况下类型不
会很多不超过9个,所以你不用担心两个字符的情况),作为新记录的类型号('E'),现在
要把最大的类型号取出来,用ord()+1转成下一个字母,再转换成字符串在dbedit1中显示
出来,最大的也是最关键的也是最头疼的就是这(integer|char|String)的互相转换的问题。
我的测试代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
; MaxTypeID : Variant;
; S : String;
; Num : Char;
begin
MaxTypeID := 'A';
S := MaxTypeID;
Num := chr(ord(S[1])+1);
ShowMessage(Num);
end;
//Num的结果显示为'B';
因为query1.FieldValues['MaxTypeId'];返回的是一个Variant,所以我建议你把你的代码
的变量定义稍微改一下:
var
; MaxTypeID : Variant;
; S : String;
; Num : Char;
begin
……
; ;MaxTypeid:=query1.FieldValues['MaxTypeId'];//maxtypeid是最大的类型号,文本型
; ;S := MaxTypeID;
; ;num:=chr(ord(S[1])+1);//转换成下一个字母,不必用ord,因为ord(整数)=整数自己
; ;dbedit1.Text:=num;//作为字符显示出来了!
end;