Hur lägger jag till värde i en array?
Dynamiska arrayer
14 svar · 475 visningar · startad av Eclipse
Tack Mr ASP
Jag vet inte vad jag menar...
SQL = "SELECT a.intID, a.intParentID, a.strName, a.strURL, a.bolView " _
& " FROM [catalogueSE] as a WHERE a.intParentID = 0 " _
& " ORDER BY a.strName"
set mySQL = Conn.Execute(SQL)
IF NOT mySQL.EOF THEN listLevel0 = mySQL.GetRows()
myRow = listLevel0
response.write "Level 0: " & UBound(myRow, 2) & "<BR>"
FOR j = 0 TO UBound(myRow,2)
IF myRow(1,j) = 0 THEN response.write myRow(2,j) & "<BR>"
NEXT
' ## CHECK FOR SUBMENU
FOR j = 0 TO UBound(myRow,2)
SQL = "SELECT a.intID, a.intParentID, a.strName, a.strURL, a.bolView " _
& " FROM [catalogueSE] as a WHERE a.intParentID = " & myRow(0,j) _
& " ORDER BY a.strName "
set mySQL = Conn.Execute(SQL)
IF NOT mySQL.EOF THEN
listLevel1 = mySQL.GetRows()
myRow1 = listLevel1
response.write "Level 1: " & UBound(myRow1, 2) & "<BR>"
FOR i = 0 TO UBound(myRow1,2)
response.write myRow1(2,i) & "<BR>"
NEXT
END IF
NEXT
Universums sunkigaste kod... Men det är inte läge...
Jag håller på med dTree och jag måste skriva rubrikerna i rätt ordning och i bokstavsordning. Det fungerar inte annars. Inte mellan olika sidor. Endast på samma sida.
Jag tror resultatet ska bli så här. Jag har markerat de två med underrubriker.
Level 0: 9
1. ID:28 Allmänt om grafit (& elborstar)
2. ID:1 Borsthållare
[b]3. ID:3 Elborstar[/b]
4. ID:17 Impregneringslack
5. ID:4 Ingjutningsmassa
[b]6. ID:18 Kondensatorer[/b]
7. ID:16 Lindningstråd
8. ID:2 Släpringar
9. ID:24 Termistorer
10. ID:23 Termokontakter
Level 1:5
11. ID:3 Bakelitgrafit
12. ID:3 Elektrografitborstar
13. ID:3 Hårdkol
14. ID:3 Koppargrafitborstar
15. ID:3 Naturgrafitborstar
16. ID:3 Silvergrafitborstar
Level 1: 3
17. ID:18 Belysningskondensatorer
18. ID:18 Driftkondensatorer
19. ID:18 Elektrolytkondensatorer
20. ID:18 Startkondensatorer
Vad menar du med rätt ordning och bokstavsordning? Jag förstår inte hur det ska vara sorterat på två sätt samtidigt... :/
Men, för att svara på frågan i topic; använd Redim Preserve för att ändra storleken på en array.
Det är rekursiv kod.
Som det ser ut idag
<SCRIPT TYPE="text/javascript">
<!--
d = new dTree('d');
d.add(0,-1,'Produktkatalog');
d.add(28,0,'Allmänt om grafit (& elborstar) +', '/admin/catalogueSE/index.asp?ID=28');
d.add(30,3,'Bakelitgrafit +', '/admin/catalogueSE/index.asp?ID=30');
d.add(22,18,'Belysningskondensatorer +', '/admin/catalogueSE/index.asp?ID=22');
d.add(1,0,'Borsthållare +', '/admin/catalogueSE/index.asp?ID=1');
d.add(20,18,'Driftkondensatorer +', '/admin/catalogueSE/index.asp?ID=20');
d.add(3,0,'Elborstar +', '/admin/catalogueSE/index.asp?ID=3');
d.add(15,3,'Elektrografitborstar +', '/admin/catalogueSE/index.asp?ID=15');
d.add(21,18,'Elektrolytkondensatorer +', '/admin/catalogueSE/index.asp?ID=21');
d.add(31,3,'Hårdkol +', '/admin/catalogueSE/index.asp?ID=31');
d.add(17,0,'Impregneringslack +', '/admin/catalogueSE/index.asp?ID=17');
d.add(4,0,'Ingjutningsmassa +', '/admin/catalogueSE/index.asp?ID=4');
d.add(18,0,'Kondensatorer +', '/admin/catalogueSE/index.asp?ID=18');
d.add(12,3,'Koppargrafitborstar +', '/admin/catalogueSE/index.asp?ID=12');
d.add(16,0,'Lindningstråd +', '/admin/catalogueSE/index.asp?ID=16');
d.add(32,3,'Naturgrafitborstar +', '/admin/catalogueSE/index.asp?ID=32');
d.add(5,3,'Silvergrafitborstar +', '/admin/catalogueSE/index.asp?ID=5');
d.add(2,0,'Släpringar +', '/admin/catalogueSE/index.asp?ID=2');
d.add(19,18,'Startkondensatorer +', '/admin/catalogueSE/index.asp?ID=19');
d.add(24,0,'Termistorer +', '/admin/catalogueSE/index.asp?ID=24');
d.add(23,0,'Termokontakter +', '/admin/catalogueSE/index.asp?ID=23');
document.write(d);
//-->
</SCRIPT>
Som det måste se ut sen
<SCRIPT TYPE="text/javascript">
<!--
d = new dTree('d');
d.add(0,-1,'Produktkatalog');
d.add(1,0,'Allmänt om grafit (& elborstar) +', '/admin/catalogueSE/index.asp?ID=28');
d.add(2,0,'Borsthållare +', '/admin/catalogueSE/index.asp?ID=1');
d.add(3,0,'Elborstar +', '/admin/catalogueSE/index.asp?ID=3');
d.add(4,0,'Impregneringslack +', '/admin/catalogueSE/index.asp?ID=17');
d.add(5,0,'Ingjutningsmassa +', '/admin/catalogueSE/index.asp?ID=4');
d.add(6,0,'Kondensatorer +', '/admin/catalogueSE/index.asp?ID=18');
d.add(7,0,'Lindningstråd +', '/admin/catalogueSE/index.asp?ID=16');
d.add(8,0,'Släpringar +', '/admin/catalogueSE/index.asp?ID=2');
d.add(9,0,'Termistorer +', '/admin/catalogueSE/index.asp?ID=24');
d.add(10,0,'Termokontakter +', '/admin/catalogueSE/index.asp?ID=23');
d.add(11,3,'Bakelitgrafit +', '/admin/catalogueSE/index.asp?ID=30');
d.add(12,3,'Elektrografitborstar +', '/admin/catalogueSE/index.asp?ID=15');
d.add(13,3,'Hårdkol +', '/admin/catalogueSE/index.asp?ID=31');
d.add(14,3,'Koppargrafitborstar +', '/admin/catalogueSE/index.asp?ID=12');
d.add(15,3,'Naturgrafitborstar +', '/admin/catalogueSE/index.asp?ID=32');
d.add(16,3,'Silvergrafitborstar +', '/admin/catalogueSE/index.asp?ID=5');
d.add(17,18,'Belysningskondensatorer +', '/admin/catalogueSE/index.asp?ID=22');
d.add(18,18,'Driftkondensatorer +', '/admin/catalogueSE/index.asp?ID=20');
d.add(19,18,'Elektrolytkondensatorer +', '/admin/catalogueSE/index.asp?ID=21');
d.add(20,18,'Startkondensatorer +', '/admin/catalogueSE/index.asp?ID=19');
document.write(d);
//-->
</SCRIPT>
Tack Anders!
Jag såg ändringen. *Kollar länken* Det är Kungen som kommit fram till denna slutsats... Jag vet inte om han sitter inne med lite variabler... Han kanske mörkar!?
Hur som helst, om det inte vore för att menyn i fråga används på olika sidor så fungerar den befintliga koden.
Men "rätt ordning" menar jag (enligt Kungen) 1-2-3 ordning och även bokstavsordning.
Okej, nu tror jag i alla fall att jag förstår vad du menar. Har du lust att visa koden som skapar javascriptet också?
Den befintliga javascriptkoden ser ut såhär: (vilken rörig tråd...)
SQL = "SELECT a.intID, a.intParentID, a.strName, a.strURL, a.bolView " _
& " FROM [catalogueSE] as a " _
& " ORDER BY a.strName;"
set mySQL = Conn.Execute(SQL)
IF NOT mySQL.EOF THEN listMyMenu = mySQL.GetRows()
...
<%
' ## DOCUMENTATION
'SQL = "SELECT a.intID, a.intParentID, a.strName, a.strURL, a.bolView " _
response.write "<SCRIPT TYPE=""text/javascript"">" & vbCRLF
response.write "<!--" & vbCRLF
response.write "d = new dTree('d');" & vbCRLF
response.write "d.add(0,-1,'Produktkatalog');" & vbCRLF
' ## LOOP THROUGHT MENUS
IF IsArray(listMyMenu) THEN
myRow = listMyMenu
FOR j = 0 TO UBound(myRow,2)
response.write "d.add(" & myRow(0,j) & "," & myRow(1,j) & ",'" & myRow(2,j)
IF myRow(4,j) = TRUE THEN response.write " +" ELSE response.write " -"
response.write "', '" & request.serverVariables("PATH_INFO") & "?ID=" &myRow(0,j) & "');" & vbCRLF
NEXT
END IF
response.write "document.write(d);" & vbCRLF
response.write "//-->" & vbCRLF
response.write "</SCRIPT>" & vbCRLF
%>
@nders skrev:
Vad menar du med rätt ordning och bokstavsordning? Jag förstår inte hur det ska vara sorterat på två sätt samtidigt... :/
Men, för att svara på frågan i topic; använd Redim Preserve för att ändra storleken på en array.
De exempel på ReDim som jag har sett rör endmisionella arreyer. Det finns ingen möjlighget att jobba med tvådimmensionella arrayer?
Jodå, du kan använda Redim även för tvådimensionella arrayer, men du kan inte öka storleken på dimension ett, utan bara den andra dimensionen. I det här fallet är det ju den andra dimensionen du behöver öka, så det ska ju fungera.
Mvh
Fasen va trixigt!
Jag har nöjt mig med dagiskåd nu... quick & dirty.
Suger stor lång elefant-[ditt favvorord, @nders] men fungerar.
Jag är *INTE* nöjd med det jag gjort. Det bara *MÄSTE* få att gå med oändligt många sub-menyer... men jag får sova på saken och titta n'rmare på det när jag kommit på den förlösande klippet...