如何将一ClientDataSet的数据添加至另一ClientDataSet中?

Aeolian 2004-04-21 02:19:20
现有两数据表A和B,A含B的所有字段,B作为A的数据模板.在表A中添加记录时,如何将已有B的数据添加至表A中?
...全文
906 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
ywzwyw 2004-08-11
  • 打赏
  • 举报
回复
上说的都有问题,如果你Clientdataset中有些字段是字典表,就不行了,因为大家都没有试,Clientdataset1 := TClientDataSet(Clientdataset2),这就完全是一样了;
neo40 2004-08-09
  • 打赏
  • 举报
回复
让两个ClientDataSet使用同一个DataSetProvider
podianliangshui 2004-08-06
  • 打赏
  • 举报
回复
cds1.AppendData(cds2.Data,true/false)
minanqiang 2004-08-03
  • 打赏
  • 举报
回复
ClientDataSet1.Data:=ClientDataSet2.DataClientDataSet10.AppendData(ClientDataSet1.Data,false);

zaiai2003 2004-07-28
  • 打赏
  • 举报
回复
赶紧结贴,大家说的都对。我顶顶顶顶顶顶顶顶顶。
heartwolf 2004-07-28
  • 打赏
  • 举报
回复
ClientDataSet1.Data:=ClientDataSet2.Data
李维说的
蝈蝈太阳 2004-07-09
  • 打赏
  • 举报
回复
xx
yhf_zhangqian 2004-07-09
  • 打赏
  • 举报
回复
ClientDataSet10.AppendData(ClientDataSet1.Data,false);
2312 2004-06-22
  • 打赏
  • 举报
回复
ClientDataSet10.AppendData(ClientDataSet1.Data,false);

ClientDataSet10.Providername:= 一个空的DataSetProvider
ClientDataSet10.remoteserver:= ClientDataSet1的remoteserver值
2312 2004-06-22
  • 打赏
  • 举报
回复
ClientDataSet10.AppendData(ClientDataSet1.Data,false);
SuanAddMiao 2004-06-12
  • 打赏
  • 举报
回复
clientdataset1.data:=clientdataset2.data;
owencai 2004-06-10
  • 打赏
  • 举报
回复
关注
zhuchengchuan 2004-06-10
  • 打赏
  • 举报
回复
学习中.....
superyys 2004-06-09
  • 打赏
  • 举报
回复
自己继承一个ClientDataSet,
override assign方法啊.
Heyongfeng 2004-06-09
  • 打赏
  • 举报
回复
1、直接把赋值:dataset1.data:=dataset2.data
2、CloneCursor方法:dataset1.CloneCursor(Source,True)
xiaocuo_zrf 2004-06-09
  • 打赏
  • 举报
回复
一般用克隆是比较好的方法,因为它不会影响当前CDS的Record指针

ClientDataSet1.CloneCursor(ClientDataSet2,True);
zaiai2003 2004-05-14
  • 打赏
  • 举报
回复
将A的连接源断掉,然后直接指定A.data := B.data
shsunb 2004-05-10
  • 打赏
  • 举报
回复
一点思路:
A beforepost :
begin
定位B(使用Locate or Lookup);
A.FieldByName('').AsString := A.FieldByName('').AsString; //Lookup可直接取值
end;
楚人无衣 2004-04-25
  • 打赏
  • 举报
回复
添加的时候根据输入的信息从B中找出再赋给A吧,这个情况用Clone方法不行的
yangtsehua 2004-04-24
  • 打赏
  • 举报
