2013-04-10 27 views
0

當我提供了包含有整數類型的列記錄,而不是報告的錯誤(如記錄here)有以下方法InvalidCastException(用於存儲填充記錄):ErrorHandling中在Filehelpers使用SqlStorage

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

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

如何處理在Filehelpers庫中使用SqlStorage時出錯?

回答

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

整數僅僅是一個例子,我想捕獲所有無效值(當用戶選擇了錯誤的專欄中,我有SQL SELECT查詢基於在組合框中選擇列)在錯誤管理和輸出錯誤。但是我認爲最好用僅包含日期列的組合框填充(可供選擇),而不是讓用戶從所有列(在文檔上)搜索。 – netdis 2013-04-11 16:01:54

+0

這樣做的最好方法可能是將所有字段聲明爲'string',然後處理FillRecordOrder中的任何轉換。 'string'的優點是它永遠不會引發'InvalidCastException',因爲每個對象都有一個'ToString()'。 – shamp00 2013-04-11 16:12:03

+0

使用SqlServerStorage捕獲這些錯誤是不可能的嗎?在平面文件中,我可以迭代錯誤(foreach中的ErrorInfo err),並顯示每個ConvertException(當ex。字段是DateTime但呈現給它的值不同時)。 – netdis 2013-04-12 13:57:33