假设现在有两组数组  Module(i)   Failure(i,j) 数组数量不定
departopcap是一个变量值需要在数据库里做如下条件的SQL查询
Select [Failure Code].[Engine Type], [Failure Code].Department, [Failure Code].[Module], [Failure Code].FC, [Failure Code].OPN, V2500.PN
From [Failure Code] Left Join V2500 ON ([Failure Code].OPN = V2500.OPN) And ([Failure Code].[Module]=V2500.[Module])
Where [Failure Code].[Engine Type]="V2500" And [Failure Code].Department=departopcap And [Failure Code].[Module]=Module(i) And [Failure Code].FC=Failure(i,j)查询到的结果会满足
Module(0)   Failure(0,0)或Failure(0,1)或Failure(0,2)...或Failure(0,l) '循环到Failure(0,l+1)为空值
Module(1)   Failure(1,0)或Failure(1,1)或Failure(1,2)...或Failure(1,m) '循环到Failure(0,m+1)为空值
...
...
Module(i)   Failure(i,0)或Failure(i,1)或Failure(i,2)...或Failure(i,n) '循环到Failure(0,n+1)为空值的所有记录条件请问这个循环语句在VB里应该怎么写呢?

解决方案 »

  1.   

    前面SELECT和FROM那段可以忽略不看
    主要是那段WHERE的筛选条件怎么用一个循环添加所有的条件?
      

  2.   

    举例如下,细节自己改吧。Private Sub Command1_Click()
    Dim sql As String, departopcap As String
    departopcap = "HHHHHHH"
    Dim Module(1) As String
    Dim Failure(1, 2) As String
    Module(0) = "xx1"
    Module(1) = "xx2"
    Failure(0, 0) = "yy00"
    Failure(0, 1) = "yy01"
    Failure(0, 2) = "yy02"
    Failure(1, 0) = "yy10"
    Failure(1, 1) = "yy11"
    Failure(1, 2) = "yy12"sql = "Select [Failure Code].[Engine Type], [Failure Code].Department, " & _
        "[Failure Code].[Module], [Failure Code].FC, [Failure Code].OPN, V2500.PN " & _
        "From [Failure Code] Left Join V2500 ON ([Failure Code].OPN = V2500.OPN) " & _
        "And ([Failure Code].[Module]=V2500.[Module]) Where [Failure Code].[Engine Type] = ""V2500"" " & _
        "And [Failure Code].Department = '" & departopcap & "' And "
    Dim i As Integer, j As Integer, tmp1 As String, tmp2 As String, sql1 As String
    For i = 0 To UBound(Module)
       tmp1 = tmp1 & "[Failure Code].[Module] = '" & Module(i) & "' And "
       For j = 0 To UBound(Failure, 2)
           tmp2 = tmp2 & "[Failure Code].FC = '" & Failure(i, j) & "' Or "
       Next
       tmp2 = "(" & Left(tmp2, Len(tmp2) - 4) & ")"
       sql1 = sql1 & sql & tmp1 & tmp2 & " union "
       tmp1 = "": tmp2 = ""
     Next
     sql1 = Left(sql1, Len(sql1) - 7)
     Debug.Print sql1
    End Sub