TVariantField问题,请大虾踊跃发言啊!!!再加300分 (300分)

  • 主题发起人 主题发起人 djdsz
  • 开始时间 开始时间
D

djdsz

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个MIDAS应用中,因为必须将TParams转换成XML格式,所以用了如下的方法:
function TRzCommObj.ParamsToString(InParams: TParams): string;
var
i:integer;
begin
with TClientDataSet.Create(nil)do
try
with FieldDefs.AddFieldDefdo
begin
Name:='Name';
DataType:=ftString;
size:=50;
end;
with FieldDefs.AddFieldDefdo
begin
Name:='Value';
DataType:=ftstring;//本来在这我要用ftVariant,可是错误
size:=500;
end;
with FieldDefs.AddFieldDefdo
begin
Name:='Type';
DataType:=ftinteger;
end;
with FieldDefs.AddFieldDefdo
begin
Name:='ParamType';
DataType:=ftinteger;
end;
createDataSet;//将上面注释地方改用ftVariant在这发生运行错误
for i:=0 to InParams.Count-1do
InsertRecord([InParams.Items.Name,InParams.Items.Value,ord(InParams.Items.DataType),ord(InParams.Items.ParamType)]);
result:=xmldata;
finally
free;
end;
end;
请问,TVariantField该怎么用?上面代码的问题在哪?
 
怎么大富翁一天不如一天了:(
 
KAO!你问题才放几天啊?居然就说这种话!
 
说话文明点好吗?
 
我不知道说话文明的评判标准是什么!
有些人说的话,明里文质彬彬,但话里的意思却咄咄逼人,损人不露痕迹 ---- 这种人也叫文明?
 
可能是不支持这种字段类型吧
 
还是先定义成ftString,用的时候再转换吧。
 
to Sevn:
我现在就是用的ftString,可是有的时候参数很长怎么办?
 
ftVariant是一个变类型,最终使用还是得把他定一个类型,不多说了,我用ADO是这样用的,
你可参考一下,自己改一下了
var
a:Array [0..100] of TVariantField;
begin
for i:=0 to DataD.FieldCount-1do
begin
a:=TVariantField.Create(self);
a.FieldName:=DataD.Fields.FieldName;
a.Name:=MD_D.Name+DataD.Fields.FieldName;
a.SetFieldType(DataD.Fields.DataType);
a.Index:=MD_D.FieldCount;
a.FieldKind:=fkData;
a.DataSet:=MD_D;
MD_D.FieldDefs.Update;
end;
end;
其中MD_D和DataD是两个Tadodataset,上面的函数是复制一个表结构到另一个表
 
后退
顶部