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