I have a System.Data.DataSet and one separate table. The table has many columns.

In the event handler, I set the decimal value for one of the fields in an existing data row (during installation).
In a very rare case, I get an exception ArgumentOutOfRangeException.
Message: System.ArgumentOutOfRangeException: The index was out of range. Must be non-negative and smaller than the size of the collection.
Call stack:
at System.ThrowHelper.ThrowArgumentOutOfRangeException()
at System.Collections.Generic.List`1.get_Item(Int32 index)
at System.Data.RecordManager.NewRecordBase()
at System.Data.DataTable.NewRecord(Int32 sourceRecord)
at System.Data.DataRow.BeginEditInternal()
at System.Data.DataRow.set_Item(DataColumn column, Object value)
at CPITS.Data.OrdersRow.set_ExecutionPrice(Decimal value)
The strange thing is that this comes from the code generated by the framework (of course, I did not write Setter for the DataColumn).
Could you help me understand and fix this problem?
EDIT
Below is the code in which I set the value:
void ibclient_OrderStatus(object sender, OrderStatusEventArgs e)
{
Data.OrdersRow drOrders = data.Orders.FindByOrderId(e.OrderId);
if (drOrders != null)
{
drOrders.FilledQuantity = e.Filled;
drOrders.ExecutionPrice = e.AverageFillPrice;
}
}