如何将包含不同字段类型的TClientDataSet.Data赋予另一个且全是TStringField类型的TClientDataSet.Data,这两个Client的列名都相同!!!

sky_234 2006-10-24 12:20:20
我想把一个从数据库提取出数据的TClientDataSet.Data赋予给另一个TClientDataSet.Data,因为其中的源数据是从数据库直接查询出来的,所以包含的有各种不同的字段类型,如Integer、DataTime、String等,接收Data包的TClientDataSet预先已经建立了同名的字段,但字段类型全是TStringField类型,如果通过ClientDataSet2.data:=ClientDataSet1.Data进行赋值,程序会报错,错误内容的意思就是字段类型不匹配,我又不想通过循环赋值,那样效率不怎么好,各位大虾,有没有什么好的方法啊???
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
董董 2006-10-25
  • 打赏
  • 举报
回复
不用循环恐怕不行吧。

你另建一个全是string类型的TClientDataSet,并且还要把所有记录给转换过去,目的是什么呢?我觉得你的这一设计思路本身的效率就不高了。
sky_234 2006-10-25
  • 打赏
  • 举报
回复
to楼上:我不想使用循环赋值的方法,那样效率不高,我想知道有没有什么快捷的方法,能快速的实现转换,提高性能~!
real_name 2006-10-24
  • 打赏
  • 举报
回复
up
do2008 2006-10-24
  • 打赏
  • 举报
回复
使用asString或者AsVariant ,看行不行

var
i,j:integer;
ff:string;
begin
ClientDataSet1.open;
ClientDataSet2.open;

for i:=1 to ClientDataSet1.recordcount do
begin
for j:= 0 to ClientDataSet1.FieldCount - 1 do
begin
ff := ClientDataSet1.Fields[j].FieldName ;//获取表的字段名

ClientDataSet2.append;
ClientDataSet2.fidlebyname(ff ).AsVariant = ClientDataSet1.fidlebyname(ff).AsVariant ;
//ClientDataSet2.fidlebyname(ff ).AsString= ClientDataSet1.fidlebyname(ff).AsString;
end;

ClientDataSet1.next;
end;

ClientDataSet2.post;
sky_234 2006-10-24
  • 打赏
  • 举报
回复
在线等待啊!!!
不知是否可以使用TClientDataSet.GetFieldData方法实现啊?
如果可以,如何实现呢?

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