2012-05-09 26 views
0

我正在嘗試收集投標並從列中分配平均值如何從SQLite表中獲取值的總和?

我得到一個InvalidCast異常:指定的投射無效。在TotalSum + =

任何幫助將大大apprciated

Dim sql As String = "SELECT " & Column & " FROM " & Table & " ;" 
Dim dt As DataTable = SQLiteDatabase.GetDataTable(sql) 
Column = Column.Replace("[", "") 
Column = Column.Replace("]", "") 
For Each row As DataRow In dt.Rows 
    TotalSum += DirectCast(row(Column), Integer) 
    Console.WriteLine("Calculating TotalSum {0}", TotalSum.ToString) 
Next row 
+0

1.您的TotalSum是一個整數嗎? 2.檢查dt中的每一行,並確保該列是第一行有一個dbNull的整數列 – Nick

+0

。它不在表格 – Gerolkae

+0

是的,這是錯誤來自哪裏。你可以放一個try catch塊來跳過這個記錄,就像你的答案一樣,但檢查null值的原因會好很多。 – Nick

回答

1

最終解決方案是這樣的

Dim suma As Double = 0.0R 
For Each row As DataRow In dt.Rows 
    Dim num As Double = 0R 
    Double.TryParse(row(Column).ToString, num) 
    suma += num 
Next row 

列可以potentually包含在我的應用程序蜇因爲用戶可以直接輸入SQL。我只使用Double類型,但整數是一個選項

0

入住這

int suma = 0; 

Dim dc as DataColumn = dt.Columns[0] //Column to add 
For Each row As DataRow In dt.Rows 
      suma += int.Parse(row[dc]) 

問候

0

謝謝你的好回帖

我的修復是

Try 
     TotalSum += Convert.ToInt32(row(Column)) 
     Console.WriteLine("Calculating TotalSum {0}", TotalSum.ToString) 
    Catch 
    End Try 

嘗試捕獲塊添加到監視vbNull。我只想值高於0