2013-07-03 86 views
0

我有一個for循環數組,並沒有'數據',並給了我一個錯誤信息說,在1990年找不到這個。我正在尋找一個if語句,我可以在哪裏使用這個如果有一行叫做'數據',如果不是,那麼就把圖表留在黑色並且不顯示任何數據。簡單,如果語句顯示數據或不顯示數據

代碼:

Dim array1 As New ArrayList 
    Dim array2 As New ArrayList 
    Dim array3 As New ArrayList 


    For Each row In name1 
     array.Add(row("info")) 
    Next row 



    For Each row In name2 
     array1.Add(row("name")) 

    Next row 

    For Each row In name3 
     array2.Add(row("address")) 

    Next row 


    For Each row In name4 
     array3.Add(row("data")) 
    Next row 

我的數據是顯示的信息,姓名,adderss。數據未顯示,表示表中沒有數據。 如何用vb.net

錯誤

If Year1.Contains("data") Then <------ error on data 
     For Each row In name4 
      array3.Add(row("data")) 
     Next row 
    End If 

類型「字符串」的錯誤代碼值我要把它放到if語句,然後不顯示數據正在呈現..

不能轉換爲「的System.Data.DataRow」

+2

您不能用'For For Each row In 1989'中的數字命名變量,因此您的代碼將無法編譯。 –

+0

是的,把它改成了名字,你有沒有關於if語句的任何想法 – al123

+0

如果表中沒有任何名爲'「data」的項目,那麼你不需要一個條件來檢查它,你只想擺脫它。從術語來說,我認爲'row'是直接從數據庫中提取的'DataRow'?如果沒有名爲「data」的列,那麼就沒有這樣的列。條件總是評估爲「錯誤」並且是多餘的。 – David

回答

2

根據您所提供的信息有限,我做了幾個假設這裏:

  • rowDataRow
  • 存在一個DataTable(我會打電話給table
  • 有時有一個名爲data列,有時候沒有。 (也就是您的模式也不是一成不變的。)

您可以檢查DataTable對象上一列在其Columns收集的存在。事情是這樣的:

If table.Columns.Contains("data") Then 
    ' use the column 
End If 

所以你的代碼可能是這個樣子:

If table.Columns.Contains("data") Then 
    For Each row In name4 
     array3.Add(row("data")) 
    Next row 
End If 

這絕對是非正統有一個非靜態數據庫模式。至少應該由數據庫代碼處理這類事情,而不是在應用程序邏輯中處理。 SELECT查詢應該返回一列靜態列。

+0

有一個錯誤('數據')它說的類型'字符串'的值不能轉換爲'系統.data.Datarow' – al123

+0

@ al123:在哪一行?顯示更新後的代碼並指明錯誤發生的位置。我無法強調我們無法檢查代碼/錯誤/等。你沒有向我們展示。我們實際上並不在您的電腦中。 – David

+0

更新了文章 – al123