vb.net机房收费系统—组合查询的实现

组合查询一直是我一个头疼的事情,经过我不懈努力,终于在看了多次博客找了n多资料后实现了,现在拿出来和大家共享,希望大家指正!

首先是界面:

vb.net机房收费系统—组合查询的实现_第1张图片


然后我们分层来看,B层实现对汉字向英文字符的转换:

'/************************************************* 
'作者:许恕
'小组:  
'说明:转换组合查询汉字为代码的类
'创建日期:2013.3.8
'版本号:v1.0.0
'*********************************************/

Public Class CombineCheckChangeStringBLL

    '     /// <summary>
    '     /// depiction:<改方法是转换上下机字符>
    '        /// </summary>
    '        /// <param name="<strCombineString>"><上下机实体></param>
    '             /// <returns>
    '             ///<返回上下机实体>
    '     /// </returns>
    Public Function ChangeOnlineRecordString(strCombineString As Entity.CombineSelectEntity) As Entity.CombineSelectEntity
        '转换字段
        strCombineString.FieldName1 = ChangeOnlineRecordFieldName(strCombineString.FieldName1)
        strCombineString.FieldName2 = ChangeOnlineRecordFieldName(strCombineString.FieldName2)
        strCombineString.FieldName3 = ChangeOnlineRecordFieldName(strCombineString.FieldName3)
        '装换操作符
        strCombineString.OperationalChar1 = ChangeOperationalChar(strCombineString.OperationalChar1)
        strCombineString.OperationalChar2 = ChangeOperationalChar(strCombineString.OperationalChar2)
        strCombineString.OperationalChar3 = ChangeOperationalChar(strCombineString.OperationalChar3)
        '转换关系符
        strCombineString.Relationchar1 = ChangeRelationchar(strCombineString.Relationchar1)
        strCombineString.Relationchar2 = ChangeRelationchar(strCombineString.Relationchar2)
        Return strCombineString

    End Function

'      /// <summary>
    '     /// depiction:<改方法是转换上下机字符-字段>
    '        /// </summary>
    '        /// <param name="<strOnline>"><上下机字符></param>
    '             /// <returns>
    '             ///<返回上字符串>
    '     /// </returns>
    Public Function ChangeOnlineRecordFieldName(strOnline As String) As String
        Dim strOnlineReturn As String
        Select Case strOnline
            Case "卡号"
                strOnlineReturn = "card_id"
            Case "上机日期"
                strOnlineReturn = "online_date"
            Case "上机时间"
                strOnlineReturn = "online_time"
            Case "机房号"
                strOnlineReturn = "computer_no"
            Case Else
                strOnlineReturn = ""
        End Select
        Return strOnlineReturn
    End Function
 '      /// <summary>
    '     /// depiction:<改方法是转换字符-操作符>
    '        /// </summary>
    '        /// <param name="<strOnline>"><上下机字符></param>
    '             /// <returns>
    '             ///<返回上字符串>
    '     /// </returns>
    Public Function ChangeOperationalChar(strChange As String) As String
        Dim strRenturn As String
        Select Case strChange
            Case "大于"
                strRenturn = " > "
            Case "小于"
                strRenturn = " < "
            Case "等于"
                strRenturn = " = "
            Case "不等于"
                strRenturn = " <> "
            Case Else
                strRenturn = " "
        End Select
        Return strRenturn
    End Function

    '      /// <summary>
    '     /// depiction:<改方法是转换关系字符>
    '        /// </summary>
    '        /// <param name="<strOnline>"><上下机字符></param>
    '             /// <returns>
    '             ///<返回上字符串>
    '     /// </returns>
    Public Function ChangeRelationchar(strChange As String) As String
        Dim strRenturn As String
        Select Case strChange
            Case "并且"
                strRenturn = "  and  "
            Case "或者"
                strRenturn = "  or   "
            Case Else
                strRenturn = ""
        End Select
        Return strRenturn
    End Function
