注册 登录
编程论坛 VB6论坛

sql 查询 Text1.Text 输入非空的才拼条件 出现FORM子语法错误

zyangc 发布于 2016-10-30 16:53, 1273 次点击
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim sqlWhere As String
Private Sub Command1_Click() '查询
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "/db.mdb;Persist Security Info=False"
 sqlWhere = vbNullString
    If Trim(Text1.Text) = "" Then
           sqlWhere  = sqlWhere &  年级 like '" & Combo1.Text & "' and 班级 like '" & Combo2.Text & "'"
    End If
    If Trim(Text1.Text) <> 0 Then
        sqlWhere  = sqlWhere &  年级 like '" & Combo1.Text & "' and 班级 like '" & Combo2.Text & "' and 姓名 like '" & Text1.Text & "'
    End If
 
    sql = "select * from 档案 " & sqlWhere
 
    rs.Open sql, cn, 3, 3   出现FORM子语法错误
4 回复
#2
风吹过b2016-10-30 17:38
你把sql值显示出来看看。
目前表示未看到 where 关键字。
#3
xzlxzlxzl2016-10-30 21:09
&  年级 like '" 是不是要改成 & "  年级 like '"
#4
xiangyue05102016-10-31 08:42
楼上两位版主说的都对。
不过说实话,他的这个标题我是在是看不懂啊
#5
ZHRXJR2016-10-31 15:31
程序代码:
sqlWhere  = sqlWhere &  年级 like '" & Combo1.Text & "' and 班级 like '" & Combo2.Text & "'" '语法错误,应该是
sqlWhere = "年级 like  '" & Combo1.Text & "' And 班级 like  '" & Combo2.Text & "'"  '不需要 sqlWhere & 这样反而容易出现错误
sqlWhere  = sqlWhere &  年级 like '" & Combo1.Text & "' and 班级 like '" & Combo2.Text & "' and 姓名 like '" & Text1.Text & " '这个语句也是一样,按照上面修改
'
你看看上面没有修改的语句,部分语句变成注释了!
sql = "select * from 档案 " & sqlWhere '同样存在语法错误,应该是
sql = "select * from 档案 Where " & sqlWhere  '少了 Where


另外  If Trim(Text1.Text) <> 0 Then 应该是  If Trim(Text1.Text) <> "" Then

[此贴子已经被作者于2016-10-31 15:49编辑过]

1