Hej! KAn du beskriva hur du lagrar informationen. Strukturen i den. Jag skulle göra en dynamisk lösning:Gruppering av data i 3 nivåer
Vill först passa på att berömma denna site, har läst lite då och då och haft nytta av att botanisera bland tips, tricks och råd.
Nu har jag kört fast i nedanstående kod. Det allra första "Barnet" (strChild) visas inte, men däremot alla följande. Är det någon vänlig själ här som kan se vad jag gjort för fel?
<code>
Dim dbConn
dbConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("TestDB.mdb")
set adoConn = Server.CreateObject("ADODB.Connection")
set adoRs = Server.CreateObject("ADODB.Recordset")
' open dbConn
adoConn.Open dbConn
' TABELL: NewParent
' Fält: pID Tal(heltal), strParent txt(50), strChild txt(50), strGrandChild txt(50), strLink txt(255)
strSQL = "SELECT * FROM NEWPARENT ORDER BY pID, strChild, strGrandChild;"
set adoRs = adoConn.Execute(strSQL)
sPrevParent = ""
sParent = ""
sPrevChild = ""
sChild = ""
' Set First Parent to True
bFirst = True
While NOT adoRs.EOF
sPrevParent = sParent
sParent = adoRs("strParent")
If strcomp(sPrevParent, sParent) <> 0 Then
If bFirst = True Then
If IsNull(adoRs("strLink")) Then
Response.Write "<b>" & sParent & "</b>" & vbCrLF
Else
Response.Write "<b>" & sParent & "</b>"
End If
Else
If IsNull(adoRs("strLink")) Then
Response.Write "<br><b>" & sParent & "</b>" & vbCrLF
Else
Response.Write "<br><b>" & sParent & "</b>"
End If
End If
Else
Response.Write " " & vbCRLF
End If
sPrevChild = sChild
sChild = adoRs("strChild")
If IsNull(adoRs("strLink")) Then
TheLink = " " & sChild
Else
TheLink = " " & sChild & ""
End If
If strcomp(sPrevChild, sChild) <> 0 Then
Response.Write "<br><b><font color=red>" & TheLink & "</font></b>" & vbCrLF
End If
If strcomp(sPrevChild, sChild) = 0 Then
Response.Write "<br> » " & "" & adoRs("strGrandChild") & "" & vbCrLF
End If
adoRs.MoveNext
bFirst = False ' Parent is no longer first, therefore set to false
Wend
adoRs.Close
Set adoRs = nothing
adoConn.Close
Set adoConn = nothing
</code>
MVH / AnetteSv: Gruppering av data i 3 nivåer
Sv: Gruppering av data i 3 nivåer
Tabell: Categories
Fält: CategoryId (Long Integer, Räknare)
Fält: CategoryParent (Long Integer) -> Categories.CategoryId
Fält: CategoryName (Text(255))
Tabell: Links
Fält: LinkId (Long Integer, Räknare)
Fält: LinkCategory -> Categories.CategoryId
Fält: LinkName (Text(255))
Fält: LinkURL (Text(255))
Exempel Data:
CategoryId CategoryParent CategoryName
1 Null Internet
2 1 Sökmotorer
3 2 Svenska
4 1 Myndigheter
5 1 Forum
LinkId LinkCategory LinkName LinkURL
1 3 Google http://www.Google.com
2 2 Yahoo http://www.Yahoo.com
3 4 RSV http://www.rsv.se
4 5 Pellesoft http://www.pellesoft.nu
<code>
<%
Sub List(Con, Categories)
Dim Links
Dim SubCategories
Set Links = Server.CreateObject("ADODB.Recordset")
Set SubCategories = Server.CreateObject("ADODB.Recordset")
Response.Write "<UL>"
Do Until Categories.EOF
Response.Write "<LI><B>" & Server.HTMLEncode(Categories("CategoryName"))& "<B></LI>"
SubCategories.Open "SELECT *" & vbCrLf & _
"FROM Categories" & vbCrLf & _
"WHERE CategoryParent = " & Categories("CategoryId") & vbCrLf & _
"ORDER BY CategoryName", Con
List Con, SubCategories
SubCategories.Close
Links.Open "SELECT *" & vbCrLf & _
"FROM Links" & vbCrLf & _
"WHERE LinkCategory = " & Categories("CategoryId") & vbCrLf & _
"ORDER BY LinkName", Con
Do Until Links.EOF
Response.Write "<LI>" & Server.HTMLEncode(Links("LinkName")) & "</LI>"
Links.MoveNext
Loop
Links.Close
Categories.MoveNext
Loop
Response.Write "</UL>"
Set SubCategories = Nothing
End Sub
Dim Rs
Dim Con
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("TestDB.mdb")
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT *" & vbCrLf & _
"FROM Categories" & vbCrLf & _
"WHERE CategoryParent Is Null" & vbCrLf & _
"ORDER BY CategoryName", Con
If Rs.EOF Then
Response.Write "Det finns inga kategorier"
Else
List Con, rs
End If
rs.Close
Set rs = Nothing
Con.Close
Set Con = Nothing
</code>
Har inte testat den så det kan vara fel i den.
Minder kod och dynamisk struktur.