Hugely long time lurker (maybe 10 years reading the dope online and skimming boards) finally breaking my vow of silence.
I work as a technical writer in construction proposal development. My company bids on work ranging from $10k to $200MM and the time, effort, and content we put into these proposals obviously depends heavily on the project value; however, there are currently no protocols or standards in place that govern the exact deliverables to include based on the importance and value of each project.
As a basic example, for a $10k project, I will only bother to throw the name and address of an addressee on a plain, blank cover. For a project valued maybe over $1MM, I may spend 3 hours designing a custom cover to impress our clients with all the graphics, bells, and whistles. There’s no hard and fast rules, though, so they need to be established:
I want to make a checklist where I can perhaps enter $1MM as the value of a project and on a separate list\page, the entry “Custom Cover” will appear. If I change the value to $10k, that entry will be replaced with “Blank Cover.” Eventually, I’ll be able to print a single document that lists everything the proposal will need based on that value and about a million other options for which I will use checkboxes\option buttons.
Yeesh, I hope that all makes sense. Anyway, I am very capable with the fineries of MS Office 2010 including controls and macros, some Visual Basic, and all of the Adobe CS5 Suite.
Anyone see a path-of-least-resistance for me? Thank you!
This could be done very easily in Excel. Either create a hidden page with a table and use the VLOOKUP function to get the value from the table, or write a simple VBS macro with a series of if statements.
The VLOOKUP solution is simpler, but many people have a hard time getting it, so I’ll explain a bit more.
Create a page called Table. Column A has 10000, 100000, 1000000, 10000000. Column B has Black Cover, Fancy Cover, Custom Cover, Singing Telegram.
Now, go back ot your first page. Column A has the value of each contract, and you want the cover type to show up in column B. So, in B1, type this: =VLOOKUP(A1, Table!$A$1:$B$5, 2, TRUE). Then copy it to the rest of column B. The first three parameters are pretty obvious. The last parametermeans that you want a “Price is Right” match–whatever row in the table comes closest to the actual price in A1 without going over. That’s it.
I think you are better off hiring a freelancer online to do based on your spec it rather than do it yourself. If company pays you well for being a technical writer, that’s what you should concentrate on :-). In fact, given the apparent simplicity of what you are describing, a competent guy could probably do it for you “in real time” with you giving advice over Skype and him showing you results via remote collaboration app.
Best platform would be a GUI framework that natively runs well on Windows and that is familiar to lots of people (saving you money on expertise). The best such is .NET WinForms (using either C# or VB.net language). Two not so convenient competitors are VB6 and RealBasic.
I think falcotron has the correct approach. The vlookup is table-driven, so it’s easy to adjust. Or you could “hard-code” IF formulae for the simple cases.
I had to write a report generator once that worked much like you describe. It had to accept certain values from the user and then dynamically build the report.
This was a long time ago but the only way I was able to do it was to use what I think were called macro variables. These were essentially pointers to memory locations and the value in that location would change depending on program execution.
If you really like coding, it is a serious mental challenge since it’s oh so very easy to think value A in a particular memory slot when in fact it is value B. Then when the program doesn’t work, you have to start setting break points and traps and peeking into memory. But if you get it to work correctly, it’s a real rush.
You apparently don’t need to build the report dynamically but can start with a check list so maybe you won’t need to do that. IDK. If you do, VB.net may let you use memory pointers but I think that is considered “evil” or whatever by object oriented developers. You might be able to get the same result by manipulating some special sorts of classes and exposing their variables to the main program. I’m just learning javascript so I don’t know very much about OO programming.