On Tue, 1 Oct 2013, Dennis Poon wrote:



Michael Van Canneyt wrote:


On Tue, 1 Oct 2013, Dennis Poon wrote:

Since TBufDataSet is in-memory, to speed things up, how can I directly access the N'th record and M'th field's value as Variant?

Simply said: You cannot.


Can any one suggest an in-memory dataset in fpc/lazarus that allows direct access?

Does TMemDataset allow it?

No. The architecture of TDataset does not allow this.

The buffer mechanism is quite complicated, and there are quite some layers to go through.

T(Mem)Dataset is not just an array of records. The records can be at wildly different locations, the values may or may not be computed. Blobs are stored entirely in different locations etc.

Michael.


That is too bad. I used to use TdxMemData from "DevExpress" and it allows such direct access.

Yes, it is possible to construct such a descendent. But in the general case it is not possible to provide this mechanism.

Maybe bufdataset can be extended to deliver this, but I would not hold my 
breath waiting for this.

I also used TdxMemData, but didn't see such mechanism. Of course, I never looked for it :)

The benefit is record can be accessed without CHANGING the current record pointer which will trigger updating of all linked DB controls (that could be time consuming or even confusing to the user).

I understand the benefits.

But if you need such access, then I think that TDataset is not for you.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to