举例说明,实现如下多条件查询:
成都创新互联公司长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为霍州企业提供专业的网站设计制作、做网站,霍州网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
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, "图书音像管理系统" 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
直接txt的值就是表名称了啊.
dim straa as string 'straa就是要查询的表名称
straa=combo1.text; 'straa就是要查询的表名称
select * from straa 'straa就是要查询的表名称
Private Function SetFilter() As String
Dim StrFilter As String = ""
If ComboBox_XingBie.Text "全部" Then
StrFilter = String.Format("性别字段 = '{0}'", ComboBox_XingBie.Text)
End If
If StrFilter "" Then StrFilter = " and "
If TextBox_XingMing.Text "" Then
StrFilter = String.Format("姓名字段 = '{0}'", TextBox_XingMing.Text)
End If
If StrFilter "" Then StrFilter = " and "
If CheckBox_AiHao.Checked = True Then
StrFilter = String.Format("爱好字段 = '{0}'", CheckBox_AiHao.Text)
End If
Return StrFilter
End Function
Private Sub CheckBox_AiHao_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles CheckBox_AiHao.CheckedChanged, TextBox_XingMing.TextChanged, ComboBox_XingBie.SelectedIndexChanged
数据表指针.filter = SetFilter()
End Sub
这个只能是一一判断的:
为了叙述简单,假设有两个可选条件,内容在: 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
注意:对于字符类型的字段,当然要用单引号,上面那样的,但是对于数值类型,就不要这个单引号的;但是对于日期类型,那么与字符类型不同的是,把前后的2个单引号,改为井号就是“#”, 这是很多初学者容易忽略的,也是很多教科书上不提的问题。
对于文本框,由于.NET不提供控件数组,但是还是可以用语句来实现类似数组的操作,这样以上IF语句,就可以简化。
直接用datatable的Select选项,筛选出来是一个Datarow组,然后再循环它就可以了。
Dim dtrs as DataRow() =dataset.datatable.Select("列名 = '条件' ")
if dtr.rows 0 Then
for each dtr as DataRow in dtrs
'你的处理代码~
next
endif