Dim rsItem As New ADODB.Recordset
Dim rsBody As New ADODB.Recordset
    
Dim strsql As String
Dim nodeX As Node   rsBody.CursorType = adOpenKeyset
   rsBody.LockType = adLockOptimistic
   rsBody.ActiveConnection = CnnDB
   rsItem.CursorType = adOpenKeyset
   rsItem.LockType = adLockOptimistic
   rsItem.ActiveConnection = CnnDB
   
   CmbModel1.Visible = False
   CmbModel1.Nodes.Clear
   
   If rsBody.State = adStateOpen Then rsBody.Close
   rsBody.Open "select * from stdbodypart"
   While Not rsBody.EOF
   If Trim(rsBody!bodypart_name) = Trim(CmbBodyPart.Text) Then
      Set nodeX = CmbModel1.Nodes.Add(, tvwNext, "BKey" & rsBody!bodypart_key, Trim(rsBody!bodypart_name & ""))
      strsql = "select * from stdclininfo where bodypart_key=" & rsBody!bodypart_key
      If rsItem.State = adStateOpen Then rsItem.Close
      rsItem.Open strsql
      While Not rsItem.EOF
        CmbModel1.Nodes.Add nodeX.key, tvwChild, , rsItem!ix_code & ""
        rsItem.MoveNext
      Wend
      rsBody.MoveNext
   End If
   Wend   CmbModel1.Visible = True

解决方案 »

  1.   

    While Not rsBody.EOF
       If Trim(rsBody!bodypart_name) = Trim(CmbBodyPart.Text) Then
          Set nodeX = CmbModel1.Nodes.Add(, tvwNext, "BKey" & rsBody!bodypart_key, Trim(rsBody!bodypart_name & ""))
          strsql = "select * from stdclininfo where bodypart_key=" & rsBody!bodypart_key
          If rsItem.State = adStateOpen Then rsItem.Close
          rsItem.Open strsql
          While Not rsItem.EOF
            CmbModel1.Nodes.Add nodeX.key, tvwChild, , rsItem!ix_code & ""
            rsItem.MoveNext
          Wend
          rsBody.MoveNext     '如果第2行的if条件不满足,岂不是无法退出循环了???
       End If
       Wend
      

  2.   

    rsBody.MoveNext     应该写在end if的下面。
      

  3.   

    rsBody.MoveNext不应该放在IF条件之内
      

  4.   

    While Not rsBody.EOF
      if......then
        ......
        End if
        rsBody.MoveNext
    Wend