Private Sub Comd5_Click(Index As Integer)T3.Text = ""
 cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\CAR.mdb;Persist Security Info=False"
 cn.Openrs4.Open "select * from 车次表1", cn, adOpenStatic, adLockReadOnly
rs5.Open "select * from 车次表1", cn, adOpenStatic, adLockReadOnlyDim i As Integer
Dim j As Integer
Dim n As String
Dim m As String
Dim t As Boolean
Dim f As Booleant = False
f = Falsem = 45
n = 54
i = 1
j = 1rs4.MoveFirst
rs5.MoveFirstDo While rs4.EOF = False   Do While rs4.Fields(i) <> Combo1.Text And rs4.Fields(i) <> ""
     If rs4.Fields(i) = Combo1.Text Then
         m = rs4.Fields(0)
         t = True
      Exit Do
       Else
        i = i + 1
      End If
     Loop
     Do While rs5.Fields(j) <> Combo2.Text And rs5.Fields(i) <> ""
          If rs5.Fields(j) = Combo2.Text Then
           n = rs5.Fields(0)
           f = True
           Exit Do
         Else
           j = j + 1
         End If
       Loop
   If t = True And f = True Then
     If m = n Then
       T3.Text = T3.Text + rs5.Fields(0) + " 公交车可直达" + Chr(13) + Chr(10)
    Else
     Do While rs4.Fields(i + 1) <> ""
          For j = 1 To rs5.Fields.Count - 1
            If rs5.Fields(j) = rs4.Fields(i + 1) Then
                  T3.Text = T3.Text + "请乘坐  " + rs4.Fields(0) + "路" + "到  " + rs5.Fields(j) + " 转乘 " + rs5.Fields(0) + " 路" + Chr(13) + Chr(10)
              End If
        Next j
            i = i + 1
      Loop
    End If
 End If
 rs4.MoveNext
 rs5.MoveNext
Loop
    
If rs4.EOF = True Then
        If T3.Text = "" Then
          MsgBox "需要进行两次转乘"
          T3.Text = ""
       End If
    End If
rs4.Close
rs5.Closecn.Close
  Combo1.Clear
  Combo1.Text = "-------请选择建筑物-----------"
    Combo2.Clear
  Combo2.Text = "-------请选择建筑物-----------"
End Sub

解决方案 »

  1.   

    说说要实现什么功能,rs4和rs5数据一样,要做什么
      

  2.   


    楼主要求的是正确的换乘算法。试试,连你的表结构也改改,只要两个字段:车次表1(车次, 站名)
    Dim checi1(), checi2() As String, n As Long, i As Long, j As LongSet rs4 = cn.Execute("select 车次 from 车次表1 WHERE 站名='" & Combo1.Text & "' AND 车次 IN(select * from 车次表1 WHERE 站名='" & Combo2.Text & "')")If Not rs4.EOF Then
        T3.Text = ""
        Do Until rs4.EOF 
            T3.Text = T3.Text + rs4!车次 + " 公交车可直达" + Chr(13) + Chr(10)
        Loop
    Else
        Set rs4 = cn.Execute("select 车次 from 车次表1 WHERE 站名='" & Combo1.Text & "'")
        n = 0
        Do Until rs4.EOF
            Redim checi1(n)
            checi1(n) = rs4!车次
             n = n + 1
        Loop
        Set rs4 = cn.Execute("select 车次 from 车次表1 WHERE 站名='" & Combo2.Text & "'")
        n = 0
        Do Until rs4.EOF
            Redim checi2(n)
            checi2(n) = rs4!车次
             n = n + 1
        Loop
        Text3 = ""
        For i = 0 To Ubound(checi1)
            For j = 0 To Ubound(checi2)
                Set rs4 = cn.Execute("SELECT 车站 FROM 车次表1 WHERE 车次 = '" & checi1(i) & "' AND 车站 IN (SELECT 车站 FROM 车次表1 WHERE 车次 = '" & chec2(i) & "'")
                If Not rs4.EOF Then
                    T3.Text = T3.Text + "请乘坐 " + checi(i) + " 路" + "到 " + rs4!车站 + " 转乘 " + checi2(j) + " 路" + Chr(13) + Chr(10)            End If
            Next j
        Next i
        If T3.Text = "" Then MsgBox "需要进行两次转乘"
    End If
      

  3.   

    Private Sub Comd5_Click(Index As Integer)T3.Text = ""
     cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\CAR.mdb;Persist Security Info=False"
     cn.Openrs4.Open "select * from 车次表1", cn, adOpenStatic, adLockReadOnly
    rs5.Open "select * from 车次表1", cn, adOpenStatic, adLockReadOnlyDim i As Integer
    Dim j As Integer
    Dim n As String
    Dim m As String
    Dim t As Boolean
    Dim f As Booleant = False
    f = False
    m = 45
    n = 54
    i = 1
    j = 1rs4.MoveFirst
    rs5.MoveFirstDo While rs4.EOF = False  Do While rs4.Fields(i) <> Combo1.Text And rs4.Fields(i) <> ""
          If rs4.Fields(i) = Combo1.Text Then
               m = rs4.Fields(0)
               t = True
               Exit Do
          Else
            i = i + 1
          End If
      Loop
      Do While rs5.Fields(j) <> Combo2.Text And rs5.Fields(i) <> ""
          If rs5.Fields(j) = Combo2.Text Then
             n = rs5.Fields(0)
             f = True
             Exit Do
          Else
             j = j + 1
          End If
      Loop
            If t = True And f = True Then
            If m = n Then
               T3.Text = T3.Text + rs5.Fields(0) + " 公交车可直达" + Chr(13) + Chr(10)
           Else
              Do While rs4.Fields(i + 1) <> ""
                 For j = 1 To rs5.Fields.Count - 1
                     If rs5.Fields(j) = rs4.Fields(i + 1) Then
                          T3.Text = T3.Text + "请乘坐 " + rs4.Fields(0) + "路" + "到 " + rs5.Fields(j) + " 转乘 " + rs5.Fields(0) + " 路" + Chr(13) + Chr(10)
                    End If
                Next j
                i = i + 1
              Loop
            End If
         End  If
      rs4.MoveNext
     rs5.MoveNext
    Loop
        
    If rs4.EOF = True Then
      If T3.Text = "" Then
      MsgBox "需要进行两次转乘"
      T3.Text = ""
      End If
      End If
    rs4.Close
    rs5.Closecn.Close
      Combo1.Clear
      Combo1.Text = "-------请选择建筑物-----------"
      Combo2.Clear
      Combo2.Text = "-------请选择建筑物-----------"
    End Sub
      

  4.   

    其实我的要求是,编写一个转乘算法。
    输入起始站(T1.text)终点站(T2.text)如果有直达车,显示直达,没有则显示转乘办法。
    数据库结构:车次表1(车次, 站名,站名,站名,站名,站名,站名,站名,站名,站名.....)
    哪位前辈可以指点一下,最好可以写出代码!#5楼的方法不可取,因为每个车次的站点至少有20个!!!!