Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TouchToneTommy on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Deploying Project with Many forms

Status
Not open for further replies.

SeeThru

IS-IT--Management
May 2, 2002
585
GB
Hi All

I'm looking to move away from Access. At the moment, each new project is a separate Access database. We probably create 5 or 6 new ones a week.

I would like to deploy this as a windows application. However, I am concerned that I will probably be adding or changing forms daily. Not all users need all forms - it would depend on thier roles.

What is the best way to deploy these forms as needed - i.e. can I get the client workstations to download only the forms they need for that session, or can I compare the local forms to the master version, and pull updates as needed?

Or would a simpler option be to create many applications, similar to the current process of creating a new Access database.

The application is at planning stage, but I can see it getting very bit eventually, with the numbers of form in the thousands, although many will be rarely used.

Any suggestions or links appreciated!

SeeThru
Synergy Connections Ltd - Uk Telemarketing and Telesales Services
and
Synergy Mobile Solutions - UK Mobile phones, land lines and call packages

 
It kind of depends on what you are doing with the forms and how involved each one is as to whether I would say you should to separate applications. I mean there is nothing wrong with doing separate applications for each one, but that kind of depends on how deployment works in your company. If there are fairly simple or do pretty much the same thing, say like a data viewer, then you could look into doing some type of main program with plugins scenario. To get them to the users you could setup where the main program gets a list of available plugins (text file, checks remote directory, database list, etc) and they can choose what they need or simply have it download all available. If each is going to be more complex and varied you could still do plugins, but generally I would then suggest each to it's own application.

-I hate Microsoft!
-Forever and always forward.
-My kingdom for a edit button!
 
Having thousands of forms seems a bit excessive. I mean - it may be necessary in your case, but maybe not. I would take a review of the various forms and see if there is some way to "group" forms together. If two forms only differ by a datasource, then the datasource could be dynamically set when the form is loaded, thereby reducing the number of necessary forms. You would then need to just manage the datasources (SQL view, XML feeds, etc). If the forms only vary slightly as far as controls go, you still might be able to turn features on and off depending on the case.

As an example, I have a reporting application I developed that has some 500 SQL Server Reporting Services reports in it. About 300 of the reports do not need any input parameters. They all are opened via the same form and I pass the appropriate reportname as a parameter to the form. For the other 200, I have about 20 different parameters forms to feed all the reports. The application opens the appropriate parameter form, collects the necessary data, and then uses the SAME form as the non-parameterized reports, again passing the report name and also the parameters. This means I have only about 30 forms (main screen, report form, parameter forms, couple of admin forms) for all 500 reports.

Depending on your network and the deployment model, you may be able to leverage the ClickOnce deployment feature of the .Net framework. This will allow you to set an option that will automagically update the application each time it starts (or closes) and get all the latest changes. You then need only to manage the permissions to the various forms/data via plugins/permissions sets/etc.

This sounds like a project that needs a bit of advanced planning. I suggest you take some time and go over various options. You might even want to try a couple different scenarios out and see which way works better for your case.

=======================================
People think it must be fun to be a super genius, but they don't realize how hard it is to put up with all the idiots in the world. (Calvin from Calvin And Hobbs)

Robert L. Johnson III
CCNA, CCDA, MCSA, CNA, Net+, A+, CHDP
VB.NET Programmer
 
Thanks for the feedback.

For a bit more detail, the forms are primarily for telemarketing projects.

I will already be using some of the suggestions with turning elements of the form on and off with the options - but there are always exceptions, and I would need to have the ability to override the default form with a customised one. It's usually fairy simple things like adding one or two extra fields, or adding a set of fields for specific questions and answers.

Sorwen: Are there any guidance notes for incorporating plugins?

mstrmage1768: The clickOnce should help, but I don't want to push out unneccesary changes if possible - for instance, only 1 user from 30 may need a new form, so only they need it on the local machine - I think ClickOnce will send the change to all users. Given the potential application size, it could flood the network when everyone logs in in the morning.

SeeThru
Synergy Connections Ltd - Uk Telemarketing and Telesales Services
and
Synergy Mobile Solutions - UK Mobile phones, land lines and call packages

 

This sounds like the perfect situation for a web-based system on an Intranet. You can make all the changes you want, have custom forms for certain users but not others, and no need to install anything on users' desktops.

You would need a fairly robust machine for the web server, but it would probably still be cheaper and easier.



I used to rock and roll every night and party every day. Then it was every other day. Now I'm lucky if I can find 30 minutes a week in which to get funky. - Homer Simpson

Arrrr, mateys! Ye needs ta be preparin' yerselves fer Talk Like a Pirate Day!
 
Thanks jebenson

I was looking as windows applications as that is where my background is, and it does seem to be more powerful. I'll investigate the options, and what I would lose compared to a traditional program - but you are perfectly correct it would solve all the updates problems!

SeeThru
Synergy Connections Ltd - Uk Telemarketing and Telesales Services
and
Synergy Mobile Solutions - UK Mobile phones, land lines and call packages

 
You don't need to use a web application to do an easy to maintain Windows application. With Click-Once deployment, you can set it to autoupdate to get any new forms, .dll's, executables, etc. You can even set it so that the Windows application is only available from a URL or UNC path instead of something which is installed and lives forever on the users machine.
 
Are there any guidance notes for incorporating plugins?"

Not that I found. It might sound bad, but really all it came down to for me was playing with reflection. I still don't understand half of what I did, but I could do it again and works. I don't have any best practices suggestions or anything.

If it is simply a matter of fields getting added/removed you might design the form in such away that it could build itself. I don't know where you are pulling the data it will use from, but for instance if you were always pulling 10 fields from a database you could hard code those. You could then have it create and position text boxes and labels on the fly if person X needed extra fields or if item Y required 10 extra things filled out. Then if fields suddenly had to be added the form wouldn't have to be updated as it would just do that based off the change in fields.

-I hate Microsoft!
-Forever and always forward.
-My kingdom for a edit button!
 
I've used reflection and .dll's in the past to add new forms as well. It worked nicely. The only difference is that it was for new forms -- everyone got the new forms.

I would consider using generic type forms as Robert suggested. If some of these forms are simple data-entry forms, you could develop code to automatically populate the forms with the needed controls (DateTimePickers for DateTime columns, NumericUpDowns for Integer columns, etc). Then all you would need is a settings table for your application to use to read in the tables which to generate forms for. Yes, you will have some which are specialized and require brand new forms to be developed, but I'm sure there is a compromise.

I think the issue you are running in to is that your project is unusual as Robert also eluded to. I doubt anyone who has responded here has been in a situation wherein we were required to develop 5 to 6 new databases per week. It seems like it would be hard to maintain and hard to get business done. But if it works, it works. That being said, I would prefer to make the project more dynamic as I noted above instead of continuously developing new objects within the same project.
 
Just thinking about the earlier comments, with a bit of work, I could build a programmatic form designer - give it the label, data source, size of box, combo source etc, and it could then automatically lay out the form.

This would work for 90% of the projects, hugely cutting down the required changes to forms. More complex ones could then link to a web based form, or just require an update.

Thanks for all the help.

SeeThru
Synergy Connections Ltd - Uk Telemarketing and Telesales Services
and
Synergy Mobile Solutions - UK Mobile phones, land lines and call packages

 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top