VB—联合查询(查询学生信息实例)

前端之家收集整理的这篇文章主要介绍了VB—联合查询(查询学生信息实例)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

刚刚进行完了机房收费系统关于联合查询的部分,整个代码进行完了,才发现,联合查询的东西不是很多,要用到知识就只有一个写查询的语句,最难的地方就是分析查询情况,首先呢,简单介绍下我整个代码的思路,先列出查询时可能出现的情况:


1.我们现在将第一句话当成一个查询的条件(卡号=1),仅用这一个条件进行查询

2.将第一句话和第二句话联合起来,作为一个查询条件,进行查询(卡号=1与学号=1)

3.将第一、二、三种加起来,视为一种查询的条件,进行查询

分析完查询可能出现的几种情况,接下来,我们就开始写代码了!

  1. Private Subcmdinquire_Click()
  2. Dim mrc As ADODB.Recordset
  3. Dim txtsql As String
  4. Dim msgtext As String
  5. '定义变量,将文本框中所输入的内容转化成字段输出
  6. Dim FLD(0 To 4) As String
  7. Dim relation(0 To 1) As String
  8. '定义三种方式,判断文本框中输入的内容是否为空(格式:text1.text<>"")
  9. Dim ok1 As Boolean
  10. Dim ok2 As Boolean
  11. Dim ok3 As Boolean
  12. If cmbfield(0) <> "" Andcmbsign(0) <> "" And Trim(txtinquire(0).Text) <>"" Then
  13. ok1 = True
  14. Else
  15. ok1 = False
  16. End If
  17. 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
  18. ok2 = True
  19. Else
  20. ok2 = False
  21. End If
  22. 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
  23. ok3 = True
  24. Else
  25. ok3 = False
  26. End If
  27. 定义一个变量FLD(注意:这里定义变量时所用的名称不能和VB里的关键字相重复)
  28.   将下拉菜单中所选择的东西转换成数据库中的字段,进行查询
  29. FLD(0) = "work_date"
  30. FLD(1) = "work_time"
  31. FLD(2) = "work_teacher"
  32. FLD(3) = "teacher_type"
  33. FLD(4) = "PC_name"
  34. relation(0) = " and "
  35. relation(1) = " or "
  36. '当三种查询的条件都满足的时候
  37. If ok1 = True Then
  38. If ok2 = True Then
  39. If ok3 = True Then                (注意:ListIndex属性的使用,这里使用listIndex是为了设定下拉菜单中返回值为字符串)
  40. 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) & "'"
  41. 查询语句的时候更要注意符号的使用,尤其是单引号和双引号,在这里教给大家一个小方法,我们写完一句查询语句,然后可以 msgBox txtsql 设置一个立即窗口检查下自己是否书写正确!
  42. Else '满足两种查询条件
  43. 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)& "'"
  44. End If
  45. Else '满足一种查询条件
  46. txtsql = "select * fromwork_teacher where " & Trim(FLD(cmbfield(0).ListIndex)) &Trim(cmbsign(0).Text) & "'" & Trim(txtinquire(0).Text) &"'"
  47. End If
  48. Else '没有输入完整的条件,查空
  49. Call checktext(0)
  50. Exit Sub
  51. End If
  52. Set mrc = Executesql(txtsql,msgtext)
  53. If mrc.EOF Then
  54. MsgBox "没有找到符合要求的结果!",vbOKOnly +vbInformation,"提示"
  55. With myflexgrid
  56. .Rows = 1
  57. .CellAlignment = 4
  58. .TextMatrix(0,0) = "上机日期"
  59. .TextMatrix(0,1) = "上机时间"
  60. .TextMatrix(0,2) = "操作教师"
  61. .TextMatrix(0,3) = "教师类型"
  62. .TextMatrix(0,4) = "机器号"
  63. End With
  64. Exit Sub
  65. Else
  66. With myflexgrid
  67. .Rows = 1
  68. .CellAlignment = 4
  69. .TextMatrix(0,4) = "机器号"
  70. Do While Not mrc.EOF
  71. .Rows = .Rows + 1
  72. .TextMatrix(.Rows - 1,0) =mrc.Fields("work_date")
  73. .TextMatrix(.Rows - 1,1) =mrc.Fields("work_time")
  74. .TextMatrix(.Rows - 1,2) =mrc.Fields("work_teacher")
  75. .TextMatrix(.Rows - 1,3) =mrc.Fields("teacher_type")
  76. .TextMatrix(.Rows - 1,4) =mrc.Fields("PC_name")
  77. mrc.MoveNext
  78. Loop
  79. End With
  80. mrc.Close
  81. End If
  82. End Sub
  83. Private SubForm_Load()
  84. cmbandor(0).AddItem"与"
  85. cmbandor(0).AddItem"或"
  86. cmbandor(1).AddItem"与"
  87. cmbandor(1).AddItem"或"
  88. cmbfield(0).AddItem"上机日期"
  89. cmbfield(0).AddItem"上机时间"
  90. cmbfield(0).AddItem"操作教师"
  91. cmbfield(0).AddItem"教师类型"
  92. cmbfield(0).AddItem"机器号"
  93. cmbfield(1).AddItem"上机日期"
  94. cmbfield(1).AddItem"上机时间"
  95. cmbfield(1).AddItem"操作教师"
  96. cmbfield(1).AddItem"教师类型"
  97. cmbfield(1).AddItem"机器号"
  98. cmbfield(2).AddItem"上机日期"
  99. cmbfield(2).AddItem"上机时间"
  100. cmbfield(2).AddItem"操作教师"
  101. cmbfield(2).AddItem"教师类型"
  102. cmbfield(2).AddItem"机器号"
  103. cmbsign(0).AddItem"<"
  104. cmbsign(0).AddItem">"
  105. cmbsign(0).AddItem"="
  106. cmbsign(0).AddItem"<>"
  107. cmbsign(1).AddItem"<"
  108. cmbsign(1).AddItem">"
  109. cmbsign(1).AddItem"="
  110. cmbsign(1).AddItem"<>"
  111. cmbsign(2).AddItem"<"
  112. cmbsign(2).AddItem">"
  113. cmbsign(2).AddItem"="
  114. cmbsign(2).AddItem"<>"
  115. '
  116. End Sub
  117. Private Subchecktext(Index As Integer)
  118. Dim ok1 As Boolean
  119. Dim ok2 As Boolean
  120. Dim ok3 As Boolean
  121. If cmbfield(0) <> "" Andcmbsign(0) <> "" And Trim(txtinquire(0).Text) <>"" Then
  122. ok1 = True
  123. Else
  124. ok1 = False
  125. End If
  126. 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
  127. ok2 = True
  128. Else
  129. ok2 = False
  130. End If
  131. 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
  132. ok3 = True
  133. Else
  134. ok3 = False
  135. End If
  136. If Not TestTxt(cmbfield(Index).Text) Then
  137. MsgBox "请选择字段名",vbOKOnly + vbInformation,"提示"
  138. cmbfield(Index).SetFocus
  139. Exit Sub
  140. End If
  141. If Not TestTxt(cmbsign(Index).Text) Then
  142. MsgBox "请选择操作符","提示"
  143. cmbsign(Index).SetFocus
  144. Exit Sub
  145. End If
  146. If Not TestTxt(txtinquire(Index).Text) Then
  147. MsgBox "请输入要查询内容","提示"
  148. txtinquire(Index).SetFocus
  149. Exit Sub
  150. End If
  151. End Sub
到这了,所有的功能就能全部实现了,看下是不是很简单呢! 如果谁有更好的方法欢迎指点批评!

猜你在找的VB相关文章