Save_Main_File - BaseData_Set

Saves the main file

Type: Event

Parameters: None

Syntax
Procedure Save_Main_File 

Description

Save_Main_File saves the main file. You can use Save_Main_File to save additional non-related tables. You can also use Save_Main_File to process additional changes in your table.

Save_Main_File gets called for every table being saved in a DD operation. This method may get called even if there are no changes to save. In such a case, the physical save to the database will not occur even though the event is called.

Sample

In this example, we want to record a date-time stamp in every saved record. Since setting a DateTime field value might cause an otherwise unchanged record to get saved, we will only change the value if the record is already changed. If the file buffer is changed, we will stamp the record.

Procedure Save_Main_File
    Boolean bChanged
    Integer iFile

    Get Main_File to iFile 
    Get_Attribute DF_FILE_CHANGED of iFile to bChanged
    // only stamp the record if it is already changed. This assumes
    // that the functions Crnt_Date and Crnt_Time already exist.
    If (bChanged) Begin // if record is changed at all
        Get Crnt_Date to Vndr.Date_Stamp
        Get Crnt_Time to Vndr.Time_Stamp
    End
    // now do the normal save behavior.
    Forward Send Save_Main_File
End_Procedure


Normally, you will always want to forward-send this message. If the message is not forwarded, the save to the database will not occur.

This message is always called in a locked state. Do not perform user input in this event.

If an Error is declared, the transaction will be rolled back. Errors must be generated using the Error command. See Handling in Transactions for more information.

When accessing table values you should always access the global file buffers and not the DDO buffers (i.e., use "Move File.Field to var" syntax). See Understanding File Buffers and DDO Field Buffers for more information.

See Also

When to Use the File-Buffer | Defining Data Dictionary Events