How to write a validate write data event handler code for a table
Right-click onValidatedWrite of the event at the table level, and then select Copy event handler method.
Below is for the table FMVehicle
Class FMVehicleEventHandlers //write any name of the class
{
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[DataEventHandler(tableStr(FMVehicle), DataEventType::ValidatedWrite)]
public static void FMVehicle_onValidatedWrite(Common sender, DataEventArgs e)
{
ValidateEventArgs validateArgs = e as ValidateEventArgs;
FMVehicle vehicle = sender as FMVehicle;
boolean result = validateArgs.parmValidateResult();
if (vehicle.NumberOfCylinders > 8)
{
result = checkFailed("Invalid number of cylinders.");
validateArgs.parmValidateResult(result);
}
}
}
Below is the code to write at the form level if the requirement is to just validate at the form level.
[FormDataSourceEventHandler(formDataSourceStr(FMRental, FMRental), FormDataSourceEventType::ValidatingWrite)]
public static void FMRental_OnValidatingWrite(FormDataSource sender, FormDataSourceEventArgs e)
{
var datasource = sender as FormDataSource;
var args = e as FormDataSourceCancelEventArgs;
if (args != null && datasource != null)
{
FMRental record = datasource.cursor() as FMRental;
if (record.recId == 0)
{
if(record.startmileage == 1)
{
boolean doCancel = !checkFailed("Start Mileage = 1 is not allowed");
args.cancel(doCancel);
}
}
}
}