VB—联合查询(查询学生信息实例)
来源:互联网 发布:知君本无邪番外 编辑:程序博客网 时间:2024/06/07 18:07
刚刚进行完了机房收费系统关于联合查询的部分,整个代码进行完了,才发现,联合查询的东西不是很多,要用到知识就只有一个写查询的语句,最难的地方就是分析查询情况,首先呢,简单介绍下我整个代码的思路,先列出查询时可能出现的情况:
1.我们现在将第一句话当成一个查询的条件(卡号=1),仅用这一个条件进行查询
2.将第一句话和第二句话联合起来,作为一个查询条件,进行查询(卡号=1与学号=1)
3.将第一、二、三种加起来,视为一种查询的条件,进行查询
分析完查询可能出现的几种情况,接下来,我们就开始写代码了!
Private Subcmdinquire_Click() Dim mrc As ADODB.Recordset Dim txtsql As String Dim msgtext As String '定义变量,将文本框中所输入的内容转化成字段输出来 Dim FLD(0 To 4) As String Dim relation(0 To 1) As String '定义三种方式,判断文本框中输入的内容是否为空(格式:text1.text<>"") Dim ok1 As Boolean Dim ok2 As Boolean Dim ok3 As Boolean If cmbfield(0) <> "" Andcmbsign(0) <> "" And Trim(txtinquire(0).Text) <>"" Then ok1 = True Else ok1 = False End If If cmbfield(0) <> "" Andcmbsign(0) <> "" And Trim(txtinquire(0).Text) <>"" And cmbandor(0).Text <> "" And cmbfield(1).Text<> "" And cmbsign(1).Text <> "" AndTrim(txtinquire(1).Text) <> "" Then ok2 = True Else ok2 = False End If If cmbfield(0) <> "" Andcmbsign(0) <> "" And Trim(txtinquire(0).Text) <>"" And cmbandor(0).Text <> "" And cmbfield(1).Text<> "" And cmbsign(1).Text <> "" AndTrim(txtinquire(1).Text) <> "" And cmbfield(2).Text <>"" And cmbsign(2).Text <> "" AndTrim(txtinquire(2).Text) <> "" Then ok3 = True Else ok3 = False End If定义一个变量FLD(注意:这里定义变量时所用的名称不能和VB里的关键字相重复) 将下拉菜单中所选择的东西转换成数据库中的字段,进行查询 FLD(0) = "work_date" FLD(1) = "work_time" FLD(2) = "work_teacher" FLD(3) = "teacher_type" FLD(4) = "PC_name" relation(0) = " and " relation(1) = " or " '当三种查询的条件都满足的时候 If ok1 = True Then If ok2 = True Then If ok3 = True Then (注意:ListIndex属性的使用,这里使用listIndex是为了设定下拉菜单中返回值为字符串) txtsql = "select * fromwork_teacher where " & Trim(FLD(cmbfield(0).ListIndex)) & Trim(cmbsign(0).Text) & "'" &Trim(txtinquire(0).Text) & "'" &relation(cmbandor(0).ListIndex) & Trim(FLD(cmbfield(1).ListIndex)) &Trim(cmbsign(1).Text) & "'" & Trim(txtinquire(1).Text) &"'" & relation(cmbandor(0).ListIndex) &Trim(FLD(cmbfield(2).ListIndex)) & Trim(cmbsign(2).Text) &"'" & Trim(txtinquire(2).Text) & "'" 写查询语句的时候更要注意符号的使用,尤其是单引号和双引号,在这里教给大家一个小方法,我们写完一句查询语句,然后可以 msgbox txtsql 设置一个立即窗口检查下自己是否书写正确! Else '满足两种查询条件 txtsql = "select * fromwork_teacher where " & Trim(FLD(cmbfield(0).ListIndex)) &Trim(cmbsign(0).Text) & "'" & Trim(txtinquire(0).Text) &"'" & relation(cmbandor(0).ListIndex) & Trim(FLD(cmbfield(1).ListIndex))& Trim(cmbsign(1).Text) & "'" & Trim(txtinquire(1).Text)& "'" End If Else '满足一种查询条件 txtsql = "select * fromwork_teacher where " & Trim(FLD(cmbfield(0).ListIndex)) &Trim(cmbsign(0).Text) & "'" & Trim(txtinquire(0).Text) &"'" End If Else '没有输入完整的条件,查空 Call checktext(0) Exit Sub End If Set mrc = ExecuteSQL(txtsql, msgtext) If mrc.EOF Then MsgBox "没有找到符合要求的结果!", vbOKOnly +vbInformation, "提示" With myflexgrid .Rows = 1 .CellAlignment = 4 .TextMatrix(0, 0) = "上机日期" .TextMatrix(0, 1) = "上机时间" .TextMatrix(0, 2) = "操作教师" .TextMatrix(0, 3) = "教师类型" .TextMatrix(0, 4) = "机器号" End With Exit Sub Else With myflexgrid .Rows = 1 .CellAlignment = 4 .TextMatrix(0, 0) = "上机日期" .TextMatrix(0, 1) = "上机时间" .TextMatrix(0, 2) = "操作教师" .TextMatrix(0, 3) = "教师类型" .TextMatrix(0, 4) = "机器号" Do While Not mrc.EOF .Rows = .Rows + 1 .TextMatrix(.Rows - 1, 0) =mrc.Fields("work_date") .TextMatrix(.Rows - 1, 1) =mrc.Fields("work_time") .TextMatrix(.Rows - 1, 2) =mrc.Fields("work_teacher") .TextMatrix(.Rows - 1, 3) =mrc.Fields("teacher_type") .TextMatrix(.Rows - 1, 4) =mrc.Fields("PC_name") mrc.MoveNext Loop End With mrc.Close End If End Sub Private SubForm_Load()cmbandor(0).AddItem"与"cmbandor(0).AddItem"或" cmbandor(1).AddItem"与"cmbandor(1).AddItem"或" cmbfield(0).AddItem"上机日期"cmbfield(0).AddItem"上机时间"cmbfield(0).AddItem"操作教师"cmbfield(0).AddItem"教师类型"cmbfield(0).AddItem"机器号" cmbfield(1).AddItem"上机日期"cmbfield(1).AddItem"上机时间"cmbfield(1).AddItem"操作教师"cmbfield(1).AddItem"教师类型"cmbfield(1).AddItem"机器号" cmbfield(2).AddItem"上机日期"cmbfield(2).AddItem"上机时间"cmbfield(2).AddItem"操作教师"cmbfield(2).AddItem"教师类型"cmbfield(2).AddItem"机器号" cmbsign(0).AddItem"<"cmbsign(0).AddItem">"cmbsign(0).AddItem"="cmbsign(0).AddItem"<>" cmbsign(1).AddItem"<"cmbsign(1).AddItem">"cmbsign(1).AddItem"="cmbsign(1).AddItem"<>" cmbsign(2).AddItem"<"cmbsign(2).AddItem">"cmbsign(2).AddItem"="cmbsign(2).AddItem"<>"' End SubPrivate Subchecktext(Index As Integer) Dim ok1 As Boolean Dim ok2 As Boolean Dim ok3 As Boolean If cmbfield(0) <> "" Andcmbsign(0) <> "" And Trim(txtinquire(0).Text) <>"" Then ok1 = True Else ok1 = False End If If cmbfield(0) <> "" Andcmbsign(0) <> "" And Trim(txtinquire(0).Text) <>"" And cmbandor(0).Text <> "" And cmbfield(1).Text<> "" And cmbsign(1).Text <> "" AndTrim(txtinquire(1).Text) <> "" Then ok2 = True Else ok2 = False End If If cmbfield(0) <> "" Andcmbsign(0) <> "" And Trim(txtinquire(0).Text) <> ""And cmbandor(0).Text <> "" And cmbfield(1).Text <>"" And cmbsign(1).Text <> "" AndTrim(txtinquire(1).Text) <> "" And cmbfield(2).Text <>"" And cmbsign(2).Text <> "" AndTrim(txtinquire(2).Text) <> "" Then ok3 = True Else ok3 = False End If If Not TestTxt(cmbfield(Index).Text) Then MsgBox "请选择字段名", vbOKOnly + vbInformation,"提示" cmbfield(Index).SetFocus Exit Sub End If If Not TestTxt(cmbsign(Index).Text) Then MsgBox "请选择操作符", vbOKOnly + vbInformation,"提示" cmbsign(Index).SetFocus Exit Sub End If If Not TestTxt(txtinquire(Index).Text) Then MsgBox "请输入要查询的内容", vbOKOnly +vbInformation, "提示" txtinquire(Index).SetFocus Exit Sub End If End Sub
到这了,所有的功能就能全部实现了,看下是不是很简单呢! 如果谁有更好的方法欢迎指点批评!
- VB—联合查询(查询学生信息实例)
- 学生上机信息统计——对两张表的联合查询
- MySQL 联合查询实例
- 学生信息查询器
- 登录查询学生信息
- 学生信息查询
- 学生信息查询系统(有点问题)
- 实例讲解MySQL联合查询
- 实例讲解MySQL联合查询
- 实例讲解MySQL联合查询
- 实例讲解MySQL联合查询
- MySQL 实例讲解联合查询
- C++面向对象编程实例——实现学生信息的添加与查询
- 简易学生信息查询系统
- 学生信息查询--JDBC学习
- 查询数组中的学生信息
- 学生信息查询 总复习
- vb.net Linq四表联合查询
- android Animation
- plsa中的d variable
- JavaSwing图形界面编程之JProgressBar(一)
- ZKW费用流
- 【笔试/面试题】中科创达——9.28
- VB—联合查询(查询学生信息实例)
- Ubuntu 常用快捷键
- Css样式详解--选择器
- JavaSwing图形界面编程之JFileChooser(一)
- Android 让按钮闪烁(点击的时候停止闪烁)
- poj 2528 经典线段树入门
- Android中在控件上显示倒计时
- IIS发布网站以及引用office组件不能远程访问问题
- ganglia与Ubuntu安装与配置