2013-04-10 6 views
0

я предоставил запись, содержащую столбец с целочисленным типом, а сообщения об ошибках (как описано here) получил InvalidCastException в методе ниже (для заполнения записей в памяти):ErrorHandling в Filehelpers при использовании SqlStorage

protected void FillRecordOrder(object rec, object[] fields) 
{ 
    OrdersVerticalBar record = (OrdersVerticalBar) rec; 

    record.OrderDate = (DateTime) fields[0]; 
} 

Как обращаться ошибки с использованием SqlStorage в библиотеке Filehelpers?

ответ

1

Какое содержимое полей [0]? Вы говорите, что он содержит целое число? Затем вам нужно каким-то образом преобразовать его в DateTime. Что-то вроде:

protected void FillRecordOrder(object rec, object[] fields) 
{ 
    OrdersVerticalBar record = (OrdersVerticalBar) rec; 

    if (fields[0] == null) 
     record.OrderDate = DateTime.MinValue; 
    else if (fields[0] is DateTime) 
     record.OrderDate = (DateTime)fields[0]; 
    else if (fields[0] is int) 
    { 
     DateTime baseDate = new DateTime(1900, 1, 1); 
     DateTime newDate = baseDate.AddDays((int)fields[0]); 
     record.OrderDate = newDate; 
    } 
} 

+0

Integer это просто пример, я хочу, чтобы поймать все недопустимые значения (если пользователь выбрал неправильный столбец, у меня есть SQL Select Query на основе выбранных столбцов в выпадающем списке) в ErrorManager и выходе ошибки. Но я думаю, что было бы лучше заполнить combobox только столбцами Date (на выбор), чем позволить пользователю искать из всех столбцов (в документе). – netdis

+0

Лучший способ сделать это может состоять в том, чтобы объявить все поля как 'string' и обработать любое преобразование в FillRecordOrder. Преимущество 'string' заключается в том, что он никогда не вызывает' InvalidCastException', потому что каждый объект имеет 'ToString()'. – shamp00

+0

Невозможно поймать эти ошибки с помощью SqlServerStorage? В плоском файле я могу просто перебирать ошибки (foreach ErrorInfo err в engine.ErrorManager.Errors) и отображать каждое событие ConvertException (когда поле ex. - DateTime, но значение, представленное для него, было иным). – netdis