sql查询条件带括号的判断
下面的where条件是通过VB界面用户自行输入的(也就是用户最多可以带三个不同字段条件查询),共三个左括号、三个右括号用户可以选择有或者是无,只有在选择了字段且输入对应的字段值括号才起作用,但用户根据自己的需要输入相关值后程序自动拼出SQL的where条件来查询
界面如下:
左括号下拉框 字段名下拉框 字段值下拉框 右括号下拉框 连接下拉框
cmbbracket11 cmbField1 txtValue1 cmbbracket12 cmbAndOr1 (内容为and,or)
cmbbracket21 cmbField2 txtValue2 cmbbracket22 cmbAndOr2 (内容为and,or)
cmbbracket31 cmbField3 txtValue3 cmbbracket23
但目前我在判断括号成对性问题难住了我,也就是用户选择左括号,那必须后面有一个右括号;若选择了右括号,那前面必须有一个左括号。但后面或前面可能隔了一个查询字段,也就是一个字段就组成一对括号,这是最简单的方式,但查询条件有or、and的情况下,可能两个字段条件或三个字段条件组成一对括号,这样就需要程序判断客户是否选择好了成对的括号,若匹配不对,拼出来的sql语句就不合法,会导致报错。
各位,下面的用户选择括号合法性判断程序我只会搞一个字段组成一对括号的情况,两个字段条件或三个字段条件组成一对括号的判断难住了我,该如何判断?
界面如下:
左括号下拉框 字段名下拉框 字段值下拉框 右括号下拉框 连接下拉框
cmbbracket11 cmbField1 txtValue1 cmbbracket12 cmbAndOr1 (内容为and,or)
cmbbracket21 cmbField2 txtValue2 cmbbracket22 cmbAndOr2 (内容为and,or)
cmbbracket31 cmbField3 txtValue3 cmbbracket23
'拼出SQL的where条件:
If cmbField1.Text <> "" And Trim(txtValue1.Text) <> "" Then
Filed1 = " and " & cmbbracket11.Text & "[" & cmbField1.Text & "] = '" & Trim(txtValue1.Text) & "' " & cmbbracket12.Text
End If
If cmbField2.Text <> "" And Trim(txtValue2.Text) <> "" Then
Filed2 = " " & cmbAndOr1.Text & " " & cmbbracket21.Text & "[" & cmbField2.Text & "] = '" & Trim(txtValue2.Text) & "' " & cmbbracket22.Text
End If
If cmbField3.Text <> "" And Trim(txtValue3.Text) <> "" Then
Filed3 = " " & cmbAndOr2.Text & " " & cmbbracket31.Text & "[" & cmbField3.Text & "] = '" & Trim(txtValue3.Text) & "' " & cmbbracket32.Text
End If
If Filed1 <> "" Or Filed2 <> "" Or Filed3 <> "" Then
FiledTotal = " and (1=1 " & Filed1 & Filed2 & Filed3 & ")"
End If
但目前我在判断括号成对性问题难住了我,也就是用户选择左括号,那必须后面有一个右括号;若选择了右括号,那前面必须有一个左括号。但后面或前面可能隔了一个查询字段,也就是一个字段就组成一对括号,这是最简单的方式,但查询条件有or、and的情况下,可能两个字段条件或三个字段条件组成一对括号,这样就需要程序判断客户是否选择好了成对的括号,若匹配不对,拼出来的sql语句就不合法,会导致报错。
各位,下面的用户选择括号合法性判断程序我只会搞一个字段组成一对括号的情况,两个字段条件或三个字段条件组成一对括号的判断难住了我,该如何判断?
If (cmbField1.Text <> "" And Trim(txtValue1.Text) <> "" And cmbbracket11.Text <> "" And cmbbracket12.Text = "") Or (cmbField1.Text <> "" And Trim(txtValue1.Text) <> "" And cmbbracket11.Text = "" And cmbbracket12.Text <> "") Then
MsgBox "左右括号必须成对出现!", vbExclamation, "Warning Info"
If cmbbracket11.Text = "" Then cmbbracket11.SetFocus
If cmbbracket12.Text = "" Then cmbbracket12.SetFocus
Exit Sub
End If
If (cmbField2.Text <> "" And Trim(txtValue2.Text) <> "" And cmbbracket21.Text <> "" And cmbbracket22.Text = "") Or (cmbField2.Text <> "" And Trim(txtValue2.Text) <> "" And cmbbracket21.Text = "" And cmbbracket22.Text <> "") Then
MsgBox "左右括号必须成对出现!", vbExclamation, "Warning Info"
If cmbbracket21.Text = "" Then cmbbracket21.SetFocus
If cmbbracket22.Text = "" Then cmbbracket22.SetFocus
Exit Sub
End If
If (cmbField3.Text <> "" And Trim(txtValue3.Text) <> "" And cmbbracket31.Text <> "" And cmbbracket32.Text = "") Or (cmbField3.Text <> "" And Trim(txtValue3.Text) <> "" And cmbbracket31.Text = "" And cmbbracket32.Text <> "") Then
MsgBox "左右括号必须成对出现!", vbExclamation, "Warning Info"
If cmbbracket31.Text = "" Then cmbbracket31.SetFocus
If cmbbracket32.Text = "" Then cmbbracket32.SetFocus
Exit Sub
End If
...全文
相关推荐
Sybase SQL Server中子查询的设计和使用.pdf
Sybase SQL Server中子查询的设计和使用.pdf
MyBatisPlus条件构造器带条件查询selectList使用示例代码
MyBatisPlus条件构造器带条件查询selectList使用示例代码
sql中count或sum为条件的查询示例(sql查询count)
在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询,下面使用一个示例说明使用方法
SQL Server交叉查询存储过程实现(带查询条件)
最近做一个教辅评价的项目,由于教辅的扩展属性不确定,需要动态配置,纠结了好久,最后只能选择交叉查询(纵向转横向),将实现源码与大家共享,希望能够给予好的意见,共同进步。
在查询语句中使用条件判断
在查询语句中使用条件判断


VB基础类
