How to make a large project? (1 Viewer)

@amorosik

I really think you are talking about an academic/esoteric situation that is most likely unable to ever arise.

ie. Can you comprehend a system that is too big for access development? I just can't personally. I have systems that need more space for millions of records, but that's a different issue. the biggest database I have with thousands of objects is still smaller than 100mb.
 
@amorosik

I really think you are talking about an academic/esoteric situation that is most likely unable to ever arise.

ie. Can you comprehend a system that is too big for access development? I just can't personally. I have systems that need more space for millions of records, but that's a different issue. the biggest database I have with thousands of objects is still smaller than 100mb.

No, is a true project
Million of records not impact on the question posed, the data db is external to the application
You write of 'biggest database with thousand of object'
Can you indicate how many forms, reports, modules this application is composed of?
Does it work on Access 32bit or 64bit?
 
Last edited:
OK, one last try.

Your problem HAS changed a bit from as initially asked / implied, to include the possibility that you COULD have multiple dedicated-purpose app files. (That was NOT evident in the original question.) I will take a stab at this aspect of your project question.

You will have multiple moving parts. As I said before, a detailed planning stage is MANDATORY for this to have any chance. Find how many moving parts / distinct apps you anticipate on having. You MUST do this because you are preparing to do a divide-and-conquer analysis. You will need to know into how many parts this problem divides so you can provide for each dedicated part.

Now, let's say you did that. You have an educated idea of how many distinct apps you will need. The divisions might be along departmental lines. Or your division might be regional with different legalities and requirements for different regions. The division might be topic-related. Doesn't matter HOW or WHY it slices up into parts. The important part is that it does. The next step, now that you have a count on apps, is to decide where the apps overlap in any way, thus suggesting that they will need to share data in some way. This is where the serious planning comes in.

From a previous discussion, I made it clear that multiple Windows tasks CANNOT share RAM-type memory. While that is not 100% true, for Access it might as well be cast in concrete because we have no visibility in MSACCESS.EXE and cannot change how that works. But these hypothetical distinct apps CAN share data files, both conventional and back-end.

Therefore, the next step is to design the files that will be shared. If you can have a common back-end that will NOT be mapped by every task, but WILL be mapped by more than one task, design and LOCK DOWN THE DESIGN of what goes in that one back-end that will be shared. Also consider that building a text-oriented transaction file might be a preferable option in some cases as a way to minimize your use of the limited space of the .MDB / .ACCDB file. For EVERY COMBINATION of apps that must share data between two isolated apps, BE PREPARED to share them in files that might not be inside of Access. For example, a transaction file that is essentially a .CSV text file. And be prepared to rename or erase or otherwise mark that file as "USED" in some way so that you don't try to import it twice. How you do that specifically has to be up to you.

IF you use a divide-and-conquer method, two things happen. First, though the problem might expand, you CAN isolate the parts that are affected by this hypothetical expansion. Second, while this won't prevent some disruption, it allows continuing use of parts not affected by catastrophic changes. AND it won't nearly as often require MASSIVE changes - because you have already divided the problem into pieces-parts. This is the key, though. You CAN'T do the above without enough planning to identify the overlaps and non-overlaps, which means you have to identify the distinct parts that will get their own dedicated sub-apps. So my original discussion on extensive planning remains in place and I stand behind it.

One last thought: IF you were going to ask the question about a project that cannot be divided into applicability segments, go away because that question if asked regarding a monolithic project is unanswerable even in the abstract.

No the problem has not changed
Perhaps those who read the word 'project' immediately thought (this is because usually the Access developers work on a single file) to a single Access file
But already from post9 it was expressly indicated that a 'project' is to be understood as composed of one or more Access files
"..I asked how to organize a project (also understood as a set of multiple Access files.."
 
I will repeat what I said.
The largest front end file I have ever worked on (NO data) was ~ 70Mb and it was a very large application that had numerous sections, invoicing, inventory, contract management, service call management, and workshop repair management.

