The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

User to create table (forms created from table dynamically)

Can anybody recommend articles about writing an engine which ultimately will allow users to dynamically create forms?

Our biggest client have asked for this: 
A “table & form creating engine”.  Thus, a user (not just an ordinary user – but a clued up / super user who will know datatypes etc) chooses to create a new table, with x number of fields.  The user will select the type of field and the size where applicable.  Forms must dynamically be created based on this table setup.  (The tables should be able to be appended later on.)

Oh by the way, the environment I’m working on is MS Dynamics Ax.

Any feedback will be greatly appreciated, even if it’s not specifically for MS Dynamics Ax, we’re still in the early planning stage.
Thursday, May 29, 2008
I'm not saying this is what you should use, probably not, but I'm just suggesting that maybe something along these lines?
A form grid like this is created using dhtml with little effort and the input fields are scooped up as a enumerated collection on the server, so why mess with naming them?
(Assuming I have understood what you wrote correctly of course, which is a risky bet to begin with :-/)
Mikael Bergkvist Send private email
Thursday, May 29, 2008
I think Microsoft created a product specifically for this purpose (or they bought it from somebody else).

They call it "Microsoft Access".

So, if YOU want to duplicate a subset of such a successful commercial product, you go for it.

Personally, I'm not fond of projects so open to loosey-goosey requirement creep all over the place.  No matter WHAT you do, somebody is going to second guess you.  If you ARE successful, you've either created a maintenance nightmare, or put yourself out of business.

This works for a company like Microsoft, which basically says "Here it is, buy it and use it, but we aren't going to fix every difference of opinion you have with us."  A contractor usually can't say that.
Thursday, May 29, 2008

I've ranted out here before about forms that mirror tables in the database. You could probably search for terms like "data-centric" and "user-centric" to find my posts. The bottom line is that forms created directly off of tables are "data-centric" and end up being a real pain for users to understand and use. They don't correspond to a specific task that the user wants to perform. Instead, they correspond to the data behind the task forcing the user to understand such abstract concepts when they really shouldn't have to. They also don't lend themselves to being customized to suit the business rules that are required to perform the specific task in question.

So I would strongly recommend against doing this because as someone else pointed out, you are basically giving the user the equivalent of Access or SQL Server Management Studio. And what user would really want to have to use that on a daily basis to get their work done. Forms engines off of database tables always sounds like a good idea at first. But when you finally get done and realize that all you have is the equivalent of SQL Server Management Studio which no one wants to use. And you just wasted all of that time for nothing.
dood mcdoogle
Thursday, May 29, 2008
I did a project like this a few years ago in a VB-like language. It was fun and modestly successful.

The problem you may get into is more and more complicated dependencies between fields. For example: "if this is a joint account, collect all this information about the person's spouse". "If this person is opening a retirement account, they must enter their birthdate. Otherwise, it's optional". And so on and so on.

We had a table of dependencies between controls that worked fairly well, but there were still some things we hard-coded as the time pressures grew.

Ours collected a ton of data and for that reason was a multi-page type form (eg. wizard) with the ability to go back and forth between pages. We had a lot of work to handle situations like, changing from single to married and having to go back and figure out all the new stuff we needed due to the change in marital status.

Good luck.
Greg Send private email
Thursday, May 29, 2008
A company that I used to work for, Data Foundations, has a tool called OneData that basically serves as a thin-client GUI interpreter.

The relational data structures drive the application development to the point where the front end development consists of mostly setting configuration settings.

Using it, I could turn most any spreadsheet into a real thin-client application, with security, workflow, etc., in about an hour.
Steve Hirsch Send private email
Thursday, May 29, 2008
"Using it, I could turn most any spreadsheet into a real thin-client application, with security, workflow, etc., in about an hour."

And it would be completely unusable by anyone who didn't understand the underlying data structure.  ;)
dood mcdoogle
Thursday, May 29, 2008
Take a look at InfoPath (from the Microsoft Office Suite). Microsoft Access is a product that you indeed might want to research; you might want to copy the QBE-GUI.
Eddy Vluggen Send private email
Thursday, May 29, 2008
"And it would be completely unusable by anyone who didn't understand the underlying data structure."


Generally, the users were the spreadsheet creators, so it wasn't a problem.

Figuring out how to convert a spreadsheet's structure into DDL was the tricky part.
Steve Hirsch Send private email
Thursday, May 29, 2008
What are the usage scenarios for such a thing though?

Would you be considering "forms" used for data collection that are online to the collection database, or "forms" to be emailed, completed, and emailed back for import into the database, or... ?
Thursday, May 29, 2008

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz