这几天一直在做机房收费系统中组合查询的那几个窗体。这次选择了利用数组来查询。下面就给大家说一下这个方法,希望大家指正,互相学习。
这里我要讲解的是在三层架构下实现的例子,如果你不了解三层,或者是没有听说过三层,那建议你在百度输入“三层 提高班.CSDN ”就可以看到有关三层的介绍。我们提高班的许多同学都对三层做了一些总结,对你学习、理解三层会有好处的。
言归正传,先看一下窗体的组成(U层)。
其中 ,3个“字段”下拉列表、3个“操作”下拉列表以及2个“组合关系”下拉列表中的条目分别相同。依次是“卡号、学号、姓名、性别”、“<、>、=、<>”、“与、或”。并且所要查询的记录在一个表中。
(注:下面代码只是为了讲解,对于命名规范等方面没有做考虑,望见谅。)
Private Sub cmdOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.Click
Select Case cbxName1.Text.Trim()
Case "卡号"
f1 = "CardNo"
Case "学号"
f1 = "SID"
Case "姓名"
f1 = "Name"
Case "性别"
f1 = "Sex"
End Select
Select Case cbxName2.Text
Case "" ‘此处很重要
f2 = ""
Case "卡号"
f2 = "CardNo"
Case "学号"
f2 = "SID"
Case "姓名"
f2 = "Name"
Case "性别"
f2 = "Sex"
End Select
Select Case cbxName3.Text
Case "" ’此处很重要
f3 = ""
Case "卡号"
f3 = "CardNo"
Case "学号"
f3= "SID"
Case "姓名"
f3 = "Name"
Case "性别"
f3 = "Sex"
End Select
Dim myarr As Entity.StudentE() = {New Entity.StudentE(), New Entity.StudentE(), New Entity.StudentE()}
myarr(0).Name = f1
myarr(1).Name = f2
myarr(2).Name = f3
Dim myarr1() As Entity.StudentE = {New Entity.StudentE, New Entity.StudentE, New Entity.StudentE}
myarr1(0).Operation = cbxOperation1.Text
myarr1(1).Operation = cbxOperation2.Text
myarr1(2).Operation = cbxOperation3.Text
Dim myarr2() As Entity.StudentE = {New Entity.StudentE, New Entity.StudentE, New Entity.StudentE}
myarr2(0).txtName = txtName1.Text
myarr2(1).txtName = txtName2.Text
myarr2(2).txtName = txtName3.Text
Dim e0 As String = ""
Dim e1 As String = ""
Select Case cbxCompone1.Text
Case "" ‘此处表示查询时只需要按照前三个条件进行查询
e0 = ""
Case "与"
e0 = "and"
Case "或"
e0 = "or"
End Select
Select Case cbxCompone2.Text
Case ""
e1 = ""
Case "与"
e1 = "and"
Case "或"
e1 = "or"
End Select
Dim myarr3() As Entity.StudentE = {New Entity.StudentE, New Entity.StudentE, New Entity.StudentE}
myarr3(0).Compone = e0
myarr3(1).Compone = e1
Dim mybll As New BLL.StudentBLL
Dim dt As New DataTable
dt = mybll.ShowSinfoCom(myarr, myarr1, myarr2, myarr3)
If dt.Rows.Count() > 0 Then
DataGridView1.DataSource = dt
Else
MessageBox.Show("没有记录")
End If
End Sub
其中,f1、f2、f3是全局变量。另外,对于其他的一些判断,例如当第一个“组合关系”为空的时候,后面的下拉列表和文本框等都不能允许操作等要求,在此并没有进行设置。
下面再来看看业务逻辑层(B层)
Function ShowSinfoCom(ByVal myarr() As Entity.StudentE, ByVal myarr1() As Entity.StudentE, ByVal myarr2() As Entity.StudentE, ByVal myarr3() As Entity.StudentE) As DataTable
Dim mydal As New DAL.StudentDAL
Dim dt As New DataTable
dt = mydal.GetOnLineCom(myarr, myarr1, myarr2, myarr3)
Return dt
End Function
最后在来看一下DAL层,在这一层中,只向大家显示查询的SQL语句
Function GetOnLineCom(ByVal myarr() As Entity.StudentE, ByVal myarr1() As Entity.StudentE, ByVal myarr2() As Entity.StudentE, ByVal myarr3() As Entity.StudentE) As DataTable
Dim sql As String = "select * from Student_Info where " & myarr(0).Name & myarr1(0).Operation & " " & myarr2(0).txtName & myarr3(0).Compone & " " & myarr(1).Name & myarr1(1).Operation & " " & myarr2(1).txtName & myarr3(1).Compone & " " & myarr(2).Name & myarr1(2).Operation & myarr2(2).txtName & ""
Return myDataTable
End Function
这就是利用数组来进行的组合查询,当然你还可以利用拼接字符串等方法。
分享到:
相关推荐
VB.NET二维数组快速排序(更新) 'OldArrays(),为排序二维数组;NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行...
VB.NET二维数组快速排序: OldArrays(),为排序二维数组;NewArrays(),为存放结果数组;Header,是否有标题行;SortColumnsOrOrders(),传递排序参数数组,奇数个为排序列号,偶数为升降序,0为升序,1为降序
vb.net像VB6一样使用控件数组 像VB6一样用来保存对像的index值
VB.NET 下做控件数组 VB.NET里是没有控件数组,但一样可以实现控件数组的效果。
vb.net基础教程 第一部分 Visual Basic.net基础 1.vb.... 2.vb.net的优点 3.新建一个vb.net项目 ...4.编写第一个vb.net应用程序 ...8.vb.net的数组定义 9.vb.net的数组列表 10.vb.net的多维数组 。。。。。。
使用VB.NET实现控件数组的4种使用方法,比较基础,有基础参考价值!
VB.NET删除数组中的重复元素,包括源码和可执行程序,已在VS2005中测试通过。
vb.net 控件数组演示。。。。。。。。。。。。。。
经过长时间学习VB.NET数组声明和VB.NET数组初始化,于是和大家分享一下,看完本文你肯定有...VB.NET与其它语言相似,提供了简单的途径对数据进行分组,将它们存放到数组结构中。本文中,我们将回顾数组的声明和使用。
vb.net数组,包括课本上的全部例题原代码及教学课件
vb.net下利用Directshow_lib进行摄像头捕获 经测试能用。
在VB.NET下利用Socket实现简单的字符串发送接收程序
vb.net下的MQTT服务器、客户端,包含启动与关闭服务、连接与断开连接、发布与订阅等全部功能,对于用vb.net开发MQTT相关功能的需求有很大的帮助
初次接触VB.NET2010,写了一个RS485 MODBUS通讯
数组的概念,声明,使用,初始化,案例学生管理系统的提出
使用VB.NET对ACCESS数据库进行添加,删除,插入,修改,查询等用法,有解释 实例,帮助初学者理解,可以相互交流
最近做MQTT发布和订阅的功能,在网上找了很久,都是C#或其它语言的,vb.net的基本找不到,所以用vb.net做了个MQTT客户端的发布和订阅功能,不包含服务器代码。 要测试使用该代码,需要有自己的MQTT服务器。
通过vb.net对xml文件进行创建、插入、修改和删除操作,代码简洁,针对性强。
VB.Net摄像头,VB.Net摄像头,VB.Net摄像头,VB.Net摄像头,VB.Net摄像头
VB.NET的DataTable常用方法总结