Diese Seite mit anderen teilen ...

Informationen zum Thema:
Forum:
WinDev Forum
Beiträge im Thema:
9
Erster Beitrag:
vor 3 Jahren, 4 Monaten
Letzter Beitrag:
vor 3 Jahren, 4 Monaten
Beteiligte Autoren:
Tor-Bjarne, Fabrice Harari, DerekT, Peter Holemans

WinDev - Page loaded table

Startbeitrag von Tor-Bjarne am 13.02.2015 10:59

Hi,

I`m come to WinDev from the Clarion language and have a couple of questions.

In clarion we could have a "page loaded table" out of the box, this table object only load as many lines into the table that there are place for on the screen initially (30 as an example).

When I press next-page/Previous page arrow up/Down the table object (browse in Clarion) loads the next 30 records, the cool thing about this is that if my table actually contains 1 million records it`s fast to load "all" anyhow.

I tried the memory table with a limit of 50, it`s fast as hell - but - it only loads 50 records, thats it, so I cant do a page-down and load the next 50 records making the limit feature on a mem-table pretty useless?

I`m moving over "old Clarion app users" to my new windev app, but I ran into some problems.:

1. Using a modern approach (XML) to move data I discovered that the native driver do not handle large XML files ~40 to 120Mb, Here WinDev have a problem. (Going to report this to PCSoft) - So I had to make a split large file class adding Header (if not first part) and end part of xml to each smaller split-file (¨17 Mb) This worked but I had to analyze each XML file and write extra code.

2. Of my customers, electricians tends to have minimum 80 000 products, this slows down table loading pretty much as I do every time a user click the [Search] button - Here page-loaded table would help a lot.

I know I`m not the only one coding in WinDev that comes from Clarion, how are you solving the "Page loaded browse", without coding yourself to death?

Fun fact is that entity framework, .NET do not seem to have this obvious functionality in their toolbag eighter ;)

Cheers
Tor-Bjarne

Antworten:

Hi Tor-Bjarne,

for your table, the behavior you are describing is the same as creating a windev table linked directly to the file (not to a query) and choosing "data file with direct access". If I remember correctly, you also need to remove the "proportional scrollbar" option

In that case, only records displayed are read... And that is the ORIGINAL way of working for the files tables in windev... Everything else was added later :-)

However, each record is read individually (ie NOT query like), and that increases the network traffic, especially if the user decide to scroll to the bottom of the table...

It's always a trade off

Best regards

von Fabrice Harari - am 13.02.2015 11:30
Hey TB,

Have been requesting such functionality (page based grids -> loading of the grid by page) since V7.5 as I have seen and used this feature in many other technologies since the mid nineties). I do understand it would impact the underlying architecture of WD heavily... However, since PCS hasn't considered it for more than 10 years, I guess you can forget about having it as a native feature...

So, either:
- you'll have to handcode it yourself. Going OO should allow you to do that in a generic way I guess.
- you don't allow unfiltered grid loads on large tables/queries by the end-users... In general, nobody is going to look at 80.000 lines in detail except for an export or so.

Just my 2 cents,

P.

von Peter Holemans - am 13.02.2015 11:37
Hi Fabrice - Your save the day again!

A quick follow up question. - Can I switch on/of query-memory/Default mode table with code?

Then customers with large tables get "Standard behaviour", and clients with small tables get query-memory?

Cheers
Tor-Bjarne

von Tor-Bjarne - am 13.02.2015 11:39
Tor-Bjarne

Different approach required maybe.

I have found that using classes and arrays is much faster for loading as most of the processing is done in memory.

Now there are others who understand this much better than I do - Check out the wxLive Hangouts on Google.
Many examples of this type of scenario or have a look at Pete Holmans class examples which if you email him can be downloaded.

It is more (different) programming if converting an app but is actually much quicker once you have the basic class structure/methods written.
I can load 200,000 plus records into a table in sub 2 seconds across a vpn.

Basic principle...
Class based on datafile, declare an Array of this class.
Run query - Use FileToArray() to load the result.
Table control is bound to the array - TableDisplay(MyTable,taInit) displays the data.

To test the principle of this you can use a structure+array declared in the window to get the same result.

von DerekT - am 13.02.2015 11:41
Quote
In general, nobody is going to look at 80.000 lines in detail except for an export or so.


Hi Peter I do agree - but for a "normal" client with

von Tor-Bjarne - am 13.02.2015 11:51
Hi thank you DerekT,

I will consider this ;)

Cheers
Tor-Bjarne

von Tor-Bjarne - am 13.02.2015 11:53
Hi Again

I do not know if you can switch from meory to file by code, as I've never tried...

But a simple copy and paste of your table, a change of settings, and makinng the one you want visible is an easy work around

Best regards

von Fabrice Harari - am 13.02.2015 12:55
Hi Fabrice,

Your are right again, I will try this first :)

Cheers
Tor-Bjarne

von Tor-Bjarne - am 13.02.2015 18:07
Zur Information:
MySnip.de hat keinen Einfluss auf die Inhalte der Beiträge. Bitte kontaktieren Sie den Administrator des Forums bei Problemen oder Löschforderungen über die Kontaktseite.
Falls die Kontaktaufnahme mit dem Administrator des Forums fehlschlägt, kontaktieren Sie uns bitte über die in unserem Impressum angegebenen Daten.