delphi DataSnap巢状主从表实现
服务端:添加ADOConnection,ADOQuery1,ADOQuery2。设置ADOQuery1为主表,ADOQuery2为从表。(通过 ADOQuery2.SQL.Text:= 'select * from 从表 where FKID=:主表PKID'设置)。添加DataSetProvider1和DataSetProvider2分别连接到ADOQuery1和ADOQuery2。
客户端:添加ClientDataSet1,ClientDataSet2。ClientDataSet1连接到DataSetProvider1。双击ClientDataSet1,右键Add All Field。可以看到一个TDataSetField字段。设置ClientDataSet2的DataSetField属性为ClientDataSet1中的TDataSetField列。添加DataCourse1、DataSource2分别连接到ClientDataSet1和ClientDataSet2控件。添加DBGrid1和DBGrid2分别连接到DataCourse1、DataSource2。设置ClientDataSet1.Active:= True;这时发现ClientDataSet2也自动打开。
自增列处理:假如主从表的主外键都是自增列,这时可以在服务端处理主从表关联。在DataSetProvider1中的BeforeUpdateRecord事件中添加如下代码:
procedure TForm1.DataSetProvider1BeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean);
begin
if ((UpdateKind = ukInsert) and
(SourceDS = ADOQuery2)
{and (DeltaDS.FieldByName('PKID').Value = Unassigned)}) then
begin
if DeltaDS.BOF then
begin
qryIdentity.Close; //qryIdentity.Sql.Text:= 'select @@identity';获取主表自增列的最新值
qryIdentity.Open;
end;
DeltaDS.FieldByName('PKID').NewValue := qryIdentity.Fields[0].Value;//赋给子表的当前行
end;
end;
this over.
相关文档:
from : http://zhyhero.googlepages.com/heartset
file:0 前言
本文的目的在于采用流水账方式来记录学习delphi访问嵌入式数据库sqlite中的一些点滴。欢迎各位同好共同学习和批评指正。
file:1 准备工作part1
delphi版本:delphi2007 for win ......
本文使用一个简单实例讲述如何使用多态在Delphi中实现动态编程。
多态(Polymorphism)按字面的意思就是“多种形状”。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运 ......
http://social.msdn.microsoft.com/Forums/en-US/windowspro-audiodevelopment/thread/5ce74d5d-2b1e-4ca9-a8c9-2e27eb9ec058
it's work in Delphi 7
//////////////////////////
unit MMDevApi;
interface
uses
Windows, ActiveX, ComObj;
const
CLASS_IMMDeviceEnumerator ......
Delphi正则表达式学习,参考CSDN万一老师的BLOG、CSDN、网络资料以及带源码的TPerlRegEx,在此注明,以后不再说明,在些感谢Google老师和百度老师
安装:
下载地址:http://download.csdn.net/source/1668436
1、安装.dpk文件,在Libary中添加TPerlRegEx单元存放路径
2、运行程序前复制pcrelib.dll到C:\WINDOWS下 ......