[Lazarus] Sorting BufferDataset

Michael Van Canneyt michael at freepascal.org
Mon Apr 13 12:43:28 CEST 2020



On Mon, 13 Apr 2020, Santiago A. via lazarus wrote:

> Hello:
>
> I'm trying to sort a TBufferDataset by several criteria, and I'm a 
> little confused.
>
> There is no sort method, so I decided to use indexes, but I have a lot 
> of doubts.
>
> When you close the TBufferDataset, all the data is cleaned.

Correct.

>
> TbufferDataset has a MaxIndexesCount that limits the number of indexes. 
> By default this property is intialized to 2, and two indexes are created 
> and used by default as soon as you call addIndex. So you must call 
> addIndex before opening the table, or set MaxIndexesCount to at least 3 
> in order to be able to add an index with the table active. (you can't 
> close the table to add new index or you'll lost data).

Correct.

>
> There is no way to drop a single index, and there is no way to change 
> the index fields on the fly, you must call clearIndexes. And to call 
> clearIndexes, before you must close the dataset, and so loose data. Am I 
> right?

Yes.

> So, if I want to process the dataset in different orders with 
> TbufferDataset, before opening the dataset I must set MaxIndexesCount to 
> all the orders I'm going to use.

Yes.

>
> Am I right? Or I have missed something?

You are right.

Probably we should at least now offer the possibility to delete indexes, and
I am not sure the MaxIndexesCount is still needed.

> By the way, What does the index option "ixNonMaintained" mean?

I don't think it is used in FPC, I think it's a Delphi compatibility option.

Michael.


More information about the lazarus mailing list