比如:
SELECT UserID, UserName, UserPassWord
FROM T_User
WHERE (UserID = 1) OR
      (UserID = 3)
ORDER BY UserID
其中,WHERE 里的条件值来至一个数组。
如果数组里的数值是:1,2
SELECT UserID, UserName, UserPassWord
FROM T_User
WHERE (UserID = 1) OR
      (UserID = 2)
ORDER BY UserID如果数组里的数值是:1,2,3,5
SELECT UserID, UserName, UserPassWord
FROM T_User
WHERE (UserID = 1) OR
      (UserID = 2) OR
      (UserID = 3) OR
      (UserID = 5)
ORDER BY UserID
这个SQL的条件是动态生成的。
怎样实现?
我目前是这样写的,但觉得不精简,高手指点。
    If StrBudget = "" Then
        sql = "SELECT T_Dept.DeptID, T_Dept.DeptName, T_Budget.BudgetID, T_Budget.BudgetName" & _
            " FROM T_Budget INNER JOIN" & _
                " T_Dept ON T_Budget.BudgetDeptID = T_Dept.DeptID"
    Else
        sql = "SELECT T_Dept.DeptID, T_Dept.DeptName, T_Budget.BudgetID, T_Budget.BudgetName" & _
            " FROM T_Budget INNER JOIN" & _
                " T_Dept ON T_Budget.BudgetDeptID = T_Dept.DeptID" & _
            " Where ("
        TmpBudgetID = Split(StrBudget, ";", -1, vbBinaryCompare)
        For i = 0 To UBound(TmpBudgetID)
            If Trim(TmpBudgetID(i)) <> "" Then
                If i = 0 Then
                    sql = sql & " T_Budget.BudgetID =" & TmpBudgetID(i)
                Else
                    sql = sql & " OR T_Budget.BudgetID =" & TmpBudgetID(i)
                End If
            End If
        Next i
        sql = sql & ")"
    End If
    sql = sql & " ORDER BY T_Dept.DeptName, T_Budget.BudgetName"
请高手指点。

解决方案 »

  1.   

    如果数组里的数值是:1,2,3,5
    SELECT UserID, UserName, UserPassWord
    FROM T_User
    WHERE (UserID = 1) OR
          (UserID = 2) OR
          (UserID = 3) OR
          (UserID = 5)
    ORDER BY UserID
    ============================================改成這樣寫
    SELECT UserID, UserName, UserPassWord
    FROM T_User
    WHERE UserID in(1,2,3,4,5) ORDER BY UserID
      

  2.   

    數據庫名比較長,一般都用別名 
    If StrBudget = "" Then
            sql = "SELECT b.DeptID,b.DeptName,b.BudgetID,b.BudgetName" & _
                " FROM T_Budget a INNER JOIN T_Dept b ON a.BudgetDeptID = b.DeptID"
        Else
            sql = "SELECT b.DeptID,b.DeptName,a.BudgetID,a.BudgetName" & _
                "FROM T_Budget a INNER JOIN T_Dept b ON a.BudgetDeptID = b.DeptID" & _
                " Where ("
            TmpBudgetID = Split(StrBudget, ";", -1, vbBinaryCompare)
            For i = 0 To UBound(TmpBudgetID)
                If Trim(TmpBudgetID(i)) <> "" Then
                    If i = 0 Then
                        sql = sql & " T_Budget.BudgetID =" & TmpBudgetID(i)
                    Else
                        sql = sql & " OR T_Budget.BudgetID =" & TmpBudgetID(i)
                    End If
                End If
            Next i
            sql = sql & ")"
        End If
        sql = sql & " ORDER BY b.DeptName,a.BudgetName"
      

  3.   

    我写了一个过程.跟据用户输入来确定Where条件.
    如果需要的话我发出来.
      

  4.   

    wumylove1234(决心不做IT界大板锹):
    把你写的过程,贴出来吧,谢谢了。