We could have easily split considerable amount of those into separate dedicated databases with a common backend, but that wasn't how it developed.

So to answer your question - and repeat what Pat said - get a scope of development and agree it beforehand.

As far as Access is concerned I would be really surprised, in fact staggered, if you would exceed it's file size restrictions with just the front end on the data.

The fact that you worked on a project consisting of a single 70 Mbyte form/report/code file, does not mean that there cannot be projects of larger dimensions
 
No the problem has not changed
Perhaps those who read the word 'project' immediately thought (this is because usually the Access developers work on a single file) to a single Access file
But already from post9 it was expressly indicated that a 'project' is to be understood as composed of one or more Access files
"..I asked how to organize a project (also understood as a set of multiple Access files.."

I SPECIFICALLY addressed the "multiple section, larger dimension" issues. If this is not enough, then I repeat that YOU DO NOT APPRECIATE what you are actually asking. I'm trying to be polite, but your continued rejection of what we all have been telling you makes me think that this is becoming an exercise in mental auto-eroticism. (Can't use the exactly correct "M" word here for multiple reasons including censorship and the fact that such a word would negatively affect the forum's online scores.)

And YES the scope has changed as your original request, as clarified in your post #5, asked about exceeding limits by one object.

The question is: how to organize a project to avoid it reaching dimensions incompatible with the limits of the development environment
All other considerations are useless

The "development environment" for an Access project IS the single file MSACCESS.EXE, which works on one object at a time, so there is an implication of a single object there. You later clarified a little bit, but still left something totally open-ended.

I asked how to organize a project (where by 'project' I do NOT mean a single file) so that it can support a growth that cannot be defined from the start

OK, I'll answer it this way. No disrespect intended, but to even accept consideration of a project with undefinable growth limits is insane. No decent manager would ever accept such a project. If I owned a company and some idiot employee calling himself a manager accepted such a project while working for me, that person would no longer be working for me AND would be personally on the hook for liability issues originating from or related to having exceeding business authority. The relevant problem is, in the real world, that a project's internal connectivity issues grow either exponentially or factorially vs. the growth of the number of elements, and NEITHER growth style has a shallow slope.

I watched a U.S. Navy project called "DIMHRS" go belly-up, not because it couldn't be designed at a high level, but because it had so many interactions that nobody could agree on how to do the detailed conversions for interactions between any two branches of the U.S. military that, years ago, had each developed their own system. Which they did because there WERE no easy ways to interconnect systems in the 1950s and 1960s. This little project didn't even have the "infinite growth" problem and $10 Billion (U.S. dollars) was not enough. That amount was where Congress "pulled the plug" but I can tell you it would have continued to grow seemingly without limit.

This description ("growth cannot be defined") is EFFECTIVELY an infinite project which will require infinite resources. Don't you SEE that? If you CANNOT place a limit on it, I guarantee in writing that it won't get done to everyone's satisfaction - potentially, to ANYONE'S satisfaction. But you later gave us THIS question.

how to create/organize a project whose size in terms of number of objects (form/report/code) goes beyond the maximum limit possible with Access

When dealing with Access limits, my previous discussion on "divide and conquer" (into separate and distinct targeted apps) means that you HAVE no Access limits as long as you can still subdivide the problem. All the remaining limits are then imposed by the capacity of your machine including CPU capacity, memory size, disk capacity, network capacity, and internal bus limitations. So buy another few machines and keep growing the pieces-parts. Without specifics, I believe that no other answers are possible. And if you cannot further subdivide, you are stopped by a limit that nobody will be able to surpass.
 
