【VB】SQL模糊查询和组合查询(机房问题)
来源:互联网 发布:linux下无线网卡驱动 编辑:程序博客网 时间:2024/05/11 05:49
在机房里,有三个窗体涉及到了组合查询,几乎可以用完全相同的代码。在这里,我以”操作员工作记录“为例介绍模糊查询和组合查询。
模糊查询,顾名思义,就是模糊查询数据库中数据,何为模糊呢?就是不给出准确的查询条件。例如:
txtSQL = "select * from worklog_Info where "这就是在模糊的查询worklog表数据。
什么又是组合查询呢?
组合查询的原理相当于多条件查询(参考我的博客SQL多条件查询),但又不同于多条件查询,组合查询是自己选择查询条件以及组合条件,然后将数据库中符合条件的语句查询出来。同样以“操作员工作记录”为例:
关键位置在哪?对,没错,就是最后的组合关系。
我敲这部分代码的时候是围绕组合关系展开的,在这里,组合查询可以有多种逻辑,我认为从这下手比较简单。
组合关系里只有”与“和”或“两种情况,两个选择框就是四种情况,1、2都空,1不空2空,1空2不空,1、2都不空。
首先,1、2都空的时候,就是只查询第一行;1不空2空是查询前两行;1空2不空是查询后两行;1、2都不空是查询三行。这样写囊括了全部可能出现的情况。
条件选择语句当然要以判断组合关系combo是否为空。
逻辑分析好了,然后来做前期工作。因为这是一个需要自己填入查询关键字、查询条件、查询内容以及查询组合关系的功能窗体。所以,我们要先把SQL不可识别的关键字转换为SQL可以识别的关键字。
在这里有两种方法。
1、select case法
就是定义一个自定义转换函数:
Public Function field(strfilename As String) As String Select Case strfilename Case "教师" field = "UserID" Case "注册日期" field = "LoginDate" Case "注册时间" field = "LoginTime" Case "注销日期" field = "LogoutDate" Case "注销时间" field = "LogoutTime" Case "机器名" field = "computer" Case "与" field = "and" Case "或" field = "or" End SelectEnd Function然后,在写组合查询语句的时候。
查询第一行:
txtSQL = "select * from worklog_Info where "
txtSQL = txtSQL & field(字段1.Text) & Trim(操作符1.Text) & "'" & Trim(关键字1.Text) & "'"查询前两行:
txtSQL = txtSQL & field(组合1.Text) & " " & field(字段2.Text) & 操作符2.Text & "'" & Trim(关键字2.Text) & "'"查询三行:
txtSQL = txtSQL & field(组合2.Text) & " " & field(字段3.Text) & 操作符3.Text & "'" & Trim(关键字3.Text) & "'"其中,field就是自定义的函数,它能将”组合“和”字段“中的如”与“和”教师“转换成SQL可识别的”and“和”UserID“。那为什么操作符不用转换呢,因为操作符本身就是SQL可识别的”=“,”<>“,”>“以及”<“。
2、If语句转换法(在对应combo的click事件中写,使用数组比较好,省时省力省代码。)
If comboField = "教师" Then comboField.Tag = "UserID" If comboField = "注册日期" Then comboField.Tag = "LoginDate" If comboField = "注册时间" Then comboField.Tag = "LoginTime" If comboField = "注销日期" Then comboField.Tag = "LogoutDate" If comboField = "注销时间" Then comboField.Tag = "LogoutTime" If comboField = "机器名" Then comboField.Tag = "computer"然后,在组合查询时,类似于上一种方法。
查询第一行:
txtSQL = "select * from worklog_Info where "
txtSQL = txtSQL & 字段1.Tag & Trim(操作符1.Text) & "'" & Trim(关键字1.Text) & "'"查询第二行:
txtSQL = txtSQL & 组合1.Tag & " " & 字段2.Tag & Trim(操作符2.Text) & "'" & Trim(关键字2.Text) & "'"查询第三行:
txtSQL = txtSQL & 组合2.Tag & " " & 字段3.Tag & Trim(操作符3.Text) & "'" & Trim(关键字3.Text) & "'"和第一种方法不同的是,在需要转换的地方是用的.Tag。对应到if语句中,完成了转换。
组合查询的总体思想以及部分代码就是这些,还有需要注意的是验证输入框是否为空,数据库是否为空的这些优化上面了。
0 0
- 【VB】SQL模糊查询和组合查询(机房问题)
- 【VB】SQL多条件查询(机房问题)
- 组合查询(vb.net版,机房收费系统)
- sql模糊查询实现组合查询
- 数据库组合查询和模糊查询
- VB查询数据库之组合查询——机房收费总结(二)
- SQL模糊查询排序问题
- 机房—组合查询
- 【机房收费】-- 组合查询
- 【机房收费】组合查询
- 【机房】-组合查询概要
- 机房之组合查询
- 机房-组合查询记
- VB.NET 机房收费系统之组合查询
- VB.NET机房收费系统——组合查询
- 组合查询(vb.net+三层架构之机房收费系统)
- vb.net机房收费系统—组合查询的实现
- VB.NET版机房收费系统之组合查询
- Android之——手机黑名单的实现
- [MapReducer]求平均数
- POJ 1753 Flip Game(dfs+枚举)
- Cocos2d-x 音频功能学习笔记
- 课程笔记 16:数据结构(清华) 图-邻接矩阵
- 【VB】SQL模糊查询和组合查询(机房问题)
- Android Api Demos登顶之路(十)Overscan
- VC6.0 生成mfc dll 无法加载
- HDU 5304 Eastest Magical Day Seep Group's Summer
- 解决高并发的数据库主从复制结构
- 内存管理
- Visio技巧总结
- android api 中文 (73)—— AdapterView
- ACM比赛技巧