二见钟情之组合查询(vb.net版)
发布时间:2020-12-17 08:03:43 所属栏目:百科 来源:网络整理
导读:第一遍做机房系统组合查询的时候用的是VB6.0,当时就一个感觉:乱。当时做的时候稀里糊涂的,好不容易应付了事,松了口气。这次是第二遍,用VB.NET还没开始做呢,心里就开始打鼓了,不过做完了以后,发现还是挺有意思的。在做之前也是一边各种查一边各种想,
第一遍做机房系统组合查询的时候用的是VB6.0,当时就一个感觉:乱。当时做的时候稀里糊涂的,好不容易应付了事,松了口气。这次是第二遍,用VB.NET还没开始做呢,心里就开始打鼓了,不过做完了以后,发现还是挺有意思的。在做之前也是一边各种查一边各种想,我用的是拼接字符串,主要是参考了高迎的博客。下面以“学生基本信息维护”为例来说说我是怎么做的。 首先是界面:
首先是U层代码,这一层的代码觉得还是很重要的Imports BLL
Imports Entity
Public Class frmStudentData
Private Sub frmStudentData_Load(sender As Object,e As EventArgs) Handles Me.Load
'窗体刚加载的时候,只允许第一组查询条件可用
comboField2.Enabled = False
comboOperate2.Enabled = False
comboCheck2.Enabled = False
comboUnion2.Enabled = False
comboField3.Enabled = False
comboOperate3.Enabled = False
comboCheck3.Enabled = False
comboUnion1.Items.Clear()
comboUnion1.Items.Add("")
comboUnion1.Items.Add("或")
comboUnion1.Items.Add("与")
End Sub
Private Sub comboUnion1_TextChanged(sender As Object,e As EventArgs) Handles comboUnion1.TextChanged
'当鼠标点击第一个组合关系框的时候,判断第一组查询条件是否填写完整
'若不完整,给出提示
'若完整,则第二组查询条件和第二个关系组合框变为可用
If comboField1.Text <> "" And comboOperate1.Text <> "" And comboCheck1.Text <> "" Then
comboField2.Enabled = True
comboOperate2.Enabled = True
comboCheck2.Enabled = True
comboUnion2.Enabled = True
comboUnion2.Items.Clear()
comboUnion2.Items.Add("或")
comboUnion2.Items.Add("与")
Else
MsgBox("请将第一组查询条件填写完整!","提示")
Exit Sub
End If
End Sub
Private Sub comboUnion2_TextChanged(sender As Object,e As EventArgs) Handles comboUnion2.TextChanged
'当鼠标点击第二个组合关系框的时候,判断第二组查询条件是否填写完整
'若不完整,给出提示
'若完整,则第三组查询条件可用
If comboField2.Text <> "" And comboOperate2.Text <> "" And comboCheck2.Text <> "" Then
comboField3.Enabled = True
comboOperate3.Enabled = True
comboCheck3.Enabled = True
Else
MsgBox("请将第二组查询条件填写完整","提示")
Exit Sub
End If
End Sub
Private Sub btnQuit_Click(sender As Object,e As EventArgs) Handles btnQuit.Click
End
End Sub
Private Sub btnCheck_Click(sender As Object,e As EventArgs) Handles btnCheck.Click
If comboField1.Text = "" Or comboOperate1.Text = "" Or comboCheck1.Text = "" Then
MsgBox("请将查询条件填写完整!","提示")
Exit Sub
End If
'拼接字符串
Dim sqlstring As String = Nothing
'按照组合框的组合关系来分别针对每一种组合关系来拼接字符串
'当组合关系框均为空时
If comboUnion1.Text = "" Then
sqlstring = GetEnglish(comboField1.Text) + comboOperate1.Text + comboCheck1.Text
'当第一个组合框不为空,第二个组合框为空时有两种情况:
'1、“或”“空”
ElseIf comboUnion1.Text = "或" And comboUnion2.Text = "" Then
sqlstring = GetEnglish(comboField1.Text) + comboOperate1.Text + comboCheck1.Text Or GetEnglish(comboField2.Text) + comboOperate2.Text + comboCheck2.Text
'2、“与”“空”
ElseIf comboUnion1.Text = "与" And comboUnion2.Text = "" Then
sqlstring = GetEnglish(comboField1.Text) + comboOperate1.Text + comboCheck1.Text And GetEnglish(comboField2.Text) + comboOperate2.Text + comboCheck2.Text
'当两个组合框均不为空时,有四种组合情况
'1、“或”“或”
ElseIf comboUnion1.Text = "或" And comboUnion2.Text = "或" Then
sqlstring = GetEnglish(comboField1.Text) + comboOperate1.Text + comboCheck1.Text Or GetEnglish(comboField2.Text) + comboOperate2.Text + comboCheck2.Text Or GetEnglish(comboField3.Text) + comboOperate3.Text + comboCheck3.Text
'2、“与”“与”
ElseIf comboUnion1.Text = "与" And comboUnion2.Text = "与" Then
sqlstring = GetEnglish(comboField1.Text) + comboOperate1.Text + comboCheck1.Text And GetEnglish(comboField2.Text) + comboOperate2.Text + comboCheck2.Text And GetEnglish(comboField3.Text) + comboOperate3.Text + comboCheck3.Text
'3、“或”“与”
ElseIf comboUnion1.Text = "或" And comboUnion2.Text = "与" Then
sqlstring = GetEnglish(comboField1.Text) + comboOperate1.Text + comboCheck1.Text Or GetEnglish(comboField2.Text) + comboOperate2.Text + comboCheck2.Text And GetEnglish(comboField3.Text) + comboOperate3.Text + comboCheck3.Text
'4、“与”“或”
ElseIf comboUnion1.Text = "与" And comboUnion2.Text = "或" Then
sqlstring = GetEnglish(comboField1.Text) + comboOperate1.Text + comboCheck1.Text And GetEnglish(comboField2.Text) + comboOperate2.Text + comboCheck2.Text Or GetEnglish(comboField3.Text) + comboOperate3.Text + comboCheck3.Text
End If
'调用B层函数
Dim dtStuData As DataTable = StuCardManageBLL.CheckStuData(sqlstring)
If dtStuData.Rows.Count = 0 Then
MsgBox("没有记录,请重试!","提示")
Exit Sub
dtStuData.Clear()
DataGridView1.DataSource = Nothing
DataGridView1.Refresh()
Else
'显示记录
DataGridView1.Refresh()
DataGridView1.DataSource = dtStuData
End If
End Sub
'将界面上的中文字段名转换为数据库中的英文字段名
Public Function GetEnglish(ByVal strField As String) As String
Select Case (strField)
Case "卡号"
Return "CardNo"
Case "学号"
Return "StudentNo"
Case "姓名"
Return "Name"
Case "性别"
Return "Sex"
Case "系别"
Return "Department"
Case "年级"
Return "Grade"
Case "班级"
Return "Class"
Case "教师"
Return "Teacher"
Case Else
Return ""
End Select
End Function
|