2012-11-24 48 views
1

只想問爲什麼這不會爲我工作?多個if語句缺少數據

我試圖帶回預訂系統的數據(或類似的東西)。

問題是,它只會去只有一個if語句而忽略第二個。

使用VB.net並嘗試連接到MySQL數據庫。

感謝所有...

切赫

感謝答案,大家好我會嘗試所有的問題是,如果其不等於讓說週一那麼就應該使複選框白色的顏色。

我會嘗試選擇案例,看看。

我做了一些更改添加那裏複選框列表,它使它更容易。問題是在不同的日子清除複選框。

CheckBoxListMon.BackColor = Drawing.Color.White 
    CheckBoxListMon.Enabled = True 
    CheckBoxListMon.ClearSelection() 

這使複選框啓用,但未選中,但仍無法點擊它們,他們被禁用。

任何人有一些想法?

Try 
     strQuery = "SELECT BookingDate, BookingTime,BookRegUserID,Booked FROM bookings" 

     MySQLCmd = New MySqlCommand(strQuery, dbCon) 

     dbCon.Open() 

     DR = MySQLCmd.ExecuteReader 

     While DR.Read 

      bookDate = DR.Item("BookingDate") 
      bookTime = DR.Item("BookingTime") 
      bookRegID = DR.Item("BookRegUserID") 
      booked = DR.Item("Booked") 

      Select Case True 

       Case bookDate = lblMonday.Text And CheckBoxListMon.Items.FindByValue(test) IsNot Nothing 

        CheckBoxListMon.Items.FindByValue(bookTime).Enabled = False 
        CheckBoxListMon.Items.FindByValue(bookTime).Selected = True 
        CheckBoxListMon.Items.FindByValue(bookTime).Attributes.Add("Style", "color: red;") 


       Case bookDate = lblTuesday.Text And CheckBoxListTue.Items.FindByValue(test) IsNot Nothing 

        CheckBoxListTue.Items.FindByValue(bookTime).Enabled = False 
        CheckBoxListTue.Items.FindByValue(bookTime).Selected = True 
        CheckBoxListTue.Items.FindByValue(bookTime).Attributes.Add("Style", "color: red;") 
     End While 
     DR.Close() 
     dbCon.Close() 
    Catch ex As Exception 

    End Try 

回答

1

我覺得ISEE現在的問題。如果它們不匹配,則不想將組合框向後翻轉。假設你的星期一星期二在你的結果集中返回。第一行將星期一翻轉爲真,第二天將變爲假,第二行將星期一設置爲假 - 我認爲你不需要 - 並將週二設置爲真,所有內容都由最後一行決定。答案是在處理行之前將它們全部設置爲false,並且只有在匹配時才設置爲true,否則忽略它。

CbMon10.BackColor = Drawing.Color.White 
    CbMon10.Checked = False 
    CbMon10.Enabled = True 
    CbTue10.BackColor = Drawing.Color.White 
    CbTue10.Checked = False 
    CbTue10.Enabled = True 

雖然DR.Read

bookDate = DR.Item("BookingDate") 
bookTime = DR.Item("BookingTime") 
bookRegID = DR.Item("BookRegUserID") 
booked = DR.Item("Booked") 

    Select Case True 
     Case bookDate = lblMonday.Text And bookTime = CbMon10.Text 
      CbMon10.BackColor = Drawing.Color.Red 
      CbMon10.Checked = True 
      CbMon10.Enabled = False 

     Case bookDate = lblTuesday.Text And bookTime = CbTue10.Text 
      CbTue10.BackColor = Drawing.Color.Red 
      CbTue10.Checked = True 
      CbTue10.Enabled = False 

    End Select 

End While 
+0

嗨我試過這個,但它總是忽略第二條語句:( –

+0

然後第二個語句是評估爲假,在那裏放一個斷點,試試在立即窗口 – PatFromCanada

+0

如果第一次測試是真實的,它會忽略以下內容 – PatFromCanada

0

您應該使用if-else-if梯這樣的:

If bookDate = lblMonday.Text And bookTime = CbMon10.Text Then 
     CbMon10.BackColor = Drawing.Color.Red 
     CbMon10.Checked = True 
     CbMon10.Enabled = False 
Else If bookDate = lblTuesday.Text And bookTime = CbTue10.Text Then 
     CbTue10.BackColor = Drawing.Color.Red 
     CbTue10.Checked = True 
     CbTue10.Enabled = False 
Else 
     CbTue10.BackColor = Drawing.Color.White 
     CbTue10.Checked = False 
     CbTue10.Enabled = True 
End If 
+0

我需要的是cbmon和cbtue如果假留白。這樣他們不會改變:(並保持紅色永遠 –

0

而不是多個,如果是你可以使用它像這樣: -

If (bookDate = lblMonday.Text And bookTime = CbMon10.Text) or (bookDate = lblTuesday.Text And bookTime = CbTue10.Text) Then 
      CbMon10.BackColor = Drawing.Color.Red 
      CbMon10.Checked = True 
      CbMon10.Enabled = False 
     Else 

      CbMon10.BackColor = Drawing.Color.White 
      CbMon10.Checked = False 
      CbMon10.Enabled = True 
     End If