Loading Valulists - When??

We are experiencing huge speed challenges - and we can see its because of valulists being loaded. For example, on a related form when the user cursors beyond the limit of the loaded records, all of the valulists for that form are reloaded.

Valuelist vlt_fc_desc fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_orientation fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_user_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_int_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_fc_desc fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_orientation fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_user_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_int_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_fc_desc fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_orientation fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_user_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_int_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_fc_desc fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_orientation fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_user_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_int_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_fc_desc fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_orientation fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_user_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_int_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_fc_desc fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_orientation fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_user_rec fully loaded with 500 rows, more rows are discarded!!
Valuelist vlt_int_rec fully loaded with 500 rows, more rows are discarded!!

There has to be a better way than slowing down the cursoring of the form - this is just moving one record BTW and takes around 5 seconds on our LAN. It’s ridiculous on our Cloud Server???

Any help or suggestions would be appreciated. Seems building all of the valulists on the fly with getDatasetByQuery() might have been one option, however the column widths of the drop-downs for integers columns are so small they are unusable (as mentioned in a previous post - and we will get a sample over ASAP) so that’s not an option at the moment!

Any others faced this one? What have we missed ???

you should first look at that warning…
You are loading valuelist that discard rows, so you don’t see anything
Do you display those in combo’s? You should really rethink your design and use TypeAheads or something.
What kind of valuelist are that? Related?
You could use the global method valuelist and do the caching yourself.

jcompagner:
you should first look at that warning…
You are loading valuelist that discard rows, so you don’t see anything
Do you display those in combo’s? You should really rethink your design and use TypeAheads or something.
What kind of valuelist are that? Related?
You could use the global method valuelist and do the caching yourself.

Thanks for the fast response Johan - confused though…

You are loading valuelist that discard rows, so you don’t see anything

If the valulists are greater than 500 - do’nt they get discarded anyway? The valulists are working on the forms BTW! can we set valulists to load only say, 200 records then loop to the next 200 etc similar to table view?

Do you display those in combo’s? You should really rethink your design and use TypeAheads or something.

Yes Combo’s, Type Ahead’s presuppose users know what they are looking for and that’s not always the case?

What kind of valuelist are that? Related?

Almost all of these are straight table valulists (one or two related).

You could use the global method valuelist and do the caching yourself

What does this mean Johan??? Do you mean getDataSetByQuery?? (If so please see my comments on Integre columns)

Kahuna:

You are loading valuelist that discard rows, so you don’t see anything

If the valulists are greater than 500 - do’nt they get discarded anyway? The valulists are working on the forms BTW! can we set valulists to load only say, 200 records then loop to the next 200 etc similar to table view?

no you only see the first 500 so if you see that message, you have an incomplete valuelist
not all rows are there. so people can’t really select all the values, because there are some missing.

Kahuna:

Do you display those in combo’s? You should really rethink your design and use TypeAheads or something.

Yes Combo’s, Type Ahead’s presuppose users know what they are looking for and that’s not always the case?

not really, if you click on it you see the first 100 or so.
But people can then search for the value they want, But in your case you seem to have even more then 500 values so how are users without searching selection a value from that?

So in my opinion you should use Type aheads so that users can filter directly the list to get to the one they want.
Or have a special search form for them where they can search for it in another more complex way.

Really having more then 50 or 100 items in a combo box is just in my point of view bad practice.

Kahuna:

What kind of valuelist are that? Related?

Almost all of these are straight table valulists (one or two related).

hmm table valuelist shouldn’t really reload, they only reload if there data is changed, so is that the case? Does that users or other users update/insert rows of the table where the valuelist is buid on?
related are loaded everytime (becaue the relation can change from record to record), but they can be loaded from cached related foundset so they are not a query to the server/database

This area is enhanced in the latest version of 5.2 so do upgrade to that.

Kahuna:

You could use the global method valuelist and do the caching yourself

What does this mean Johan??? Do you mean getDataSetByQuery?? (If so please see my comments on Integre columns)

Yes in the end you use getDataSetByQuery (most likely)
But i guess you are talking about custom valuelist and then filling them up at some point by doing a getDataSetByQuery()?
thats not what i meant, i was talking about global method valuelist, see the valuelist editor. You can select a global method that will load in the data you want under 3 different scenario’s (3 total when using typeaheads)

Thanks again Johan - I guess as the form I mentioned is in a related Tab then the valulists are related too?

i was talking about global method valuelist, see the valuelist editor. You can select a global method that will load in the data you want under 3 different scenario’s (3 total when using typeaheads)

Can you expand on what these 3 scenarios are please Johan?

Kahuna:
Thanks again Johan - I guess as the form I mentioned is in a related Tab then the valulists are related too?

not that is not related to each other.

valuelist are related when the valuelist is a related valuelist, so it is configured to use a relation.

Kahuna:

i was talking about global method valuelist, see the valuelist editor. You can select a global method that will load in the data you want under 3 different scenario’s (3 total when using typeaheads)

Can you expand on what these 3 scenarios are please Johan?

See the sample code that we move when you create a global method through the valuelist editor
but in short there are 3 possibilities:

1> give the full list (if both real and display params are null)
2> give a filter list (if display param is set)
3> give a display value back if the real param is set

OK I’m getting there Johan thanks

1> give the full list (if both real and display params are null)
2> give a filter list (if display param is set)
3> give a display value back if the real param is set

So with 1> does the list load all records fully on form load or does it page the data like a form?

When we want to load the valuelist because it is used for a combobox
we will ask the global method to give the complete list.

Then you can load from the database or use cached values,
Do remember that this is called quite often, for every record change.

So it doesn’t have anything to do with form load, only for the record value that we want to show on an ui element that has that global method valuelist.
Also where do you want to have paging??? Its a valuelist shown in a combobox in your example how can we page? We don’t have paging support for valuelist so also not for the global one.

Thanks for that John

Assuming valulists are being fired (in combo box’s) that are on forms that load. and there are no data changes on those forms (there are globals being set to PK’s but none of these Valulists are based on globals) in what circumstances would the console display these warnings???

That’s exactly what we have. Is there a way to determine exactly where in the solution a particular valulist is being applied (which forms etc.) as that seems like my only avenue left now to determine why when I load a form with no related valuelists I get a lot fired (as per the OP).

Appreciate your further feedback.

if they are really fully tablevaluelist then they are only loaded once at first access or when there are changes to the table.

If you want to search for the usage of those valuelist then in 6 you can do “Search for References” in the context menu of a valuelist
In 5 you can do the same by first looking up the uuid of the valuelist (you have to open the valuelistname.val file in a normal text editor)
and then search for the uui of the valuelist in your workspace

But what you also can do is just open a form, and if you then get that loading more then 500 message, it is used right there. in that form