简单的ClientDataSet的问题!大家帮忙看看!(200分)

  • 主题发起人 主题发起人 Water-E
  • 开始时间 开始时间
W

Water-E

Unregistered / Unconfirmed
GUEST, unregistred user!
ClientDataSet在OPEN的时候CommandText里面的内容怎么能在DataSetProvider中截获?
不要告诉我用DataRequest,也不要告诉我改用BeforeGetRecords
 
刚才仔细看了一下VCL发现。。。。
CustomClientDataSet在执行Execute的时候其实也是把CommandText做为参数传递给服务器,
procedure TCustomClientDataSet.DoExecute(Params: OleVariant);
var
OwnerData: OleVariant;
begin

do
BeforeExecute(OwnerData);
AppServer.AS_Execute(ProviderName, CommandText, Params, OwnerData);
UnPackParams(Params, Self.Params);
do
AfterExecute(OwnerData);
end;

而OPEN的时候则是调用SetActive后再调用OpenCursor方法,确实在OPEN中就没有其他参数传递了~~~~

大家看还有什么好办法~~实在没有办法~~我也只好用DataRequest了~~~
:(
 
AppServer:
procedure TServerRemoteData.GetData(ASQL:WideString;
var OutData: OleVariant);
begin
with PubQuery,SQLdo
try
Close;
Clear;
Add(ASQL);
Open;
OutData:=PubProvider.Data;
except
OutData:=Null;
end;
end;

Client:
TMainFrm.OpenDataSet;
var
D:OleVariant;
CommandText:string;
begin
AppServer.GetData(CommandText,D);
ClientDataSet1.Data:=D;
end;

 
其实自已做个控件重载TDataSetProvider的DoBeforeExecute,
参数CommandText就是ClientDataSet的CommandText,
是不是加密
我已经实现了,是CB的
 
多人接受答案了。
 
后退
顶部