Subject Re: [IBO] V.4.2Ga - TIB DMLCache: the new enhance work as expected?
Author Jason Wharton
I beleive it is coded to work correctly. When a DML cache item is being
processed by a dataset, I prefer it to not interfere with the current record
if it is in an edit state. So, if the KeyFields.RowData is the same as the
Bookmark then that means it should set the flag to defer the action instead
of immediately carrying it out.

Ideally, what I want it to be able to do is go ahead and carry the operation
out, even while it is in an edit state. I'd just have it refresh the
OldValues buffer and the NewValue buffer if it hasn't been modified by the
user yet. This way, the refresh will simply put the value wherever it is
appropriate to put them under all circumstances. I guess it may be useful to
set a flag, perhaps in the RowFlags or something, that would indicate that
the OldBuffers were actually changed.

Any more thoughts on this area?

Jason Wharton

----- Original Message -----
From: "Enrico Raviglione" <e.raviglione@...>
To: <>
Sent: Friday, March 08, 2002 10:13 AM
Subject: [IBO] V.4.2Ga - TIB DMLCache: the new enhance work as expected?

> Hi Jason,
> in your ReleaseNotes of V.4.2G i read:
> The DML caching/dataset synchronizing feature was enhanced so that it
> wouldn't interfere with datasets currently in a non-browsing state.
> of doing that it will wait until after the dataset is posted and then do a
> Refresh in order to get the dataset synchronized. This default bahavior is
> subject to furthur refinements because obviously I would like it to do
> it can without interrupting a dataset in an edit state. There is no reason
> other records in the buffer cannot be refreshed if they are what is being
> synchronized. In short, I'd like it to intelligently perform all
> synchronizing actions possible rather then deferring them.
> But i have test it in my work on TIBO-DMLCaching and i think your enhance
> don't work how you expect.
> >From IBA_BDataset.IMP:
> if NeedToPost and ( Bookmark = KeyFields.RowData ) then
> FRefreshDML := true
> else
> case ADMLCacheItem.DMLCacheItemType of
> ditEdit: InvalidateBookmark( KeyFields.RowData );
> ditDelete: DeleteBufferBookmark( KeyFields.RowData );
> ditInsert: InsertBufferBookmark( KeyFields.RowData );
> end;
> An example: if the TIB_BDataset1 are in edit on record number. 3 and
> a DMLCache notification of a change occured on record n. 2 the NeedToPost
> true but also the second condition (Bookmark=KeyFields.RowData) are true!!
> This is correct or not ?
> Regards,
> Enrico Raviglione.
> IB Objects - direct, complete, custom connectivity to Firebird or
> without the need for BDE, ODBC or any other layer.
> - your IBO community resource for Tech Info
> keyword-searchable FAQ, community code contributions and more !
> Your use of Yahoo! Groups is subject to