sql = "select * from books LEFT OUTER JOIN booktypes on books.bk_type = booktypes.tp_id LEFT OUTER JOIN Publishers1 ON BOOKS.Bk_PubID=PUBLISHERS1.PUB_ID"If check_ZongHe_ShuMing.Value = 1 Then
sql = sql + " where bk_name LIKE '%" & Trim(txt_ZongHe_ShuMing & "") & "%'"
End IfIf check_ZongHe_ZuoZhe.Value = 1 Then
    If check_ZongHe_ShuMing.Value = 1 Then '已经按书名搜索的情况
       sql = sql + "and where bk_wri LIKE '%" & Trim(txt_ZongHe_ZuoZhe & "") & "%'"
    ElseIf check_ZongHe_ShuMing.Value = 0 Then '没有按书名搜索
       sql = sql + "where bk_wri LIKE '%" & Trim(txt_ZongHe_ZuoZhe & "") & "%'"
    End If
End If这段代码执行的时候总是说'bk_wri'附近有语法错误,可是我在sql的查询分析其中使用并没有问题啊(我把LIKE '%" & Trim(txt_ZongHe_ZuoZhe & "") & "%'改成了like '%***%')(***是需要查找的字符串)和下面这段有关系吗?
rs.CursorLocation = adUseClient
rs.Open sql, cn, adOpenDynamic, adLockReadOnly

解决方案 »

  1.   

    简单!
    'bk_wri'前面的WHERE之前要有空格
      

  2.   

    设置断点调试一下,把sql串取出来看看,然后到数据库里执行一下不就知道了。
      

  3.   

    果然是高人,可是我又试了一下
    check_ZongHe_ZuoZhe.Value = 1 Then
        If check_ZongHe_ShuMing.Value = 1 
    的情况,又说在where附近出现问题了
      

  4.   

    其实解决起来很简单,我的习惯是总在双引号之后留一个空格。比如:
    strS
      

  5.   

    第一个引号前留个空格:
    strSQL = " SELECT * FROM MyTable"
    strSQL = strSQL & " WHERE ID = 1"
    strSQL = strSQL & " AND Age = 19"