2012-11-01 68 views
0

我進口excelsheet到SQLSERVER數據庫中讀取數據,但有三列在Excel:指數數組的邊界之外,同時從excelsheet

id|data|passport 

我想確保所有護照開始用字母我我得到 錯誤的:

if (a[0]>= 'A' && a[0] <= 'Z' && a[0] !='0') 

錯誤:

Index was outside the bounds of the array.

  for (int i1 = 0; i1 < dt7.Rows.Count; i1++) 
      { 

       if (dt7.Rows[i1]["passport"]==null) 
       { 
        dt7.Rows[i1]["passport"] = 0; 

       } 

       string a = Convert.ToString(dt7.Rows[i1]["passport"]); 

       //char a1 = a[0]; 

       if (a[0]>= 'A' && a[0] <= 'Z' && a[0] !='0') 
       { 
        Label12.Text = "CAPITAL"; 
        break; 
       } 
       else 
       { 
        Label12.Text = "notgood"; 


        flag = flag + 1; 

       } 
+0

使用斷點,並得到了dt7.Rows [I1 ] [「護照」]有價值「k526562」對象{字符串} – Arbaaz

回答

0

爲什麼不直接修改您的病情是這樣

If(!String.IsNullOrEmpty(a)){ 
    If(Char.IsLetter(a[0])){ 
      Label12.Text = "CAPITAL"; 
      break; 
    } 
} 
+0

它的工作!謝謝 !!但我只是想知道如果我想要檢查大寫字母怎麼辦? – Arbaaz

+0

如果你想檢查大寫,你可以使用'If(Char.IsLetter(a [0])&& a [0] == a [0] .ToUpper())' –

1

聽起來像a引用數組,因此在索引0沒有元素。在嘗試訪問第一個元素之前,您需要檢查該數組是否爲空。

+0

我用斷點,並得到, dt7.Rows [i1] [「護照」]有值「k526562」對象{字符串} – Arbaaz

+0

PLZ檢查我的編輯 – Arbaaz

1

它當然是過去的情況,word和excel範圍內的對象是基於1的數組,當索引0被訪問時會拋出一個超出範圍的異常。我相信這仍然是這樣。

也可能像@ anthony-grist所說的那樣,數組是空的,因此第一項將在數組邊界之外。

我建議你測試數組的長度,並開始在索引訪問1.

+0

PLZ檢查我的eidt的問題 – Arbaaz

相關問題