三层数据更新问题

delphi2005 2007-10-26 10:30:56
问题:
CDS_EMPL:TCLientDataSet为取得员工列表数据集
其中:
ClientDataSet1.ProviderName := 'DataSetProvider_Common ';
CDS_EMPL.ProviderName := 'DataSetProvider_Common ';//
两个客户端数据集的提供者是一样的。
操作如下:
1、首先取得员工的列表
2、单击[增加按钮]增加一个员工。
3、依次输入员工的信息。
4、其中员工所属部门的信息是通过ClientDataSet1从数据库中取得。
5、保存。保存的代码是:CDS_EMPL.ApplyUpdates(0);
这个时候出现下面错误:
=====================
列名 'USER_ID ' 无效。
=====================
我如果直接输入部门的信息不会出现问题。
只要是选择就会出现上面的错误。(选择是从数据库中取得部门列表再从中选择的)


ApplyUpdates(0)这种方式更新数据,在取得数据到数据更新回数据库这期间clientdataSet的DataSetProvider不能为其他的的
clientdataSet使用。就搞不明白不是说远程数据模块是无状态对象吗?为什么取得数据后还要维护客户端的信息。
...全文
120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ideation_shang 2007-11-03
  • 打赏
  • 举报
回复

试一下这个 估计你会放弃midasl了
http://blog.csdn.net/ideation_shang/archive/2007/11/01/1862177.aspx
火星牛 2007-11-02
  • 打赏
  • 举报
回复
因为你两个CDS连接了后端同一个DataProvider和其上的DataSet
1、在为CDS_EMPL取资料后,后端DataSet是用员工sql
2、在为ClientDataSet取资料后,后端的DataSet是使用的部门sql
3、再ApplyUpdate CDS_EMPL,后端会使用DataSet,这时候DataSet已经没有员工的Schema

解决:
1、用连个DataProvider

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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