Page 1 of 1

invertRecords()

PostPosted: Wed Jul 11, 2012 9:19 am
by maria
Hi guys,

I'm not sure if I'm using invertRecords() properly because it returns an empty foundset whereas there's clearly records in the table.
So, I have my foundset that I get with var fs = databaseManager.convertFoundSet(trackingRecords, trackingRecords.foo_to_bar);
My converted fs now has two records and there are 8 records in total in the table.
So I execute fs.invertRecords() to exclude my current two records and bring up the other six - but it doesn't happen, I have an empty foundset instead.

What am I doing wrong? :roll:

Cheers,
Maria

Re: invertRecords()

PostPosted: Wed Jul 11, 2012 11:47 am
by omar
Hi Maria,

What I did to try and reproduce you problem is create a orders form and a order_detail form. To reduce the ammount of records I put the order form in find mode and filtered on just one order. Then I used the following code to create and bind the converted foundset:

Code: Select all
var convertedFoundSet = databaseManager.convertFoundSet(foundset, orders_to_order_details);
forms.orderdetails.controller.showRecords(convertedFoundSet);


This then shows the order_detail records for the selected order. When I invert:

Code: Select all
var fs = forms.orderdetails.foundset;
fs.invertRecords();   


then it shows all orderdetail records except the orignally selected one which is what you would expect.

So the question is how do you filter the 6 records out from the 8? Because that's what Servoy probably needs to succesfully do an invert. I am guessing it's not with a find/search?

Also note that Servoy does not literally invert. If the table has 300 records and 200 records are available in the foundset. Then an invert will not show the other 100 records from the table. So it actually only inverts your filtering criteria.

Hope this helps a bit.

Re: invertRecords()

PostPosted: Thu Jul 12, 2012 2:25 am
by maria
omar wrote:Hi Maria,

What I did to try and reproduce you problem is create a orders form and a order_detail form. To reduce the ammount of records I put the order form in find mode and filtered on just one order. Then I used the following code to create and bind the converted foundset:

Code: Select all
var convertedFoundSet = databaseManager.convertFoundSet(foundset, orders_to_order_details);
forms.orderdetails.controller.showRecords(convertedFoundSet);


This then shows the order_detail records for the selected order. When I invert:

Code: Select all
var fs = forms.orderdetails.foundset;
fs.invertRecords();   


then it shows all orderdetail records except the orignally selected one which is what you would expect.

So the question is how do you filter the 6 records out from the 8? Because that's what Servoy probably needs to succesfully do an invert. I am guessing it's not with a find/search?


Hi omar,

I didn't say I filtered anything.
I grabbed one foundset, converted it to a related foundset with the matching records which resulted in two records as expected.
The other 6 records did not match the conversion criteria, so they were clearly left out.
Now I want to see them, so I invert my two records foundset but see an empty foundset.

Cheers,
Maria

Re: invertRecords()

PostPosted: Thu Jul 12, 2012 1:33 pm
by omar
Do you have filtering criteria in the relation? Normally, the convertFoundset method should get all child records that are related to the available records in the parent foundset and the invertRecords should succesfully be able to invert the result. Anyway, that's how it works in my tryout sample.

Re: invertRecords()

PostPosted: Fri Jul 13, 2012 2:07 am
by maria
omar wrote:Do you have filtering criteria in the relation? Normally, the convertFoundset method should get all child records that are related to the available records in the parent foundset and the invertRecords should succesfully be able to invert the result. Anyway, that's how it works in my tryout sample.


Ok, I get what you're saying, omar.
Thanks for explaining that, I didn't realise the relation is involved and expected that all records will be inverted no matter how the foundset was filtered/related.

Cheers,
Maria