這個只能是一一判斷的:
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站設計制作、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的托里網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
為了敘述簡單,假設有兩個可選條件,內容在: TextBox1(姓名)、TextBox2(部門)
主要是構造 Sql的Where子句,那么:
Dim MySqlWhere As String
MySqlWhere=""
If TextBox1.Text"" Then
MySqlWhere= " Where 姓名 = '" TextBox1.Text "'"
End If
If TextBox2.Text"" Then
if MySqlWhere="" Then
MySqlWhere= " Where 部門 = '" TextBox1.Text "'"
Else
MySqlWhere= MySqlWhere " And 部門 = '" TextBox1.Text "'"
End If
End If
'如果還有第3,第4,那只能這樣了:
If TextBox3.Text"" Then
if MySqlWhere="" Then
MySqlWhere= " Where 字段3 = '" TextBox3.Text "'"
Else
MySqlWhere= MySqlWhere " And 字段3 = '" TextBox3.Text "'"
End If
End If
......
If TextBoxn.Text"" Then
if MySqlWhere="" Then
MySqlWhere= " Where 字段n = '" TextBoxn.Text "'"
Else
MySqlWhere= MySqlWhere " And 字段n = '" TextBoxn.Text "'"
End If
End If
注意:對于字符類型的字段,當然要用單引號,上面那樣的,但是對于數(shù)值類型,就不要這個單引號的;但是對于日期類型,那么與字符類型不同的是,把前后的2個單引號,改為井號就是“#”, 這是很多初學者容易忽略的,也是很多教科書上不提的問題。
對于文本框,由于.NET不提供控件數(shù)組,但是還是可以用語句來實現(xiàn)類似數(shù)組的操作,這樣以上IF語句,就可以簡化。
舉例說明,實現(xiàn)如下多條件查詢:
Private Sub Command1_Click() Dim jsql jsql = ""
Dim smyregion As String If Check1.Value = 1 Then
jsql = "圖書名稱 like '%" + Text1.Text + "%'" End If
If Check2.Value = 1 Then ? ?If jsql = "" Then
jsql = "作者姓名 like'%" + Text2.Text + "%'" ? ?Else
jsql = jsql "and 作者姓名 like'%" + Text2.Text + "%'" ? ? End If End If
If Check3.Value = 1 Then ? ?If jsql = "" Then
jsql = "出版社名稱 like'%" + Text3.Text + "%'" ? ? Else
jsql = jsql "and 出版社名稱 like '%" + Text3.Text + "%'" ? ? End If End If
If Check4.Value = 1 Then ? If jsql = "" Then
jsql = "出版時間 like '%" + Text4.Text + "%'" ? ? Else
?jsql = jsql "and 出版時間 like '%" + Text3.Text + "%'" ? ? End If End If
If Check5.Value = 1 Then ? ?If jsql = "" Then
jsql = "圖書類別 like '%" + Text5.Text + "%'"
Else
?jsql = jsql "and 圖書類別 like '%" + Text5.Text + "%'" ? ? End If End If
If jsql = "" Then
MsgBox "請選擇查詢條件!", vbInformation, "圖書音像管理系統(tǒng)" ? Exit Sub Else
Adodc1.RecordSource = "select * from book where " jsql ? Adodc1.Refresh End If
If Adodc1.Recordset.RecordCount 0 Then ? Set DataGrid1.DataSource = Adodc1 End If ? ?End Sub
Private Sub Command2_Click() Unload Me End Sub
911 X + 1 916 還有 704 Y +? 1 709,沒有這么連續(xù)判斷的。
是比較運算符,是運算符!+、-、*、/ 是算術運算符,也是運算符!
既然是運算符,就得按照運算優(yōu)先級(所謂優(yōu)先級,就是 * 運算比 + 運算要優(yōu)先)從左到右依次計算,顯然 911 X + 1 916 里兩個 的運算優(yōu)先級是相同的。
那么從左至右依次計算,先算 911 X + 1,得到結果 True(-1) 或者 False(0)(不要問我為什么True=-1,F(xiàn)alse=0,.NET里就是這么規(guī)定的),再計算 True / False 916,結果始終為 True。704 Y + 1 709 也是同理,兩個 True 之間 And 了還是 True,結果當然是條件一直成立。
正確寫法:
If?(911??X?+?1?And?X?+?1??916)?And?(704??Y?+?1?And?Y?+?1??709)?Then