Public Sub Constituent_BeforeSave(oRecord As Object, bCancel As Boolean)
   'oRecord              : record object being saved
   'bCancel              : set to true to cancel the save operation
   Dim oCon As CRecord

   On Error GoTo ErrHandler
   Set oCon = oRecord
   Dim oProspect As CProspect
   Dim oProposal As CProposal
   Dim oDataObject As IBBDataObject
   Set oProspect = oCon.Prospect 

   For Each oProposal In oProspect.Proposals   
       Set oDataObject = oProposal
       If oDataObject.FieldIsDirty(PROPOSAL_fld_STATUS) Then
           Debug.Print oDataObject.Fields(PROPOSAL_fld_STATUS)
       End If      
   Next oProposal

   Set oDataObject = Nothing
   Set oCon = Nothing
   Set oProposal = Nothing
   Set oProspect = Nothing
   If Not oCon Is Nothing Then
       'bCancel = < place your custom save criteria here >
   End If
   Set oCon = Nothing  
   On Error GoTo 0
   Exit Sub

   Dim sErr As String
   sErr = Err.Description
   On Error GoTo 0
   '< place your custom error handling code here >
   MsgBox "Error processing Constituent_BeforeSave : " & sErr
   Set oCon = Nothing
   bCancel = False
   Exit Sub

End Sub

Disclaimer: We provide programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes you are familiar with Microsoft Visual Basic and the tools used to create and debug procedures. Our Customer Support can help explain the functionality of a particular procedure, but we will not modify, or assist you with modifying, these examples to provide additional functionality. If you are interested in learning more about the VBA and API modules, contact your account manager.