首先,什麼情況下要用到組合查詢呢?總的來說,有兩種情況:一是在單個查詢中從不同的表返回類似結構的數據;二是對單個表執行多個查詢,按單個查詢返回數據。在這裡,我們說的組合查詢是指第二種情況,即要查詢的表是固定的,查詢條件是不定的並且有多個查詢條件。
從例子來看,

例如,輸入相應的查詢條件
1、教師不等於“0”
2、機器號等於“yang”
兩個條件是“與”的關系,我們可以很容易的寫出它的sql語句
select * from T_Worklog_Info where id <> '0' and computer='yang'
所以接下來要做的核心就是拼出這條語句。
在U層,我們把輸入的查詢條件的信息賦給實體,然後把實體傳入B層。
Dim student As New Login.Model.CmbQueryInfo
Dim Bquery As New Login.BLL.cmbQueryforBLL
'定義控件基類
Dim controlArray(2) As System.Windows.Forms.Control
Dim table As New DataTable
Dim i As Integer
controlArray(0) = cmbWord1
controlArray(1) = cmbOperator1
controlArray(2) = txtContent1
'字段名
student.FileName1 = cmbWord1.Text
student.FileName2 = cmbWord2.Text
student.FileName3 = cmbWord3.Text
'操作符
student.Operator1 = cmbOperator1.Text
student.Operator2 = cmbOperator2.Text
student.Operator3 = cmbOperator3.Text
'查詢內容
student.QueryContent1 = txtContent1.Text
student.QueryContent2 = txtContent2.Text
student.QueryContent3 = txtContent3.Text
'組合關系
student.CompositionRelation1 = cmbRelation1.Text
student.CompositionRelation2 = cmbRelation2.Text
DataGridView1.Rows.Clear()
'查詢
table = Bquery.cmbQuery(student, "T_Worklog_Info")
在B層,接收實體之後,開始拼接字符串。
首先,會用到兩個方法。
ModifyFields方法主要是把“卡號”等中文字符轉換為數據庫中的字段“cardno”。
Public Function ModifyFields(student As Login.Model.CmbQueryInfo) As Login.Model.CmbQueryInfo
Dim str As String
Select Case student.FileName1
Case "卡號"
str = "cardno"
Case "學號"
str = "studentno"
Case "姓名"
str = "studentname"
Case "性別"
str = "sex"
Case "系別"
str = "apartment"
Case "年級"
str = "grade"
Case "班級"
str = "class"
Case "上機日期"
str = "ondate"
Case "上機時間"
str = "ontime"
Case "下機日期"
str = "offdate"
Case "下機時間"
str = "offtime"
Case "機房號"
str = "computer"
Case "機器號"
str = "computer"
Case "登錄日期"
str = "LoginDate"
Case "登錄時間"
str = "LoginTime"
Case "注銷日期"
str = "LogoutDate"
Case "注銷時間"
str = "LogoutTime"
Case "教師"
str = "id"
Case Else
str = ""
End Select
student.FileName1 = str
'student.FileName2, student.FileName3類似
Select Case student.CompositionRelation1
Case "與"
str = "and"
Case "或"
str = "or"
Case Else
str = "NO"
End Select
student.CompositionRelation1 = str
Select Case student.CompositionRelation2
Case "與"
str = "and"
Case "或"
str = "or"
Case Else
str = "NO"
End Select
student.CompositionRelation2 = str
Return student
End Function
本欄目