AndAlso運算子
問題(Problem):
從資料庫撈資料時~
若某資料型態為日期(or 其它特殊型態)時~
用 Foor-loop or while-loop 取得資料列(並顯示在畫面上)~
用以下的 If判斷式 會出錯~
答案(Answer):
因為 If 判斷式~ 在判斷時會同時判斷 i是否符合條件 以及 arr(i + 1)是否符合條件~
故在此判斷式~ 便會出錯~
從字串 "XXXX" 至型別 'Date' 的轉換是無效的。
For i As Integer = 1 To 10
If i = 3 And CDate(arr(i + 1)).ToShortDateString = "1900/1/1" Then
C.Text = "尚無資料"
End If
Next
需更改為
當判斷 i不符合時~ 就不會再判斷 arr(i + 1) 是否符合~
(1)
For i As Integer = 1 To 10
If i = 3 Then
If CDate(arr(i + 1)).ToShortDateString = "1900/1/1" Then
C.Text = "尚無資料"
End If
End If
Next
或者
當更改判斷式 If AndAlso 判i不符合~ 就不會再判斷 arr(i + 1) 是否符合~
(2)
For i As Integer = 1 To 10
If i = 3 And CDate(arr(i + 1)).ToShortDateString = "1900/1/1" Then
C.Text = "尚無資料"
End If
Next
或者
在判斷式之前 必須判斷 arr(i+1) 是否為日期型態
(3)
For i As Integer = 1 To 10
If IsDate(arr(i + 1)) = True Then
'是日期型態
If i = 3 And CDate(arr(i + 1)).ToShortDateString = "1900/1/1" Then
C.Text = "尚無資料"
End If
Else
'不是日期型態
End If
Next
參考:
運算子 AndAlso 和 OrElse
VB.NET's Logical Operators AndAlso and OrElse
沒有留言:
張貼留言