MS Office Forum / General MS InfoPath Questions / March 2006
Form seems to render very slowly
|
|
Thread rating:  |
bwbob - 17 Feb 2006 14:15 GMT I have a form built, connected to a Access databse that retrives some sales information. (Select Customer, retrieve item sales history) I have embedded repeating tables (2) and everything works fine. However, the form reneders very slowly if it returns more than about 50 lines of data. (by slow I mean it can take 3 minutes to complete) I only have 8 data fields that get populated, and the database is only 3 tables with about 97,000 records (9 fields per record). It would seem to me that it should be faster or is this the best that Infopath can do. I used Infopath because it was a quick, easy way to build the form and distribute it to users. Any input greatly appreciated
Greg Collins [InfoPath MVP] - 17 Feb 2006 20:57 GMT What is your view made up of? A series of drop-down list boxes, text boxes, or what?
 Signature Greg Collins [InfoPath MVP] Visit http://www.InfoPathDev.com
I have a form built, connected to a Access databse that retrives some sales information. (Select Customer, retrieve item sales history) I have embedded repeating tables (2) and everything works fine. However, the form reneders very slowly if it returns more than about 50 lines of data. (by slow I mean it can take 3 minutes to complete) I only have 8 data fields that get populated, and the database is only 3 tables with about 97,000 records (9 fields per record). It would seem to me that it should be faster or is this the best that Infopath can do. I used Infopath because it was a quick, easy way to build the form and distribute it to users. Any input greatly appreciated
bwbob - 21 Feb 2006 14:10 GMT One drop down box from the query side, "Select Customer Name" That drop down pull in all the customer names and associated customer number from a table in Access. then, in the data fields, in a repeating section, I have two data controls, "sales order number" and "Invoice Number" Inside this repeating section is another repeating section with the following; line number, item number, description, qty, invoice date. All this information is pulled from one access database. It is set up in three main tables with no primary keys. The customer table has 3 columns; customer name, customer number, and a concantonated number-name. Then I have a sales order headers table with columns order number, customer number,invoice number. The third table is the sales order lines; order number, line number, item, etc.
Everything actually works, and this form is only built to retrieve past sales info that was unable to be imported into a new system. It works fine for customers with less than 50 or so sales orders, but for customers that have 100+ sales orders with maybe 10 lines each, it seems like it hangs forever. It can take 5 minutes to render the form.
I know a query in Access would be faster, but IP let me build a form that looks just like our old system, which requires no training for the end users, plus the database was simple to build. My solution would be nearly perfect if the form renders quickly.
> What is your view made up of? A series of drop-down list boxes, text boxes, or what? > [quoted text clipped - 8 lines] > way to build the form and distribute it to users. Any input greatly > appreciated Greg Collins [InfoPath MVP] - 22 Feb 2006 00:34 GMT How many records are being loaded into the drop-down list? 25, 50, 100, 1000? The more you have here, the slower things will get when you hae more rows in your main table.
Also, if you have a lot of embedded sections or tables in the view, that can slow things down too.
What pieces of your form is getting slowed down? Insert/Delete? Drop-down selction, moving from field-to-field? Is it just certain parts or the entire form?
 Signature Greg Collins [InfoPath MVP] Visit http://www.InfoPathDev.com