Yes, the use of export/import procedures for single objects on text file is already foreseen (Tim Abell's Vcs)
But I do not think this thing has any importance in relation to the 3d object
I don't know who Tim Abell is, I'm talking about Access. But think of it this way:
1. Single Access file is near its limit
2. Export/Import objects dedicated to a certain aspect of the application to new file
3. New file has fresh limits
If you're certain you will reach the file limits, then divide and conquer from the beginning.

Now, like lawyers in my ranch say: "Assuming without conceding", that you will build that database. I won’t ask who will learn to use your system with 30,000+ forms and reports, or how much time and effort it takes to build it. Instead, how would you move forward now that you have this information? We’re over 90 posts in, so how would YOU begin? You have a wealth of knowledge in this thread. What do you think is the best course of action now? How do you start mindfully?
 
The fact that you worked on a project consisting of a single 70 Mbyte form/report/code file, does not mean that there cannot be projects of larger dimensions
And you academically discussing a notional super sized project doesn't mean you really have one.

I still don't understand why every month you need to redesign the project, unless it's not been well designed in the first place. That's why I would rather not discuss hypotheticals.
 
And you academically discussing a notional super sized project doesn't mean you really have one.
I still don't understand why every month you need to redesign the project, unless it's not been well designed in the first place. That's why I would rather not discuss hypotheticals.
Yes of course, this does not mean that I have one super-large project
But this consideration has no importance in order to solve the problem posed
I could actually have the problem to solve, or I could not have it, this thing has no importance in order to solve the problem posed
Which honestly seems to me to be of interest to everyone
In this sense I do not understand the reason why I see answers that try to belittle the need to use a more or less standard technique that allows you to overcome the limits (not very large I would say) that are imposed by the single Access file
 
I don't know who Tim Abell is, I'm talking about Access. But think of it this way:
1. Single Access file is near its limit
2. Export/Import objects dedicated to a certain aspect of the application to new file
3. New file has fresh limits
If you're certain you will reach the file limits, then divide and conquer from the beginning.

Now, like lawyers in my ranch say: "Assuming without conceding", that you will build that database. I won’t ask who will learn to use your system with 30,000+ forms and reports, or how much time and effort it takes to build it. Instead, how would you move forward now that you have this information? We’re over 90 posts in, so how would YOU begin? You have a wealth of knowledge in this thread. What do you think is the best course of action now? How do you start mindfully?

It is a developer who has created a procedure that can be found with the name vcs-access and that allows the export of all the objects contained within an Access file to a text file, and the corresponding import to recreate the original project

The procedure for dividing a single-file project into a multi-file project is not so trivial, in addition to the division of forms / reports / code on different files there are many other aspects to consider, for example:
- maintain common code modules or not
- how reconnect forms/reports to data tables in case an updated Access file is provided
- how to monitor the use of available memory
- and others

How do I start?
Surely trying to understand what the real limits of the objects that can be managed by a single Access file are, because from some experiments already performed it seems that they are not so well defined
The second step is to understand exactly what is meant by "system resources" because from some tests performed I have not yet been able to find the type/value of Windows memory that would be exhausted and that would cause the program to block
These are the initial steps, and then all the others related to the techniques to allow the project to be updated without causing disturbance in the normal operation of the user
 
I SPECIFICALLY addressed the "multiple section, larger dimension" issues. If this is not enough, then I repeat that YOU DO NOT APPRECIATE what you are actually asking. I'm trying to be polite, but your continued rejection of what we all have been telling you makes me think that this is becoming an exercise in mental auto-eroticism. (Can't use the exactly correct "M" word here for multiple reasons including censorship and the fact that such a word would negatively affect the forum's online scores.)

And YES the scope has changed as your original request, as clarified in your post #5, asked about exceeding limits by one object.



The "development environment" for an Access project IS the single file MSACCESS.EXE, which works on one object at a time, so there is an implication of a single object there. You later clarified a little bit, but still left something totally open-ended.



OK, I'll answer it this way. No disrespect intended, but to even accept consideration of a project with undefinable growth limits is insane. No decent manager would ever accept such a project. If I owned a company and some idiot employee calling himself a manager accepted such a project while working for me, that person would no longer be working for me AND would be personally on the hook for liability issues originating from or related to having exceeding business authority. The relevant problem is, in the real world, that a project's internal connectivity issues grow either exponentially or factorially vs. the growth of the number of elements, and NEITHER growth style has a shallow slope.

I watched a U.S. Navy project called "DIMHRS" go belly-up, not because it couldn't be designed at a high level, but because it had so many interactions that nobody could agree on how to do the detailed conversions for interactions between any two branches of the U.S. military that, years ago, had each developed their own system. Which they did because there WERE no easy ways to interconnect systems in the 1950s and 1960s. This little project didn't even have the "infinite growth" problem and $10 Billion (U.S. dollars) was not enough. That amount was where Congress "pulled the plug" but I can tell you it would have continued to grow seemingly without limit.

This description ("growth cannot be defined") is EFFECTIVELY an infinite project which will require infinite resources. Don't you SEE that? If you CANNOT place a limit on it, I guarantee in writing that it won't get done to everyone's satisfaction - potentially, to ANYONE'S satisfaction. But you later gave us THIS question.



When dealing with Access limits, my previous discussion on "divide and conquer" (into separate and distinct targeted apps) means that you HAVE no Access limits as long as you can still subdivide the problem. All the remaining limits are then imposed by the capacity of your machine including CPU capacity, memory size, disk capacity, network capacity, and internal bus limitations. So buy another few machines and keep growing the pieces-parts. Without specifics, I believe that no other answers are possible. And if you cannot further subdivide, you are stopped by a limit that nobody will be able to surpass.

"..forum's online scores.." What is this thing here? Is there anyone who gives us points?

The scope has not changed
1- Yes, the "development environment" is Access.exe
2- Yes, Access.exe works with a single file at a time
3- And for a single Access file there are maximum limits to the manageable objects
There is no doubt about 1,2,3

And no, "..so there is an implication of a single object there.." because this contrasts with the 2nd and 3rd lines above

And so if I ask "..how do you set things up from the beginning to allow this growth without preventing the correct overall functioning?.." it seems clear that one of the possibilities (there could be other?) is to work on a multi-file PROJECT

From the answers it seems to me that, as already written above, the term I use PROJECT is confused with the SINGLE ACCESS FILE
And more than specifying that it is NOT like that (post9), I don't know what to do
 
Dear Amorosik,

May I ask what your project is and what it's for? I'm intrigued. Genuinely! Especially about the purpose(s) of the new objects you will be adding continually.

:)
 
