VB 多条件查询
答案:5 悬赏:0
解决时间 2021-03-29 13:49
- 提问者网友:沦陷
- 2021-03-28 21:46
VB 多条件查询
最佳答案
- 二级知识专家网友:独行浪子会拥风
- 2021-03-28 22:42
举例说明,实现如下多条件查询:
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
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
全部回答
- 1楼网友:人類模型
- 2021-03-29 01:21
if(判断条件)
{语句}
else if(判断条件)
{ 语句 }
else if(判断条件)
{语句}
。。。
if(判断条件)
{语句}
或者用switch语句
swith(表达式)
{
case表达式1:语句1
case表达式2:语句2
。。。
case表达式n:语句n
default:语句n+1
}
{语句}
else if(判断条件)
{ 语句 }
else if(判断条件)
{语句}
。。。
if(判断条件)
{语句}
或者用switch语句
swith(表达式)
{
case表达式1:语句1
case表达式2:语句2
。。。
case表达式n:语句n
default:语句n+1
}
- 2楼网友:时间的尘埃
- 2021-03-29 00:21
适当的分开,把同类型的判断放到同一个函数里。如:
Private Function Check1() as Boolean
一部分判断
End Function
Private Function Check2() as Boolean
一部分判断
End Function
...
Private Function Check1() as Boolean
一部分判断
End Function
Private Function Check2() as Boolean
一部分判断
End Function
...
- 3楼网友:旧脸谱
- 2021-03-29 00:16
以我的理解,你提的问题可以分为下列几个小问题,不知是否符合你的要求
1、命名空间引用
Imports System.Data'***连接数据库的基本命名空间
Imports System.Data.Sql '***连接 Sql 数据库的命名空间
2、用 VB.Net 连接数据库
Dim Conn As New SqlClient.SqlConnection(strConn)'*** 声明并初始化连接对象
Dim Adapter As New SqlClient.SqlDataAdapter("select * from ChengJi", Conn)'*** 定义并初始化数据适配器
Dim dtTable As New DataTable'*** 数据集,用以绑定到 DataGridView
3、将取得的数据绑定到 DataGridView 控件
Adapter.Fill(dtTable) '*** 将数据适配器取得的数据填充到数据集
DataGridView.DataSource = dtTable '*** 将数据集的数据绑定到 控件
Conn.Open() '*** 打开连接,数据即显示在控件中
'*** 注意使用 Try......Catch 语句,并加入错误处理代码
4、查询语句编写
根据你列出的要求,应该是按用户 ID、用户名、部门ID中的一项或多项进行 And 或 Or 查询,则查询语句为
各字段单独查询:
Select * from Table where UserID='abc'
Select * from Table where UserName='abcd'
三个字段并列(And)查询
Select * from Table where UserID='abc' and UserName='abcd' and DepartMentID='abcde'
三个字段区分(Or)查询
Select * from Table where UserID='abc' or UserName='abcd' or DepartMentID='abcde'
5、联合查询,即从多个表中找出符合条件的数据
假设有两个表
用户表(User):UserID,UserName,DepartMentID(表示所属的部门)
部门表(DepartMent):DepartMentID,DepartMentName
应该分多种情况设计查询语句(假设查询后要显示的字段都一样,为UserName、DepartMentName)
A、查询所有用户所属的部门(有可能有的用户所对应的部门编号不存在)
Select User.UserName,isnull(DepartMent.DepartMentName,'部门不存在') as DepartMentName from User left Join DepartMent
On User.DepartMentID=DepartMent.DePartMentID
'***注意:使用左连接,即从 User 表连向 DepartMent 表------由于 User 表在前
B、查询所有部门的用户(有可能有的部门没有用户)
Select isnull(User.UserName,'无用户') as UserName,DepartMent.DepartMentName from User right Join DepartMent
On User.DepartMentID=DepartMent.DePartMentID
'*** 注意:使用右连接,即从 DepartMent 表连向 User 表
C、查询部门中存在的用户(即用户表中的部门存在,部门中有用户)
Select User.UserName,DepartMent.DepartMentName from User Inner Join DepartMentOn User.DepartMentID=DepartMent.DePartMentID
'*** 注意,使用自然连接,即用户表的 DepartMentID 在部门表中要存在,部门表中 DepartMentID要在用户表中存在,根据这两个条件过滤信息
D、使用全连接,你自己用试一试。
1、命名空间引用
Imports System.Data'***连接数据库的基本命名空间
Imports System.Data.Sql '***连接 Sql 数据库的命名空间
2、用 VB.Net 连接数据库
Dim Conn As New SqlClient.SqlConnection(strConn)'*** 声明并初始化连接对象
Dim Adapter As New SqlClient.SqlDataAdapter("select * from ChengJi", Conn)'*** 定义并初始化数据适配器
Dim dtTable As New DataTable'*** 数据集,用以绑定到 DataGridView
3、将取得的数据绑定到 DataGridView 控件
Adapter.Fill(dtTable) '*** 将数据适配器取得的数据填充到数据集
DataGridView.DataSource = dtTable '*** 将数据集的数据绑定到 控件
Conn.Open() '*** 打开连接,数据即显示在控件中
'*** 注意使用 Try......Catch 语句,并加入错误处理代码
4、查询语句编写
根据你列出的要求,应该是按用户 ID、用户名、部门ID中的一项或多项进行 And 或 Or 查询,则查询语句为
各字段单独查询:
Select * from Table where UserID='abc'
Select * from Table where UserName='abcd'
三个字段并列(And)查询
Select * from Table where UserID='abc' and UserName='abcd' and DepartMentID='abcde'
三个字段区分(Or)查询
Select * from Table where UserID='abc' or UserName='abcd' or DepartMentID='abcde'
5、联合查询,即从多个表中找出符合条件的数据
假设有两个表
用户表(User):UserID,UserName,DepartMentID(表示所属的部门)
部门表(DepartMent):DepartMentID,DepartMentName
应该分多种情况设计查询语句(假设查询后要显示的字段都一样,为UserName、DepartMentName)
A、查询所有用户所属的部门(有可能有的用户所对应的部门编号不存在)
Select User.UserName,isnull(DepartMent.DepartMentName,'部门不存在') as DepartMentName from User left Join DepartMent
On User.DepartMentID=DepartMent.DePartMentID
'***注意:使用左连接,即从 User 表连向 DepartMent 表------由于 User 表在前
B、查询所有部门的用户(有可能有的部门没有用户)
Select isnull(User.UserName,'无用户') as UserName,DepartMent.DepartMentName from User right Join DepartMent
On User.DepartMentID=DepartMent.DePartMentID
'*** 注意:使用右连接,即从 DepartMent 表连向 User 表
C、查询部门中存在的用户(即用户表中的部门存在,部门中有用户)
Select User.UserName,DepartMent.DepartMentName from User Inner Join DepartMentOn User.DepartMentID=DepartMent.DePartMentID
'*** 注意,使用自然连接,即用户表的 DepartMentID 在部门表中要存在,部门表中 DepartMentID要在用户表中存在,根据这两个条件过滤信息
D、使用全连接,你自己用试一试。
- 4楼网友:蕴藏春秋
- 2021-03-28 23:32
200分的问题有这么多人回答啊
我也写一个:
Private Sub Command1_Click()
Dim sqlStr As String, Str1 As String, Str2 As String
Str1 = " (录音日期 between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#)"
Str2 = IIf(Text1.Text = "请输入", "", " and 来电号码='" & Text1.Text & "'") & IIf(Text2.Text = "请输入", "", " and 去电号码='" & Text2.Text & "'") & IIf(Text3.Text = "请输入", "", " and 通道说明='" & Text3.Text & "'")
sqlStr = "select * from luyin where " & Str1 & Str2
For i = 0 To Check1.UBound
sqlStr = sqlStr & IIf(Check1(i).Value = 1, " or 通道号='" & Right(Check1(i).Caption, 1) & "'", "")
Next
Adodc1.RecordSource = sqlStr
Adodc1.Refresh
Text1 = "请输入"
Text2 = "请输入"
Text3 = "请输入"
End SubEnd Sub
我也写一个:
Private Sub Command1_Click()
Dim sqlStr As String, Str1 As String, Str2 As String
Str1 = " (录音日期 between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#)"
Str2 = IIf(Text1.Text = "请输入", "", " and 来电号码='" & Text1.Text & "'") & IIf(Text2.Text = "请输入", "", " and 去电号码='" & Text2.Text & "'") & IIf(Text3.Text = "请输入", "", " and 通道说明='" & Text3.Text & "'")
sqlStr = "select * from luyin where " & Str1 & Str2
For i = 0 To Check1.UBound
sqlStr = sqlStr & IIf(Check1(i).Value = 1, " or 通道号='" & Right(Check1(i).Caption, 1) & "'", "")
Next
Adodc1.RecordSource = sqlStr
Adodc1.Refresh
Text1 = "请输入"
Text2 = "请输入"
Text3 = "请输入"
End SubEnd Sub
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