2017-06-02 101 views
-5

我是VB.NET的新手。我想將數據從Access數據庫的一個字段收集到列表框中,並將數據從最小值到最大值進行排序。但我收到一條錯誤消息:從字符串「System.Data.DataRowView」轉換爲類型「整數」無效錯誤

「從字符串轉換 」System.Data.DataRowView「 鍵入 '整數' 無效」

enter image description here

+0

歡迎來到StackOverflow。 請參考[遊覽], 學習問好問題stackoverflow.com/help/how-to-ask, 做個[mcve]。 請至少提供文字形式的代碼,而不是圖片。 – Yunnosch

回答

0

你宣佈arr(i)陣列整數和你寫arr(i) = resListBox.Items(i).ToString ..
這可能怎麼樣?

假設您的resListBox.Items(i)的值爲「abc」,那麼abc不能插入到int類型的變量中。即使.ToString將其轉換爲字符串並傳遞字符串值。

嘗試arr(i) = resListBox.Items(i).Text但只有當值是整數,否則它將再次拋出異常......!

+0

嘗試將代碼寫入'Try..Catch',以便即使程序正在運行,您也可以在調試模式下查看錯誤...! – bonny

0

由於bonny已經在他的回答中說過,你不能給一個整數指定一個字符串。

您可以嘗試使用Int32.TryParse方法。通過這種方式,您可以測試該值是否爲整數,然後如果返回true,則可以將其分配給該變量,或者顯示messagebox以顯示value爲null或不是整數。

 Dim number As Integer 
    Dim result As Boolean = Int32.TryParse(resListBox.Items(i).Text, number) 
    If result Then 
     arr(i) = resListBox.Items(i).Text 
    Else 
     MessageBox.Show("Attempted conversion of '{0}' failed.", 
          If(resListBox.Items(i).Text Is Nothing, "<null>", resListBox.Items(i).Text)) 
    End If  
相關問題