新聞中心
求教啊求教,關(guān)于在VB.NET中不定項(xiàng)多條件查詢的難題
這個(gè)只能是一一判斷的:
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的托里網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
為了敘述簡(jiǎn)單,假設(shè)有兩個(gè)可選條件,內(nèi)容在: TextBox1(姓名)、TextBox2(部門)
主要是構(gòu)造 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
注意:對(duì)于字符類型的字段,當(dāng)然要用單引號(hào),上面那樣的,但是對(duì)于數(shù)值類型,就不要這個(gè)單引號(hào)的;但是對(duì)于日期類型,那么與字符類型不同的是,把前后的2個(gè)單引號(hào),改為井號(hào)就是“#”, 這是很多初學(xué)者容易忽略的,也是很多教科書(shū)上不提的問(wèn)題。
對(duì)于文本框,由于.NET不提供控件數(shù)組,但是還是可以用語(yǔ)句來(lái)實(shí)現(xiàn)類似數(shù)組的操作,這樣以上IF語(yǔ)句,就可以簡(jiǎn)化。
VB 多條件查詢
舉例說(shuō)明,實(shí)現(xiàn)如下多條件查詢:
Private Sub Command1_Click() Dim jsql jsql = ""
Dim smyregion As String If Check1.Value = 1 Then
jsql = "圖書(shū)名稱 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 = "出版時(shí)間 like '%" + Text4.Text + "%'" ? ? Else
?jsql = jsql "and 出版時(shí)間 like '%" + Text3.Text + "%'" ? ? End If End If
If Check5.Value = 1 Then ? ?If jsql = "" Then
jsql = "圖書(shū)類別 like '%" + Text5.Text + "%'"
Else
?jsql = jsql "and 圖書(shū)類別 like '%" + Text5.Text + "%'" ? ? End If End If
If jsql = "" Then
MsgBox "請(qǐng)選擇查詢條件!", vbInformation, "圖書(shū)音像管理系統(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
VB.net中的 and判斷條件問(wèn)題
911 X + 1 916 還有 704 Y +? 1 709,沒(méi)有這么連續(xù)判斷的。
是比較運(yùn)算符,是運(yùn)算符!+、-、*、/ 是算術(shù)運(yùn)算符,也是運(yùn)算符!
既然是運(yùn)算符,就得按照運(yùn)算優(yōu)先級(jí)(所謂優(yōu)先級(jí),就是 * 運(yùn)算比 + 運(yùn)算要優(yōu)先)從左到右依次計(jì)算,顯然 911 X + 1 916 里兩個(gè) 的運(yùn)算優(yōu)先級(jí)是相同的。
那么從左至右依次計(jì)算,先算 911 X + 1,得到結(jié)果 True(-1) 或者 False(0)(不要問(wèn)我為什么True=-1,F(xiàn)alse=0,.NET里就是這么規(guī)定的),再計(jì)算 True / False 916,結(jié)果始終為 True。704 Y + 1 709 也是同理,兩個(gè) True 之間 And 了還是 True,結(jié)果當(dāng)然是條件一直成立。
正確寫法:
If?(911??X?+?1?And?X?+?1??916)?And?(704??Y?+?1?And?Y?+?1??709)?Then
分享文章:vb.net多條件判斷 vba多條件判斷語(yǔ)句
標(biāo)題路徑:http://m.biofuelwatch.net/article/doggeeo.html