回复
克隆只有两个数据结构相同时才用。要是结构不一样,还是直接for i:.....吧。:)
加载更多回复(6)
2.35.0.12 26-Dec-02 打开小型查询的速度优化(2378) MSConnection.Options已添加(2454) 添加了有限的MSConnection.ConnectString支持(2356) 现在从服务器获取输出字符串和(var)字节参数 最大长度不依赖于设置Param.Size(2355) DBMonitor客户端实现已移至COM服务器 修复了复杂表名的错误 修复了DT编辑器丢失数据的常见错误(D2137) 修复了DataModule设计时MSConnection的错误(O2290) 修复MSTable错误的设计时编辑器(2433) 优化服务器游标的BLOB字段发布(2117) 修复ClientDataSet的主/明细关系的错误(O2423) 修复了OutOfMem(1979)的一些错误 2.30 30-Sep-02 Delphi 7支持 ftString和ftVarBytes类型的新内存管理模型。允许显着减少大型表提取时的内存使用量。由FlatBuffers数据集选项控制 在CachedUpdates模式下支持blob字段 2.05 09-Aug-02 DBMonitor支持 2.00 18-Jul-02 支持服务器游标 支持多个结果集的查询 性能提升 打开查询而不支持将所有行提取到客户端(FetchAll = False) 增加了单向支持 快速获取身份价值 StoredProc支持刷新 FullRefresh支持 执行更新和删除时检查旧行值 在从提交到回滚的打开事务的关闭连接上更改了行为 1.30 21-Mar-02 支持C ++ Builder 6 1.20 08-Nov-01 添加了TMSParam类来表示参数 添加了查询分析器和企业管理器集成 在刷新时加速获取身份值 1.00 26-Aug-01 SDAC的第一个版本
2.5主要变动: 1.重要改进:新版本Delphi下的VCL控件已经比较完善,封装良好,与Delphi无缝连接,改变了旧版需要将Dataset数据复制到报表引擎的实现方式,通过模拟ADO接口的方式直接支持BDE/ClientDataset/等非ADO方式的Dataset,不需要考虑太多的COM方面的因素,强烈建议Delphi的开发者直接使用该VCL控件。 使用VCL控件编译的程序发布时,将AcReport.dll和您的EXE放在同一个文件夹下一起发布即可,不需要运行RegSvr32来注册控件,VCL的代码会自动注册该控件。 2.完善文本控制方式(在设计器界面上增加了此项菜单): 1).当文本控制设置为自动适应单元格(自动缩放字体)时,选择上对齐方式时,也能自动换行。 2)当文本控制设置为截断字符时,支持自动换行,保持单元格的高度不变,在某些特殊应用,不管文本如何变化,可以保持表格的形状不变。 3.增加了OnSaveReport事件,当用户在设计器点击“保存”按扭时,会触发此事件,程序可以响应此事件执行自定义保存,例如可以将报表保存到数据,或者返回一个信息给设计器用户。 4.直接支持ADO.netDataset和DataTable对象,不需要再通过CustDataBuiler对象来转换,大大提高了在.net下的运行速度。(需要引用 AcNetUtils.dll,具体使用方法请参考Demo) 代码示例: //Dataset: //2.5以前的版本需要将Ado.net下datatable在ACcopy一个复本,速度比较慢 // AcReport.AcUtils.CopyDatasetToAcRptEngine(mDataset, mac, false); //新版本的处理方式,通过ADO-ADO.net适配器的方式直接访问 DbAdapter.FillDatasetToAC(mDataset, mac); //DataTable: mDataset.Tables["zlemployee"].TableName = "雇员档案"; AcReport.AcUtils.CopyTableToAcRptEngine(mDataset.Tables["雇员档案"], mac, false); //重新加入一个表到AcReport (旧版本方式) //在2.5以后的版本,可以用如下的方式将ADO.net的DataTable对象通过AcRecordsetAdapter转换为ADO接口的方式直接加入到AcEngine, //这样做就不需要在AC复制一个复本,大大提高的速度。 AcRecordsetAdapter RecordAdp = new AcRecordsetAdapter(mDataset.Tables["雇员档案"]); mac.AddNetAdoData("雇员档案", RecordAdp); // 以上两行也可以直接调用 AcNetUtils 类库里提供的现成方法(效果是一样的): AcNetUtils.DbAdapter.FillDataTableToAC(mDataset.Tables["雇员档案"], mac); 5.可拖动对象设计功能增强 6.支持 条码 Code128 Auto ACReport简介 Anycell Report(简称AC Report)是一款国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的国式报表工具之一。就如Anycell Report的名称那样,灵活强大的表格功能一直是AC Report区别于其它软件或控件最显著的特征之一,AC Report 表格取消了传统表格概念“列”的概念,每一行上的单元格数量可以不等,且可以自由活动,勿须上下对齐,在制作复杂的国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些基本特点: 1.独具特色的表格,风格与Word表格相似,但可以做出比Word或Excel更灵活的表格来。 2. 功能全面、专业的国式报表设计器,国用户更易于学习和接受。 3.支持多种单元格样式,可以打印图像、图表(直方图、折线图等)、Rich文本、 条形码、式财务帐薄、支持在报表嵌入Word、Excel文档等。 4. 强大的计算和合计功能。内置表达式解析系统和函数库。 5. 可扩充性,可以在应用程序给报表引擎扩充函数库、报表样式和单元格样式。 6.支持多种报表样式,如清单式、分组、交叉表、以及子报表
很久没有发布东东了,今天看到盒子上有朋友发布了个三层的东东, 下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需要安装,使用十分不方便。 为了继续支持我喜欢的DELPHI和可爱的盒子, 特发布个自己写的远程数据库对象希望能给大家平常的工作带来便利和高效(偶自己和同事们都用了挺长时间,十分稳定易用)。 用DELPHI的朋友少不了要和数据库打交道,一般小程序都使用ACCESS或者SQLLITE做数据库感觉十分方便,不用装数据库服务端,客户端不用单独装驱动, 发布程序时直接目录一拷贝就完事,但缺点是不方便从其它计算机对它进行访问, 有了偶这个东东,就可以很方便容易的实现咯。 ps : 就是连接Oracle和mysql,也可以不用装驱动或少附带发布多余的DLL。 当前版本 mmzmagicrmo v1.8 更新历史 v1.0 单元实现 v1.1 解决不支持自增长字段的问题 v1.2 解决id号必须是第1个字段的问题 v1.3 为增加速度,做缓冲不用每次生成语句 ,改变自动更新时导致filter属性暂用的方式 v1.4 在sabason 兄的热心帮助下,解决了流试传输存在的问题,大大提高了传输效率 20100413 v1.5 全面修改为支持高效率的UniDAC数据库驱动套件 和ClientDataset (原来是ADO方式)支持所有主流数据库,大幅提高传输效率,且使用方法没有改变 v1.6 解决流传输存在的BUG ,修正最后一个字段为blob字段导致语句生成错误的BUG v1.7 增加服务端sys.ini文件配置客户端登陆权限,增加批量执行SQL语句接口 v1.8 增加服务端提供自动升级功能,可以升级多个文件或者目录,可选择强制升级或者客户端可选升级 使用步骤 解压后找个地方存放 将GobUnit目录添加到delphi的搜索路径 将DXSockEnt30(我改过bug的版本)的3个子目录也添加到delphi的搜索路径 即可使用和编译所有偶提供的代码 FAQ: 这个东东都提供什么功能? 答:提供最简单方便高效的方式,通过CDS+UniDAC实现远程数据库 这个东东为什么不封装成控件? 答:本类以单元形式封装,只要加到搜索路径后直接引用即可,无需经过安装等麻烦的步骤。 这个东东适合应用在什么场合? 答:适合应用于小型分布式程序。 这个东东掌握起来有难度吗? 答:没有任何难度,就和你开发本地数据程序一样简单。 这个东东可以应用在我已有的程序里吗? 答:由于我使用的是TClientDataset作为数据集载体,所以无需更改为其他控件,现有的本地数据库程序也可以非常容易的改造为支持分布式数据库。 这个东东稳定吗? 答:经自己长期做小白鼠广泛的实际应用实践,发现方便,稳定。 服务端的端口号是多少? 答:服务端的端口号可以随意设置,只要不和其他程序冲突就可以,并且客户端连接服务端时必须端口一致. 如果服务端重启了客户端需要重启吗? 答:不用,客户端只要连接上服务端以后就有自动断线重连的功能。 我在使用时要注意什么? 答:如果你要用TClientDataset对象的Insert,Edit,Append,Post方法新增数据时,我会占用这个对象的BeforePost和BeforeDelete事件。 这个东东免费吗? 答:完全免费,并且开放所有源代码,你可以随意改进,传播它,当然如果更好用了,记得给我也发一份 :)(要保留偶的版权和注释信息哦) 这个东东使用到了那些控件? 答:第3方Dxsock,TClientDataset,UniDAC 同时发布的还有我自己积累的几个常用单元,有日志,调试,tcp的通用服务和客户端模块等,同样都是十分有用的东东。 这个东东有demo程序吗? 答:有最简单的示范程序,但时间关系只写了最简单的演示代码,还有很多值得你去挖掘的实用接口和单元。 我有了改进版本,怎么联系这个东东的作者? 答:QQ 22900104 ,Email 22900104@qq.com 马敏钊 发布这个东东的目的是什么? 答:好用的东东大家分享,共同学习,共同进步,希望大家都能发扬开源精神。 构架说明: 大概是这样的,偶有一个服务器对象,负责提供数据库服务,在需要提供数据服务的程序里创建它即可。 使用起来十分简单 首先引用服务端单元 uses UntRmodbSvr; //创建远程服务对象 (参数1 服务端口号 日志对象,如果不需要记录日志请填nil) Gob_RmoDBsvr := TRmodbSvr.Create(FSvrPort, nil); //连接数据库 可以是ADO支持的所有数据库 调用TDBMrg提供的获取各种数据库的链接字符串即可,这里连接Access数据库 Gob_RmoDBsvr.ConnToDb(TDBMrg.GetAccessConnStr('cfg.mdb')); 到此为止,2行代码使你的这个程序具有了将数据库发布出去的能力,其它机器的程序可以方便的通过它访问到数据库,像使用本地数据库一样。 客户端只需连接服务端即可,不管服务端是什么样的数据库,无需安装任何数据库驱动。 uses UntRemSql; //创建客户端对象 RmoClient := TRmoHelper.Create(); //连接服务端 填入服务端地址和端口(与服务端端口一致即可) Result := RmoClient.ReConnSvr(ISvrIP, Iport); 2行代码使你的客户端程序具有了方便的访问到远端的数据库,像使用本地数据库一样,并且你原有的单机数据库程序可以很方便改为远程数据库。 具体使用方法可以查看DEMO程序
包含安装包及源码包 ----------------------------------技术背景介绍===================================' 本系统在一些大型企业(跨多达24个区域)一直都在很好的服务过,主要在FTP 控制 UDP控制 HTTP控制 傁客户数据数据数据压缩加密方面进行了综合深入的应用 =====================================模块功能介绍==================================== OAEnterPrise.exe: 用户及权限的集成管理 ;报表种类及字段自动定义 sky.exe 报表录入及FTP自动传输系统,(多对一)初始密码为1 ReportServer.exe 报表自动接收系统,自动汇总导入数据库(DBF) SkyEditor.exe 文档录入及自动FTP发送系统 editorserver.exe 文档自动分类接收系统 SQL.exe 通用数据库查询系统 {支持各类数据库格式的查询,支持Undo 及 Redo 操作,可以保存任意间结果 ,支持对任意结果的n次查询 支持查询结果导入excel表 支持多表查询操作} 需要 BDE skynet.exe 电子邮件系统(采用 HTTP DLL ) WebSearch.exe 文档及报表远程查询系统 webchat.exe 远程会议系统 {必须先在装有FTP SERVER 的服务器上 启动Install\Soft\New目录下ChatServer.exe} WinArchiver.exe :压缩解压系统 SkyImage.exe :图片编辑器 =====================================安装操作==================================== 在本机需要安装BDE(delphi BDE) 1: 在主机(服务器端口)上建立FTP服务(最好是微软的IIS_FTP) 设定用户名PASS 及密码USER (例如 : 用户名 :chj 密码: 1998 ),将设定的FTP用户名及密码设定为FTP的最高操作权限,注意如果用微软的IIS_FTP请在操作系统用户管理器也要设定此用户名及密码并设定为隶属于Administrator,否则刚才设定的用户名及密码将无法登陆FTP SERVER; 2: 手工在本用户FTP根目录下建立以下远程文件目录: 1. dat 2. dat\regse 3. dat\regre 4. dat\update 5. report 6. report\dat01 7. report\dat02 8. report\dat03 9. report\dat04 10. report\dat05 11. report\dat06 3: 获取加密用户名及密码: 在压缩文件找到pass.exe文件 将用户名及密码输入EDIT编辑框,点按buttom1按钮,将得到加密的用户名及密码,例如用户名 :chj 密码: 1998,得到的用户名及密码分别是 用户名 :avu 密码: 2770 4:获取主机地址加密数据,和上面一样,将运行FTP SERVER 主机地址 例如 202.87.09.91 输入EDIT编辑框点按buttom1按钮,将得到加密的主机地址 5: 执行install安装程序,系统对于普通用户及超级都用它来安装, 对于普通用户,不需要序列号,对于超级用户需要序列号,序列号为OA2000 ; 6 录入主机地址及用户密码,将加密的主机地址录入主机地址栏目,上面的545.03.47.72,在主、副、次用户名录入加密的FTP 用户名,例如上面的 avu 在主、副、次密码录入加密的FTP 用户密码 例如2770 7. 填写安装区域部门选项(选择安装用户);如果选择总部各部门,比如"总经办",则密码为大写ZB+"总经办"每个字第一个大写的拼音,例如上面为ZBZJB ; 如果选择各分部,比如"安徽分部",则密码为大写 "安徽分部"每个字第一个大写的拼音,例如上面为AHFB; 如果选择各办事处,比如"安庆",则密码为大写 "安庆"每个字第一个大写的拼音,例如上面为AQ; 这些便是登陆用户信息,内容在\Install\Soft\New\NetSky\DAT 目录下,为bscid.cdx 和 zbid.cdx和fbid.cdx ;可以修改本初始文件; 可以用Delphi的ClientDataSet组件的LoadFromFile及SaveToFile方法打开本文件读写编辑,文件内容可

2,497

社区成员

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

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