对于组合查询,我用了一种很简单的方法去实现它--------字段组合(将用户选择的字段组合起来传入到sql中进行查询)
这个的难点其实这有两个:
第一个:如何将选择的内容写到sql中
第二个:当选择的条件变得很多的时候要如何处理多种组合关系
首先来看第一个问题:其实这个问题的解决时很简单的
拆开来看这个问题:其实就是涉及到两个小问题
第一个小问题:如何表示我们选择的问题
第二个小问题:如何sql语句
第一个问题的解决方法:
在做机房收费系统的时候我用的是ComboBox放在用户的界面来让用户来选择,那么用户选择的东西就ComboBox.text
第二个问题的解决方法:
(我在这里就不写vb如何与sql数据库连接的问题了,只是写出如何写sql语句)
其实也是很简单的,首先想要是我要传入sql中就是简单的已经确定的,那么我么你会如何写sql语句呢?
举个例子查询sql数据库student_info表中学号=1的同学的学生信息
sql="select * from student_info where studentno=' " & 1 & "' "
那么组合查询的语句和这个语句的区别就在于 句子中的 studentno,=,1,变成了ComboBox.text
那么上面的句子就可以写成()
sql= "select * from student_info where " & strName(Combo1.Text) & " " & Trim(Combo2.Text) & "'" & Trim(Combo3.Text) & "'"
接下来需要解决的就是第二个问题了:
以我做的机房收费系统为例子,在这里介绍两种解决思路:
第一种思路:将图中每个红色的边框作为一个选择的整体
代码:
实现将每一行看做一个整体进行查询
实现组合查询:
第二种思路:将图中三行作为一个整体
这种方式下面的sql语句和上面就有所不同了,但是他们本质上都是来实现三行的查询组合。只不过现在的这种查询组合是在sql语句中实现,而不是在vb中使用if end if语句来实现的 具体的代码其实和上面的逻辑过程差不多,只不过没有了if语句,仅仅变成了sql语句,这样子的代码就很简单,整洁。 比如我们只选择第一行输入,其他两行输入,那么语句就写成: txtsql = "select * from line_info where " & strName(Combo1.Text) & " " & Trim(Combo4.Text) & "'" & Trim(Text1.Text) & "'" txtsql = txtsql & "and 1='" & "1" & "'" txtsql = txtsql & "and 1='" & "1" & "'" ”或”,“与“用and代替,后两行用1=1这个代替了,它在sql中返回值肯定是true,那么查询出来其实就是第一行的内容 如果输入了第一行和第二行,那么将第二行的combo.text代替1=1就可以了。 以此类推一直将全部的组合的sql语句写出来就可以完成组合查询了。
原文链接:https://www.f2er.com/vb/259417.html