Icon View Incident Report

Serious Serious
Reported By: Tony Pomfrett
Reported On: 12/2/2005
For: Version 4.22 Build 2
# 2143 Cached Updates Causes #8708 Error on Same Dataset with Different Filtered States

A demo program that I was using to test cached updates with V4.17 & V4.18 (both of which had problems with cached updates) still doesn't work correctly. On the first attempt to apply cached updates I get an 8708 error. If I catch the error and set action := uaRetry then the second (automatic) attempt works. Or alternatively I can just manually edit a second time and
apply cached updates again and the second attempt will be successful. The first attempt is never successful.

Form 1
==================

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.DFM}

procedure TForm1.Grid1DblClick(Sender: TObject);
begin
  if not Assigned(Form2)
  then Form2 := TForm2.Create(Application);
  with Form2 do
  begin
    Form2.q1.Open;
    Form2.q1.BeginCachedUpdates;
    // Form1.q1.Refresh;    // Updates fail without this line
    Form2.q1.Edit;
    Show;
  end;
end;

Form 2
==================

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  Form2 := nil;
end;

procedure TForm2.RzButton1Click(Sender: TObject);
begin
  q1.Post;
  q1.ApplyCachedUpdates;
  Form2.Close;
  Form1.q1.Refresh;
end;



Comments Comments and Workarounds
The problem was related to the cached updates being used against a query that was in a different filtered state outside of the cached updates than within the cached updates.


Resolution Resolution
Fixed Problem on 12/12/2005 in version 4.22 build 3


Products Affected Products Affected
DBISAM VCL Client-Server
DBISAM VCL Client-Server with Source
DBISAM VCL Standard
DBISAM VCL Standard with Source

Image