三层中.客户端ClientDataSet1.ApplyUpdates(-1)
后,
所对应的服务端的DataSetProvieder1哪个事件里可载获数据包?我在服务端DataSetProvieder1.AfterApplyUpdates事件中这样写procedure TRDMTest.DSPAfterApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
var
CDS: TClientDataSet;
ado: TADOQuery;
S: String;
begin
ado:= TADOQuery.Create(nil);
try
CDS.Data:= OwnerData;
CDS.First;
while not CDS.Eof do
begin
S:= CDS.FieldValues['Name'];
ado.Connection:= ADOConnection1;
ado.Close;
ado.SQL.Clear;
ADO.SQL.Add('Insert into T2(Name) values('+ QuotedStr(S)+')');
ado.ExecSQL;
CDS.Next;
end;
finally
ado.Free;
end;
end;但什么也载获不到,而且还报一个"灾难性故障"错误,望各位指教
后,
所对应的服务端的DataSetProvieder1哪个事件里可载获数据包?我在服务端DataSetProvieder1.AfterApplyUpdates事件中这样写procedure TRDMTest.DSPAfterApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
var
CDS: TClientDataSet;
ado: TADOQuery;
S: String;
begin
ado:= TADOQuery.Create(nil);
try
CDS.Data:= OwnerData;
CDS.First;
while not CDS.Eof do
begin
S:= CDS.FieldValues['Name'];
ado.Connection:= ADOConnection1;
ado.Close;
ado.SQL.Clear;
ADO.SQL.Add('Insert into T2(Name) values('+ QuotedStr(S)+')');
ado.ExecSQL;
CDS.Next;
end;
finally
ado.Free;
end;
end;但什么也载获不到,而且还报一个"灾难性故障"错误,望各位指教
解决方案 »
- 我想了解AES、DES、BLOWFISH、MD5、IDEA、DSA、RSA各自的特点以及优缺点
- 入csdn已有两年了,如何找我在csdn发的第一条贴子呢??
- 我新建一个工程。添加一个窗体运行可以,编译不成功
- 删除出现错误“缺少更新或刷新的键列信息”
- ttimer的使用问题
- 在线求助sql简单语法、字符串简单操作
- 怎样使报表能够打印出表格来,D6的打包程序应该怎样使用,和D5的大不一样啊!!
- 请问如何得到一个TChart控件当前的Series的总数?
- 谁用过EStringGrid,它的ColumnProperties[index].locked如何用?
- 近来听说大富嗡论坛好,请问大富嗡论坛是专门讨论Delphi吗?
- 大家帮我看一下这是什么错误?
- 遍历 treeview组件一个结点下所有子节点,不能用递归算法
你每次循环都连接一遍
不用的,你直接在最上面第一次连接就行了..
var OwnerData: OleVariant);
var
CDS: TClientDataSet;
ado: TADOQuery;
S: String;
begin
ado:= TADOQuery.Create(nil);
ado.Connection:= ADOConnection1;
CDS:= TClientDataSet.Create(nil);
try
CDS.Data:= OwnerData;
CDS.First;
while not CDS.Eof do
begin
S:= CDS.FieldValues['Name'];
ado.Close;
ado.SQL.Clear;
ADO.SQL.Add('Insert into T2(Name) values('+ QuotedStr(S)+')');
ado.ExecSQL;
CDS.Next;
end;
finally
ado.Free;
CDS.Free;
end;
end;
BeforeUpdateRecord的声明格式为
TSomeClass.SomeProviderBeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet;DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind;var Applied: boolean) ;
begin
case UpdateKind of
ukModify:
begin
//todo: do something
Applied := True;//or false
end;
ukInsert:
begin
//todo: do something
Applied := True;//or false
end;
ukDelete:
begin
//todo: do something
Applied := True;//or false
end;
end;
end;
Applied := True时,provider就认为你已经自己处理了数据而不再对DeltaDS的数据进行处理
Applied := false时,provider会继续对数据进行处理。DeltaDs中的数据在这个事件中始终只有一条记录。