缘起
用 Delphi 的多层数据库开发框架,实现一个多层的主从表,从服务器端到客户端,可以采用这样的架构会让代码比较简单:
1. 假设数据库里面有 2 个表,构成主从表的架构;比如,一个是学生名单表,以身份证号码为主键,这个表是主表;有一个学生各科成绩表,每个学生每科(语文,数学,外语)一条记录,作为从表。
2. Delphi 的服务器端,使用 2 个 FdQuery 对应上述两个表。其中,FdQuery1 对应学生明单表,是主表。FdQuery2 对应成绩表,是从表。一个 DataSource1 指向 FdQuery1,然后 FdQuery2 的 MasterSource 指向 DataSource1,MasterField 设置为主键(身份证号码字段);然后,放置一个 DataSetProvider1 它的 DataSet 设置为 FdQuery1;
3. Delphi 的客户端:ClientDataSet1 的 ProviderName 设置为服务器端的 DataSetProvider1;给 ClientDataSet1 在设计期增加字段,Delphi IDE 自动从服务器端获得字段数据,自动填充字段。这些字段里面,有一个字段是代表了服务器端的 FdQuery2;然后设置 ClientDataSet2 的 DataSetField 为前述字段(IDE 里面的属性面板里面找到 DataSetField 属性,下拉,就能选择)。
经过上述散布,一个简单的 3 层架构的嵌套表的编辑界面就有了。
好处:
这样的嵌套表界面的好处是,在客户端修改了主表和从表的数据,只需要提交 ClientDataSet1,而且,在服务器端的 DataSetProvider1.BeforeUpdateRecord 事件里面,可以看到主表修改的数据,也可以看到从表修改的数据,在这里,可以写入业务逻辑代码,比如某个字段不允许修改。
问题
上述架构下,新增主表和从表的数据,然后提交,没问题。同时修改了主表和从表的数据然后提交,也没问题。但是,如果要修改主表的主键字段的值,Delphi 直接弹出异常提示:没用 Cascade

本文介绍用Delphi多层数据库开发框架实现多层主从表架构,阐述其好处,如客户端修改数据提交方便且可在服务器端写业务逻辑。指出修改主表主键字段值会报错的问题,并给出解决办法,还探索了相关操作在数据库中的实现情况,最后总结普通用法和修改主键的处理方式。
最低0.47元/天 解锁文章
499

被折叠的 条评论
为什么被折叠?



