怎样向clientdataset动态建立字段(100)

  • 主题发起人 主题发起人 lovewjm
  • 开始时间 开始时间
L

lovewjm

Unregistered / Unconfirmed
GUEST, unregistred user!
我用如下方法,向clientdataset动态建立字段, clientdataet指向fquery.. procedure cds_AddPersistentCol(Fcds:Tclientdataset;Faspc:Tadostoredproc;Fquery:Tadoquery);vari:integer;field:Tstringfield;begin fcds.Close; for i := 0 to fquery.FieldCount-1 do begin Field := TStringField.Create(Fcds); Field.FieldKind := fkData; Field.FieldName:= fquery.fields.fields.FieldName; Field.Name:= fquery.fields.Fields.Name; Field.DataSet := Fcds; end;end;但运行时出现错误,:type mismatch for field "pc_no".expecting string, actual is widestring.. 就是字段类型不匹配 这问题怎么解决啊? 请各位高人指点,急..
 
我有个简单易行的办法。你这那是动态建字段啊.最好的办法莫过于xml给 ClientDataSet.xmldata 直接赋值就行了.这是最简单有效的办法.
 
我是想给cds添加永久字段..还有哪位高人指点一下啊
 
Tclientdataset类型与Tadoquery类型的数据有区别,请你重新跟踪一下就会发现。
 
你可以直接建内存表,然后把原来的数据append 进去。 with aClientDataSett do begin Close; with FieldDefs do begin Clear; Add('I1', ftInteger); Add('S2', ftString, 8); Add('I2r', ftInteger); Add('S2', ftString, 20); Add('F1', ftBCD, 2); end; CreateDataSet; end;建完后就直接用,一关闭数据就没有了,方便。
 
Fcds.Close; Fcds.FieldDefs.Assign(Fquery.FieldDefs); Fcds.CreateDataSet;
 
不明白楼主想要做什么。想把ADOQuery的列及内容,全部放到Cds中?可以建一个 _Dsp : TDataSetProvider; _Quy := TADOQuery.Create(nil); _Quy.Connection := ADOCon; _Dsp := TDataSetProvider.Create(nil); _Cds := TClientDataSet.Create(nil); with _Quy do begin Close; SQL.Text := Cmd; Open; end; _Dsp.DataSet := _Quy; _Cds.ProviderName := _Dsp.Name; _Cds.Data := _Dsp.Data; _Cds.Open; // _Cds.XMLData;
 
后退
顶部