The classic system for business management
Which started with the usual parts dedicated to sales, warehouse, accounting and then is expanding
In order to avoid reaching a critical point, I want to prevent any "explosions of objects"
And therefore I would like to modify the structure of the project making it capable of supporting a growth, which obviously will not be of 30k forms, but could overcome the technical limits imposed by the single Access file
 
At last. An actual description of the mythical Unicorn project.
Absolute worst case you'll possibly need 2 or 3 different front ends, connected to a single proper DBMS.

Only taken the thick end of 100 posts for you to actually write something that made sense.
 
The classic system for business management
Which started with the usual parts dedicated to sales, warehouse, accounting and then is expanding
In order to avoid reaching a critical point, I want to prevent any "explosions of objects"
And therefore I would like to modify the structure of the project making it capable of supporting a growth, which obviously will not be of 30k forms, but could overcome the technical limits imposed by the single Access file

Sounds like a sensible consideration.

You can probably achieve this with dedicated front ends for specific areas of the business which only contain objects relevant to that area. How far you split it is totally up to you. In my opinion, for all practical purposes, splitting a front end in this way will answer all your concerns about exceeding the limits of Access, and will probably be beneficial in other ways too, even if you never hit those limits.

Hope that helps!
 
There was a DEV folder (actually set of folders) where I did the modifications in isolation. The DEV copy of the FE pointed to a DEV copy of the BE, and NEITHER was visible to any users. When I was ready to do more strenuous / rigorous testing, I moved a copy to the TEST set of folders. Again, users never played with those folders. IF I had to go back to the drawing board, no harm and thus no foul. That was where I did compliance testing, destructive testing, ... whatever was needed. TEST files were simply snapshot copies of DEV files.

