I have two questions - one is mainly for advice on structure/implementation and the other is more technical in nature.
 I'd like to develop a modular database with some degree of control over the active and inactive modules. In other words, I want to use my original database as the "foundation" and add modules to this barebones application. Additional modules (which would be displayed in tab or subform format) would appear when and if the module is loaded. So if I download the base application, let's say an Accounting App, and decide that I want to be able to process statements, then I could download an additional installer that would add the "Statement module" - or for the sake of explaination, "Statement tab". The tab would be empty in the base application, but as soon as I install the new module, the tab would be activated. The same would be true in reverse... If I didn't want the module, I could unistall it and the tab would disappear from within the application. I hope this makes sense as I would love to hear some advice or suggestions on the easiest and most efficient way to handle this task.
My approach at the moment would be to create the "base" version of the software to include ALL of the possible modules - but keep the ones which are not standard hidden from view. Then, I was considering creating a separate "installer" (one form Access database that simply makes the hidden modules visible) for each of the individual modules. The only concern I have with this approach is that the application file would be fairly large. I'll gladly entertain any ideas for how to approach this. Thanks in advance for any suggestions.
 The technical question I have is in regard to the icon displayed on Access MDB or MDE files. I'm going to deploy the final project across a VPN network to several offices and I'd like to hide Access as much as possible. I'm doing everything I can to make the project look and feel like a standalone application. (Hiding the application window, implementing graphics into the forms, etc) To date I've been hiding the "true" Access MDB file in a nested directory on a networked drive and then creating a shortcut to the file on the remote machines. I did this because you can change the icon of the shortcut to one that's custom. When I deploy the project with an installer however, the original Access icon is visible in the Start Menu and Quicklaunch bar. My question is, is there a way and if so, how do you change the default Access icon on the MDB or MDE files? Has anyone figured out how to do this? Again, thanks in advance for any suggestions.
There's several ways of setting up a modular application. You could install the additional module within the existing application directory structure, which would be the most logical place to put it, and then have some code that checks for the modules within that directory. If it finds it you could then link tables etc, and set the relevant tab option to Visible Else "You require X Module to perform this action".
Another way of doing it is to have an installation script that allows you to install the module anywhere the user wants, and updates a reference table in the base database. From there you can use a similar piece of code to check that it is the correct module, and perform all links and relevant steps when the base is opened.
As for the Icon. This is a simple change. Go to Tools > Startup and you should see the Icon setting for the application. When this is blank Access will use the default Access Icon, but if you specify one, then it will use that. If you are to use a non-standard icon, by which i mean a custom icon, remember to include that icon in the base applications directory structure.
To build a 'modular' database system you could use some of the active x controls that come with Windows that you can use in Access along with some system tables that have some meta data to control your application.
For example, to view and edit data you could use a tree view and a data grid control (like windows explorer in appearance) on one form. The tree view would contain a list of all the tables, queries and actions that the user is allowed to do. You would control this access through your system tables. When the user double-clicks an item in the tree the data grid is loaded with the data or an action is processed. The SQL required can be stored in the system table. Any updates you want to add would be seen by all the user straight away.
If you wanted specialised forms that can't be displayed as a data grid then you would have to use an Access form, however you could try to re-use the same forms if possible.
You could use ADO to process the SQL and VBA to generate the SQL (filling in the parameters for example)
By storing the SQL and available tables/queries and forms in a system table you can easily manipulate your front-end. You would need to have some good VBA to control everything though.
hi there .. looks like quite a big taks you're planning there.
i guess you can hide the forms, codes, tables from the user's view but they are still there which will give you a large application. you can as well write some scripts to import parts of the application from that master app using the TransferDatabase method (or delete to "deinstall").
I was thinking about something quite similar to develop a kind of Base Solution where the developer can choose from a set of general forms, modules, classes to build a foundation for a new App.
There are 2 hidden functions in access that will script out to a text file any object in access. The functions are Application.LoadFromText and Application.SaveAsText. To see these functions you need to goto the object explorer and right-click on the objects and select 'Show hidden members'. You can then use the functions in your code.
I have a backup app i built that catalogues the whole database and then exports them to text files. I guess if you just had the basic backup elements and all of your modules in there, it would pretty much do what you are asking. It is also revision based, so you can track your changes through the different rvision documents.
If you would like a copy of it then give me a shout and i'll throw it together for you. (i have it built into an app im building at the moment, and it has been a godsend so far, but it wouldn't take me long to setup so that it's ready for you to import it ito your own database.)