组合查询一直是我一个头疼的事情,经过我不懈努力,终于在看了多次博客找了n多资料后实现了,现在拿出来和大家共享,希望大家指正!
首先是界面:
然后我们分层来看,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+sql server。采用MVC三层架构,及一些设计模式,其设计采用UMl标准……
计算机专业毕业设计源码_vb.net酒店管理系统设计与实现_基于VB_IT毕设论文.zip计算机专业毕业设计源码_vb.net酒店管理系统设计与实现_基于VB_IT毕设论文.zip计算机专业毕业设计源码_vb.net酒店管理系统设计与实现_...
vb.net编写的学生管理系统。经典实用,初学VB.NET最好用的参考代码。可直接执行。
耗时一个月的经典之作,是初学VB.NET 想做管理系统重要的参考 里面含有丰富的代码 漂亮的界面 来源于郑州大学信息工程学院
vb.net酒店管理系统设计与实现.zip
VB.NET 开发程序【学校信息系统源码.zip】.zip VB.NET 开发程序【学校信息系统源码.zip】.zip 陈表达SQL server开发程序案例:VB.NET 开发程序【学校信息系统exe.zip】 本程序应用技术:1、SQL自定义函数,减少每次...
用vb.net开发的学生成绩管理系统 简单易懂 有数据库 作为学习vb.net练手还是很不错的
命名规范,注释详细,能看出整体思路和学习过程,且能顺利运行,若有疑问,欢迎来我的博客(http://blog.csdn.net/sun15732621550)进行交流~
winform多语言,vb.net,vb.net多语言程序,多语言切换,.net多语言实现
vb.net用VB做的通讯系统。vb.net用VB做的通讯系统。vb.net用VB做的通讯系统。vb.net用VB做的通讯系统。vb.net用VB做的通讯系统。vb.net用VB做的通讯系统。vb.net用VB做的通讯系统。vb.net用VB做的通讯系统。vb.net用...
VB.NET实现多语言(根据操作系统自动选择语言)系统,可以实现中文,日文,英文界面,实现了多界面操作。 非常好用,曾在工作中遇到该问题,查了很多,都不全面,后来,总算是找到了。分享给大家。具体可以查看我的...
资源名:VB.NET实现TCPIP通讯转发功能程序源码 资源类型:程序源代码 源码说明: 最近需要研究一个通讯,监视抓包的工具感觉不是很直观,网上找到的工具只能转发却看不到数据包内容,实在忍不了了。所以自己写了个,...
资源名字:基于vb+VB.NET+SQL Server的教务信息管理系统设计与实现(源码+文档)_vb_vb.net_CS架构_教务信息管理系统.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功...
vb.net 学生管理系统
VB.NET 图书管理系统
NET VB.NET 图片 管理 系统,附数据库
基于vb.net 的学生选课系统,数据库是用的access,全部实现,代码简洁明了,欢迎大家下载使用,大家可以不需作者本人同一转载,但不能用于商业用途
8、数据维护可以备份数据库,也可以直接操作SQL语句(不建议使用),这样数据可以更容易备份,系统更安全。 9、学生可以前台查询自己本学期的课程的成绩信息; 10、可以自动计算一个班级的所有学生成绩的整体排名和...
12.陈恩点VB.NET 视频系统记事本应用程序 13.陈恩点VB.NET 视频人事系统实例Access版 14陈恩点VB.NET 视频人事系统实例SQL版 15.陈恩点VB.NET 视频发送邮件实例讲解 16.陈恩点VB.NET 视频Access基本操作3合1 17.陈恩...