When I had something ready to become public, I had a third set of folders called STAGING. In the staging folder, I did some final polishing and preparation steps such as turning off the ribbon, blocking use of the SHIFT key on startup, and other things to secure the app as a whole. The only testing that occurred during staging was to verify that the process of securing the DB was correct. Finally, when all was ready to go...

If it was FE-only then the STAGING FE was moved to the PROD folders and pointed to the BE file.
Did you inadvertently leave out a UAT environment when describing your process? - so the users have a chance to review/verify the functionality expected, implement and test urgent fixes and set up a change log and to get sign off from the users/project owner?
 
You can probably achieve this with dedicated front ends for specific areas of the business which only contain objects relevant to that area.

That has been suggested multiple times - the first time around post #15 and I've lost count of the number of times since. However the OP doesn't accept it as a solution. I'm guessing that the point they are trying to make is one (or more) of those apps grows until it hits the access limits. The OP also appears to not accept that that those limits are extremely high.

The actual limits have been stated in the early part of this thread but there is a limit of 32767 objects - forms/report/modules and controls for example. A typical form would have say 100 controls (many will only have 20 or 30) so just looking at forms with an average of 100 controls each, you would be limited to 324 forms - at the lower number of controls, perhaps 1500.

There is also a limit of 1000 modules - which includes forms with code - so if all your forms had code you would be limited to 1000 forms.

At 35 new forms a month (the OP's stated expectation), you've got between 10 and 42 months before you start hitting the limit.

The solution is to divide and conquer (separate apps, use of libraries for common code/forms/reports) and planning - but whatever the solution decided, it depends on the project specifications - the who, what, where and why - as to what that solution would be. And that the OP is unable or unwilling to provide.

I've been developing in Access for nearly 30 years, anything from small apps to global apps for multi nationals and have never approached the limits of access. The one exception being an app that worked fine on 8gb machines, but some users only had 4gb and it struggled - but this was a memory issue solved with a hardware upgrade and was a long time ago.

And memory usage is down to good design - no huge (50,000+ elements) arrays/collections/dictionaries/recordsets, don't have 100 forms open at the same time, etc
 
At last. An actual description of the mythical Unicorn project.
Absolute worst case you'll possibly need 2 or 3 different front ends, connected to a single proper DBMS.

Only taken the thick end of 100 posts for you to actually write something that made sense.

It is neither mythical nor unicornIt is a classic project
I would dare say simple, but with many objects
And it is not just a matter of overcoming the technical limits of a single file but also of reducing the size of the Access files on which you work Instead of working on a single 100Mbyte file you work on 4 of 25-30 Mbyte each
I hope to get a more secure and stable system

"..Only taken the thick end of 100 posts.."
For the purposes of solving the problem described it was not necessary to explain the specific case
 
The actual limits have been stated in the early part of this thread but there is a limit of 32767 objects - forms/report/modules and controls for example. A typical form would have say 100 controls (many will only have 20 or 30) so just looking at forms with an average of 100 controls each, you would be limited to 324 forms - at the lower number of controls, perhaps 1500.

There is also a limit of 1000 modules - which includes forms with code - so if all your forms had code you would be limited to 1000 forms.

At 35 new forms a month (the OP's stated expectation), you've got between 10 and 42 months before you start hitting the limit.

Form with moduless are actually 634
Report with modules are actually 299
Modules of code are actually 109
The counting ("..you've got between 10 and 42 months..") needs to be redone

This is why I said that one of the first things to do is to actually measure what the technical limits are
Already now they do not appear to be those described in the Microsoft documentation
 
Last edited:

Users who are viewing this thread

Back
Top Bottom