三层客户端CLIENTDATASET ACTIVE 以后状态自动变成EDIT???急,已经卡了两天了,欢迎up!(200分)

  • 主题发起人 主题发起人 bfox
  • 开始时间 开始时间
B

bfox

Unregistered / Unconfirmed
GUEST, unregistred user!
发现在程序里,将CLIENTDATASET设置成active后,状态马上会自动变成DSEDIT,帮助里面不是说应该是DSBROWER的吗??
已经卡了两天了,谁能帮我看看?

procedure TfrmHealthFm.OpenSubData(PageIndex: Integer);
begin
inherited;
if keyvalue='' then
exit;
{
if (not CdsBrowse.Active) and keyvalue then
Exit;
}
if (CurrPageIndex =0) then
with CdsImagedo
begin
Active := False;
Params[0].AsString := KeyValue;
Active := True;
end;
with ActiveDataSet(CurrpageIndex)do
begin
if (Params[0].AsString<>KeyValue) then
begin
Active := False;
if CurrPageIndex = 4 then
begin
Params[0].AsString := familycode;
Params[1].AsString := KeyValue;
end else
Params[0].AsString := KeyValue;
Active := True;//跟踪后发现直到这一步,都还是正确的。完成后状态为DSBROWSER
//执行完上面一步以后,状态马上变成EDIT? 百思不得其解。
end;
end;
if CdsMaster.RecordCount=0 then
with CdsMasterdo
begin
if Params[0].AsString<>KeyValue then
begin
Active := False;
Params[0].AsString := KeyValue;
Active := True;
end;
end;
//以下内容是为解决问题临时加的
if ActiveDataSet(CurrPageIndex).State in [dsedit] then
begin
ActiveDataSet(CurrPageIndex).Post;
ActiveDataSet(CurrPageIndex).ApplyUpdates(0);
end ;
StatusChanged;
end;

 
對於可以修改DSBROWSER的地方這點代碼也看不出來,要不你可以檢查下所有連接ActiveDataSet的控件會不會有問題,還有就是其active後,會觸發哪些事件,然後才引起改變。
 
后退
顶部