Has TDAMemDataTable.IndexFieldNames behaviour changed in RO10?

We just noticed a bug in our application.
In a TcxGrid with 4 levels we use TDAMemDataTable.IndexFieldNames to set the sorting
after the table is fetched which makes the levels linked.

However the second time we fetch the data (refresh) we loose some of our links.

It appears the underlying function TDAMemoryDataset.SetIndex does not sort in case IndexFieldNames already contained the new value in our DA10.0.0.1457.

Has TDAMemoryDataset.SetIndex changed recently (since RO9?)
Can you confirm this?

If so, is there a way for us to check a list of this kind of changes which might break existing applications?

Regards,
Frederic

Hi,

this stuff (indexes) wasn’t changed for few years.
You can try to disable generics via adding

unit uDAMemDataset;
...
{$I DataAbstract.inc}
{$UNDEF ROUseGenerics} // added

it would be great if you could create a simple testcase w/o CXGrid that reproduced your original issue.
you can send it to support@ for keeping privacy.

Hello Evgeny,

Our previous RO (which I believe did not have the behaviour) was RO9.5 or 9.7
This is a few years old so maybe it still is related to the upgrade.

FYI: We fixed the issue (somewhat ugly) by doing
t.IndexFieldNames:=’’;
before
t.IndexFieldNames:=sortfield;

For now we will stick to the fix.
I just wanted to check if it was RO upgrade related and if we could have known.

Hi,

do you call table.Refresh?
this one calls

Close;
Open;

so you can safely replace it with your workaround, like

table.Close;
table.IndexFieldNames:=’’;
table.Open;
table.IndexFieldNames:=sortfield;

it would be great if you created simple testcase that reproduces original issue

Deep inside our code we indeed do a Close();Open();
I have put my table.IndexFieldNames:=’’;table.IndexFieldNames:=sortfield; just before the place where we re-attach the table to the TcxGrid.

The code is quite complex and client server based.
It is unfortunately too time consuming to create a sample, I am very busy.

I can’t reproduce this behavior with simple testcase that uses two fields in table.IndexFieldNames