End Class
'/************************************************* 
'作者:许恕
'小组:  
'说明:上机事务的类
'创建日期:2013.2.28
'版本号:v1.0.0
'*********************************************/
Public Class OnlineBLL
'     /// <summary>
    '     /// depiction:<改方法是组合查询上机信息>
    '        /// </summary>
    '        /// <param name="<checkString>"><组合查询实体></param>
    '             /// <returns>
    '             ///<返回datatable>
    '     /// </returns>
    Public Function CombineCheckOnlineRecord(enCheckString As Entity.CombineSelectEntity) As DataTable
        '改变组合查询的字符为英文
        Dim ChangeStringBLL As New CombineCheckChangeStringBLL
        enCheckString = ChangeStringBLL.ChangeOnlineRecordString(enCheckString)


        '查询内容
        Dim RecordFactory As New Factory.RecordFactory
        Dim IOnlineRecordDAL As IDAL.IOnLineRecordSeverDAL
        Dim OnlineDataTable As DataTable
        IOnlineRecordDAL = RecordFactory.CreatOnLineRecordSeverDAL()
        OnlineDataTable = IOnlineRecordDAL.CombineCheckOnlineRecord(enCheckString)


        '返回查询到的内容
        Return OnlineDataTable


    End Function


End Class


放到DAL 层我们的实现就简单了,我们拼接字符串查询就可以了

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration

'/************************************************* 
'作者:许恕
'小组:  
'说明:组合查询字符组合成sql的类
'创建日期:2013.3.9
'版本号:v1.0.0
'*********************************************/

Public Class GroupCombineSqlStringDAL

    '     /// <summary>
    '     /// depiction:<改方法是组合上机查询语句>
    '        /// </summary>
    '        /// <param name="<enCheckString>"><组合查询字符实体></param>
    '             /// <returns>
    '             ///<返回string>
    '     /// </returns>
    Public Shared Function GroupOnlineSqlString(enCheckString As Entity.CombineSelectEntity) As String
        Dim strSQL As String
        strSQL = "Select * from T_OnLineRecord where " & enCheckString.FieldName1 & enCheckString.OperationalChar1 & " @SelectString1  "

        If enCheckString.Relationchar1 = "" Then
            Return strSQL
        End If

        strSQL = strSQL & enCheckString.Relationchar1 & " " & enCheckString.FieldName2 & enCheckString.OperationalChar2 & " @SelectString2  "

        If enCheckString.Relationchar2 = "" Then
            Return strSQL
        End If

        strSQL = strSQL & enCheckString.Relationchar1 & " " & enCheckString.FieldName2 & enCheckString.OperationalChar2 & " @SelectString2  "

        Return strSQL

    End Function
End Class

'/************************************************* 
'作者:许恕
'小组:  
'说明:对用户表操作的类
'创建日期:2013.2.28 16:00
'版本号:v1.0.0
'*********************************************/
Public Class SQLSeverOnLineRecordSeverDAL : Implements IDAL.IOnLineRecordSeverDAL
'     /// <summary>
    '     /// depiction:<改方法是组合查询记录>
    '        /// </summary>
    '        /// <param name="<enCard>"><查询实体></param>
    '             /// <returns>
    '             ///<返回datatable>
    '     /// </returns>
Public Function CombineCheckOnlineRecord(enCheckString As Entity.CombineSelectEntity) As DataTable Implements IDAL.IOnLineRecordSeverDAL.CombineCheckOnlineRecord
        '创建sqlhelper类
        Dim userSqlHelper As New SqlHelper.SQLHelper

        'sql语句
        Dim strSql As String
        Dim OnlineDataTable As DataTable


        'Sql查询语句  
        strSql = GroupCombineSqlStringDAL.GroupOnlineSqlString(enCheckString)

        '设置参数  
        
        Dim sqlParams As SqlParameter()
        If enCheckString.Relationchar1 = "" Then
            sqlParams = {
            New SqlParameter("@SelectString1", enCheckString.SelectString1)
            }
        End If

        If enCheckString.Relationchar2 = "" And enCheckString.Relationchar1 <> "" Then
            sqlParams = {
            New SqlParameter("@SelectString1", enCheckString.SelectString1),
            New SqlParameter("@SelectString2", enCheckString.SelectString2)
            }
        End If

        If enCheckString.Relationchar2 <> "" And enCheckString.Relationchar1 <> "" Then
            sqlParams = {
            New SqlParameter("@SelectString1", enCheckString.SelectString1),
            New SqlParameter("@SelectString2", enCheckString.SelectString2),
            New SqlParameter("@SelectString3", enCheckString.SelectString3)
            }
        End If

        
        '执行  
        OnlineDataTable = userSqlHelper.ExecuteSelect(strSql, CommandType.Text, sqlParams)

        Return OnlineDataTable
    End Function
End Class


最后是结果:我们艰苦的奋斗有了结果:

vb.net机房收费系统—组合查询的实现_第2张图片


你可能感兴趣的:(VB.NET)