One drop down box from the query side, "Select Customer Name" That drop down pull in all the customer names and associated customer number from a table in Access. then, in the data fields, in a repeating section, I have two data controls, "sales order number" and "Invoice Number" Inside this repeating section is another repeating section with the following; line number, item number, description, qty, invoice date. All this information is pulled from one access database. It is set up in three main tables with no primary keys. The customer table has 3 columns; customer name, customer number, and a concantonated number-name. Then I have a sales order headers table with columns order number, customer number,invoice number. The third table is the sales order lines; order number, line number, item, etc.
Everything actually works, and this form is only built to retrieve past sales info that was unable to be imported into a new system. It works fine for customers with less than 50 or so sales orders, but for customers that have 100+ sales orders with maybe 10 lines each, it seems like it hangs forever. It can take 5 minutes to render the form.
I know a query in Access would be faster, but IP let me build a form that looks just like our old system, which requires no training for the end users, plus the database was simple to build. My solution would be nearly perfect if the form renders quickly.
"Greg Collins [InfoPath MVP]" wrote:
> What is your view made up of? A series of drop-down list boxes, text boxes, or what? bwbob - 22 Feb 2006 14:28 GMT About 800 get loaded into the drop down list.(Customer Name). That part loads fast. After selecting the customer name, they click on the "run query" button, which I have remamed "Get Customer Sales History" This is the part that can take forever. There are only 2 reapeating sections, one inside of the other. The outer section has 2 fields, one row. The inner section has 6 fields, and the number of rows is determined by the number of "line items" on the original sales order. Max is about 10. For the slowest customer, the outer section is repeated about 200 times, with the inner section repeated once each time with 1-10 lines. So all total I could be trying to display about 2200 lines of information. For the users, the scrolling is not an issue, since in most cases they will use the "cntrl-F" function to seach for a particular part number or descriptive term, then "Next" through till they spot the original sales order they are looking for. Most of those sales orders contained "Memo's" as line items that need to be checked when the customer re-orders a product (special information not included in the original item description. Thanks for your help by the way.
> How many records are being loaded into the drop-down list? 25, 50, 100, 1000? The more you have here, the slower things will get when you hae more rows in your main table. > [quoted text clipped - 30 lines] > > > What is your view made up of? A series of drop-down list boxes, text boxes, or what? Greg Collins [InfoPath MVP] - 24 Feb 2006 23:30 GMT Okay - my initial worry was that you had a large (800 is considered large) drop-down list *inside* the repeating section. This can slow things down quite a bit. But it sounds like it is outside and populates and displays quickly.
So the problem comes when they query on a particular value from the drop-down list. Right?
The next step would be to identify whether it is the query or the display (or both) which are taking too long.
The easiest way to do this is to make a backup copy of your template, and then remove those 2 repeating sections -- basically a view with nothing but the drop-down list and the query button. Time how long it takes to run the query. If it is snappy, then it is the display which is taking long. If not, discover why your query is taking so long.
If it is just the display, then you need to limit how much is shown on the page at one time. You can do this by creating paging (i.e. filter the outer repeating section based on position, against 2 secondary data fields to specify the range to show (first, last). This way you can show, say 50 - 100 items at a time. You can also hook up a search text box and button to filter the list to only show those items the user wants to see (instead of having them use CTRL+F).
Good luck!
 Signature Greg Collins [InfoPath MVP] Visit http://www.InfoPathDev.com
About 800 get loaded into the drop down list.(Customer Name). That part loads fast. After selecting the customer name, they click on the "run query" button, which I have remamed "Get Customer Sales History" This is the part that can take forever. There are only 2 reapeating sections, one inside of the other. The outer section has 2 fields, one row. The inner section has 6 fields, and the number of rows is determined by the number of "line items" on the original sales order. Max is about 10. For the slowest customer, the outer section is repeated about 200 times, with the inner section repeated once each time with 1-10 lines. So all total I could be trying to display about 2200 lines of information. For the users, the scrolling is not an issue, since in most cases they will use the "cntrl-F" function to seach for a particular part number or descriptive term, then "Next" through till they spot the original sales order they are looking for. Most of those sales orders contained "Memo's" as line items that need to be checked when the customer re-orders a product (special information not included in the original item description. Thanks for your help by the way.
"Greg Collins [InfoPath MVP]" wrote:
> How many records are being loaded into the drop-down list? 25, 50, 100, 1000? The more you have here, the slower things will get when you hae more rows in your main table. > [quoted text clipped - 3 lines] > > > What is your view made up of? A series of drop-down list boxes, text boxes, or what? bwbob - 01 Mar 2006 15:05 GMT Can you feed me a bit more on hooking a text box for searching? That would help with more than one form I am working on.
> Okay - my initial worry was that you had a large (800 is considered large) drop-down list *inside* the repeating section. This can slow things down quite a bit. But it sounds like it is outside and populates and displays quickly. > [quoted text clipped - 37 lines] > > > > > What is your view made up of? A series of drop-down list boxes, text boxes, or what? Greg Collins [InfoPath MVP] - 28 Mar 2006 00:47 GMT You add a text box named "Query" or whatever you want to call it. Then add a filter to your repeating table that uses the contains() function or starts-with() function to compare the value in the Query field against the value of one of the fields in your table.
So for example, you have an email address field in your table that you want to filter by. Create a text box for users to type in all or part of an email address, add a filter to your table that filters for Table/Row/Email[contains(., QueryEmail)]. The preceding is not an exact XPath that you should use but only acts to represent what needs to be done.
 Signature Greg Collins [InfoPath MVP] Visit http://www.InfoPathDev.com
Can you feed me a bit more on hooking a text box for searching? That would help with more than one form I am working on.
"Greg Collins [InfoPath MVP]" wrote:
> Okay - my initial worry was that you had a large (800 is considered large) drop-down list *inside* the repeating section. This can slow things down quite a bit. But it sounds like it is outside and populates and displays quickly. > [quoted text clipped - 15 lines] > > > > > What is your view made up of? A series of drop-down list boxes, text boxes, or what?
|
|
|