This approach may work for you now, but it has some limitations. For one thing, using VFP cursors throughout an n-tier system won't work unless all the tiers are VFP.
You also may want to consider only instantiating oBiz on demand, and releasing it when you're finished with it. When using a client/server backend, this will reduce the number of connections you need and improve performance.
I'm assuming that you're passing oBiz.ValidateField(This.ControlSource) and not just passing This.
>Hi,
>
>Does the following business object approach seem sound to you?
>
>1) In the start up sequence of app, we instantiate a global business object, and store a reference to it in a global variable (oBiz), or if you prefer in a property of the App object.
>
>2) The valid method of each UI control class calls oBiz.ValidateField(This) in order to determine the result of appliying the business rule and takes appropriate action.
>
>3) The "ValidateField" method determines the table and field that underlies the ControlSource of the object it receives as parameter, and consults a rule table (or more than one, if necessary). In the rule table are stored the business rules (code snippets, really), indexed by base table and field.
>
>4) oBiz also has a "ValidateRecord" method which is called during the save process and consults the rule table. Exceptions are logged in an array property of oBiz.
>
>5) I am assuming that we manipulate data through VFP cursors. In Kevin McNeish's wonderful frase: "Cursor good".
>
>I appreciate your input. TIA.
>
>Alex