Thanks for your help Gerry. I now get the idea of what you had been suggesting. I'll try to change my codes accordingly.
>>But what if the user presses Ctrl+S or clicks the Save button without completing the form (I have a muti tabbed interface)?
>
>With a multi-tabbed interface, I do a "save" if anything has changed and the User wants to change pages. I think it's too much to ask of a User to bounce around among multiple pages attempting to correct errors before doing a "save". You can always use flags (in the tables) to indicate what "parts" of the "record" are complete and which are not, if that's the only way to save a single "page".
>
>I've generally been able to partition data so that a single page can stand on its own and is not dependent on other pages, except for the first page, which usually contains "basic" data and is what identifies the record.
>
>eg. In a Employee form, page 1 would show Employee identification info, page 2 would list their dependents, page 3 could show training, etc.
>
>Each page depends only on the first, and only because of the employee key. The entire employee record can be completed at any time, although it can still be considered "valid" without having completed every page.
>
>In the event of a problem or "missing data" (because of incomplete documentation), the User doesn't have to redo the entire transaction; they're at least able to save a number of "Pages".
>
>>There are numeric fields which default to 0 with a valid range including zero but not necessary 0. In such a case the user if shortcutted of missed a field in another form will get a wrong result saved.
>
>If you're saying that "0" is valid, and a default, but you want to physically force the user to enter "0" anyway, then default it to -1 and then check in the Save that there are no fields with -1.
>
>Or, add a property to each control that indicates whether or not a User actually "visited" that field or not.
>
>(The whole point of defaults is to speed data-entry; if that's not the case, don't supply them).