If sql = sql1 Then 
Exit Sub
else
sql = right(sql,len(sql)-3)
end if

解决方案 »

  1.   

    sql句尾 多了一个 " and ",当然出错!
      

  2.   

    解决“AND”个数不对称的方法很简单,就是加一个始终成立的
    无用条件!例如“1=1”。这样之后,AND个数就可以和你的条件个数相等了。
    把你的第一句改为sql = "select * from 简历表 where 1=1 "以后就可以总是加一个AND,再加一个条件了。
      

  3.   

    http://www.csdn.net/expert/topic/589/589124.xml?temp=.7197229
    看看这个吧
      

  4.   

    可能是条件句有问题。建议debug.print生成一条sql,放到网上,再让大家评判
      

  5.   

    当然,你后面语句的写法就要改为:
    sql = sql + " and " + Trim(.TextMatrix(i, 0)) + Trim(.TextMatrix(i, 1)) 所以,在组织SQL语句的过程中,类似1=1这样的东西是很有用的。
    往往可以大大简化你的编程。
      

  6.   

    感谢大家的关注,我已经想出来了,我做了一个标志sql1,"1=1"我对我来说没必要,我只想在用户没有输入条件时退出,而不是把整个表写出来
    sql = "select * from 简历表 where "
       sql1 = sql
       With vssearch
            For i = 1 To .Rows - 1
                If Trim(.TextMatrix(i, 1)) <> "" Then
                   If sql = sql1 Then
                       sql = sql + Trim(.TextMatrix(i, 0)) + Trim(.TextMatrix(i, 1))
                
                   Else
                       sql = sql + " and " + Trim(.TextMatrix(i, 0)) + Trim(.TextMatrix(i, 1))
                   End If
                End If
            Next i
         '没有条件
            If sql = sql1 Then Exit Sub
       End With
      

  7.   

    今天我也碰到了一个这样的问题,后来这样就可以了
    "select * from Table where PicName='" & h_seekpicname & "'" & " and Aperture ='" & h_aperture & "'"
    即在and前加一个" & "
    试试看吧,Good Luck!
      

  8.   

    ferrytang,虽然你在http://www.csdn.net/expert/topic/589/589124.xml?temp=.7197229的写法也可以解决问题,但是你也要承认,你的那种办法
    实在远没有我这么加上一个“1=1”来得简洁。
      

  9.   

    回复人: junglerover(灌木丛) (  )  
    严谨?
    简洁?
      

  10.   

    赞同 junglerover(灌木丛) 的说法!我最初也是从数据库论坛那里学来的,建议大家大家多到那里走走,那里数据库高手很多的。
      

  11.   

    我說你也可以這樣:    先判斷第一個查詢條件是否為空,若不為空則加進去.
        后再的條件再判斷,若為空 則退出
                         若不為空, 則將一條語句的前面加一個 'and '這樣的話,不就可以了嗎?
      

  12.   

    我說你也可以這樣:先判斷第一條語句是否為空.
     若不為空則 加上 .
    再判斷后面的語句, 若這條為空 則退出
                      若不為空  則在前面加一個 'and’
    不就可以了嗎?
      

  13.   

    Private Sub GetWhere(strW As String, ByVal strCon As String, ByVal strField As String)
        If strCon <> "" Then
            If strW = "" Then
                strW = strField & "='" & strCon & "'"
            Else
                strW = strW & " AND " & strField & " ='" & strCon & "'"
            End If
        End If
    End Sub
    ==================
        Dim strWhere As String
        Dim strSql As String
        strWhere = ""
        GetWhere strWhere, Me.Text1.Text, "FieldA"
        GetWhere strWhere, Me.Text2.Text, "FieldB"
        GetWhere strWhere, Me.Text3.Text, "FieldC"    strsql="select * from tb"
        if strwhere<>"" then
            strsql=strsql & " where " & strwhere
        end if
      

  14.   

    我认为,利用“1=1”和“1<>1”组合where语句使初始化的sql语句保持完整性是比较好的思想。之后,要加条件再根据不同的类型等分类处理从而决定用“or”或“and”或者加不加引号等具体细节。这样的编程风格我觉得还是比较规范的。