在学生基本信息维护这一窗体里,有一个组合查询,通过组合查询我们可以随意选择不同的条件,进而查询到自己想要查询的内容。
从上图我们不难看出,查询的条件是比较复杂一些,而且一个条件的设定就必须包含三个控件的内容,三个条件的关系分为两种,即“与””或”。且其在选择中有一定的顺序:只有第一行的条件全部填好,才可以选择第一个组合关系;同理,只有前两行的条件及第一个组合关系按顺序填好,才可以选择第二个组合关系,进而填写第三行条件。
当然,还有一点不得不提的是,当字段名为“性别”时,操作符只能选择“=”或“<>”;字段名为日期或者时间时,查询内容要有格式要求,其他优化内容同理。
下面是流程图:
代码如下:
Dim c(2) As Boolean '判断条件中的格子中是否有数据
'判断三个条件对应的框中是否为空
If cobField1.Text = "" Or cobSymbol1.Text = "" Or txtContent1.Text = "" Then
Else
c(0) = True '第一栏不为空
If cobField2.Text = "" Or cobSymbol2.Text = "" Or txtContent2.Text = "" Then
Else
c(1) = True '第二栏不为空
If cobField3.Text = "" Or cobSymbol3.Text = "" Or txtContent3.Text = "" Then
Else
c(2) = True '第三栏不为空
End If
End If
End If
txtSQL = "select * from student_Info where "
'组合查询所有的情况
If c(2) Then
If cobRelation2.Text = "或" Then
'0 or 1 or 2
txtSQL = txtSQL & CField(cobField1.Text) & CSymbol(cobSymbol1.Text) & "'" & CContent(txtContent1.Text) & "'" & "or " & CField(cobField2.Text) & CSymbol(cobSymbol2.Text) & " '" & CContent(txtContent2.Text) & "'" & "or " & CField(cobField3.Text) & CSymbol(cobSymbol3.Text) & " '" & CContent(txtContent3.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, Msgtext)
Call Add
mrc.Close
Else
If cobRelation2.Text = "与" Then
'0 and 1 and 2
txtSQL = txtSQL & CField(cobField1.Text) & CSymbol(cobSymbol1.Text) & "'" & CContent(txtContent1.Text) & "'" & "and " & CField(cobField2.Text) & CSymbol(cobSymbol2.Text) & " '" & CContent(txtContent2.Text) & "'" & "and " & CField(cobField3.Text) & CSymbol(cobSymbol3.Text) & " '" & CContent(txtContent3.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, Msgtext)
Call Add
mrc.Close
Else
MsgBox "请输入第二个组合条件"
End If
End If
Else
If c(1) Then
If cobRelation1.Text = "或" Then
'0 or 1
txtSQL = txtSQL & CField(cobField1.Text) & CSymbol(cobSymbol1.Text) & "'" & CContent(txtContent1.Text) & "'" & "or " & CField(cobField2.Text) & CSymbol(cobSymbol2.Text) & " '" & CContent(txtContent2.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, Msgtext)
Call Add
mrc.Close
Else
If cobRelation1.Text = "与" Then
'0 and 1
txtSQL = txtSQL & CField(cobField1.Text) & CSymbol(cobSymbol1.Text) & "'" & CContent(txtContent1.Text) & "'" & "and " & CField(cobField2.Text) & CSymbol(cobSymbol2.Text) & " '" & CContent(txtContent2.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, Msgtext)
Call Add
mrc.Close
Else
MsgBox "请选择组合关系"
End If
End If
Else
If c(0) Then
'0
txtSQL = txtSQL & CField(cobField1.Text) & CSymbol(cobSymbol1.Text) & "'" & CContent(txtContent1.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, Msgtext)
Call Add
mrc.Close
Else
MsgBox "请输入第一条件"
End If
End If
End If