T
Tom
Hi all – need some high level guidance for a new project – hope
somebody can offer some insight.
Basics :
The company is changing vendors for some 3rd party supplied business
software (e.g., timekeeping system & others). Our proposal estimating
database used for developing cost estimates is homegrown (but not
written by me - the developer has moved on). The changes to the other
software will break the current estimating database, and I’ve been
tasked with fixing it. After poking around a bit, I’ve decided that
its better to rewrite than to tinker with the core of the exiting
system.
The good news is that the output reports are all well defined –
basically I need to reproduce current reports with some expanded
functionality and to accommodate changes imposed by the external
software systems.
My Problem:
One summary report is very complex. Basically a roll-up report
breaking down the various costs and revenues into about 60 different
line items, each with its own equation, several building on other line
items. In addition, the end users would like the ability to combine
several different proposals into one summary report (e.g., for ease of
estimating they will break the project into different phases, but want
one summary output report covering all the phases).
Potential Solutions:
1 – base the report on a query with as many of the fields as possible,
using domain functions to get anything that is missing. This seems
like it will be hard to maintain since the query will be very long due
to the number of calculations AND with use of domain functions
response could be slow.
2 – do all the calculations in code on an unbound report and put the
values into the correct fields in the report’s Open/Load event. This
seems easier to maintain since the math for each value will be
individually addressed in code – minor tweaks can be made without
dealing with some monster SQL statement, but I worry about response
time.
3 – set up a class module to encapsulate all of the logic and base the
report on that module.
I’ve never had a need to develop class modules in the past, so its
unclear to me if its appropriate here. Will a class module offer any
speed advantages over options 1 or 2 (current system is slow due to
some design choices – I need to improve upon the response speed)?
Will it result in more maintainable code in the future? How much
extra work will it be? Other advantages/disadvantages?
I know this is a fairly open ended question without a lot of details.
Any thoughts would be very appreciated.
Tom
somebody can offer some insight.
Basics :
The company is changing vendors for some 3rd party supplied business
software (e.g., timekeeping system & others). Our proposal estimating
database used for developing cost estimates is homegrown (but not
written by me - the developer has moved on). The changes to the other
software will break the current estimating database, and I’ve been
tasked with fixing it. After poking around a bit, I’ve decided that
its better to rewrite than to tinker with the core of the exiting
system.
The good news is that the output reports are all well defined –
basically I need to reproduce current reports with some expanded
functionality and to accommodate changes imposed by the external
software systems.
My Problem:
One summary report is very complex. Basically a roll-up report
breaking down the various costs and revenues into about 60 different
line items, each with its own equation, several building on other line
items. In addition, the end users would like the ability to combine
several different proposals into one summary report (e.g., for ease of
estimating they will break the project into different phases, but want
one summary output report covering all the phases).
Potential Solutions:
1 – base the report on a query with as many of the fields as possible,
using domain functions to get anything that is missing. This seems
like it will be hard to maintain since the query will be very long due
to the number of calculations AND with use of domain functions
response could be slow.
2 – do all the calculations in code on an unbound report and put the
values into the correct fields in the report’s Open/Load event. This
seems easier to maintain since the math for each value will be
individually addressed in code – minor tweaks can be made without
dealing with some monster SQL statement, but I worry about response
time.
3 – set up a class module to encapsulate all of the logic and base the
report on that module.
I’ve never had a need to develop class modules in the past, so its
unclear to me if its appropriate here. Will a class module offer any
speed advantages over options 1 or 2 (current system is slow due to
some design choices – I need to improve upon the response speed)?
Will it result in more maintainable code in the future? How much
extra work will it be? Other advantages/disadvantages?
I know this is a fairly open ended question without a lot of details.
Any thoughts would be very appreciated.
Tom