Avatar billede mjanum Nybegynder
30. oktober 2000 - 13:49 Der er 8 kommentarer og
1 løsning

Dictionary med træstruktur

Jeg vil gerne på en asp side oprette en træstruktur med en kategori og under hver kategori, et antal linier med nogle titler, jeg har følgende, men det virker ikke helt, den fejler når jeg vil oprette contentid og titel under en kategori og siger \'Object Required\':

Set s = CreateObject(\"Scripting.Dictionary\")
Do While (Not Mrec.EOF)
  if s.Exists(Mrec(\"Category\")) then
    s(Mrec(\"Category\")).Add Mrec(\"ContentID\"),Mrec(\"Title\")
  else 
    s(Mrec(\"Category\")) = Mrec(\"Category\")
    s(Mrec(\"Category\")).Add Mrec(\"ContentID\"),Mrec(\"Title\")
End if
  Mrec.MoveNext
Loop

Er der nogle der har et forslag til hvordan jeg får denne træstruktur op??
Avatar billede ij Nybegynder
30. oktober 2000 - 14:45 #1
Hvorfor laver du det ikke bare i en database.
Med en kategori, som kan have et parent id. Så hver gang du henter siden, selecter du bare på baggrund af parent ID?
Meget lettere, og pænere.
Avatar billede mjanum Nybegynder
30. oktober 2000 - 14:54 #2
Jeg har en db (Mrec). Fordi jeg gerne vil kunne udtrække og gruppere Mrec\'s uden at lave om i tabel strukturen. Jeg ved at Dictionary kan klare opgaven, jeg kender bare ikke syntaksen......
Avatar billede ij Nybegynder
30. oktober 2000 - 15:22 #3
Selvfølgelig. Jeg havde ikke lige set din do while NOT EOF.

Hvorfor løber du ikke bare recordsettet igennem, og skriver en ny Kategori ud hvergang den skifter, og herefter lister title. Som jeg ser det må dit recordset se sådan ud.
spændingsromaner, 1, de 37 trin
spændingsromaner, 2, de nye 37 trin
spændingsromaner, 3, de seneste 37 trin
fagliteratur, 1, databasebogen
fagliteratur, 2, algoritmebogen
fagliteratur, 3, OOA & D
Avatar billede mjanum Nybegynder
30. oktober 2000 - 15:28 #4
Fordi jeg ikke pt. har adgang til at sortere db-kaldet, forespørgslen sker igennem siteserver og herunder en ms sql 7.0 db., Derfor vil jeg opsamle oplysningerne i et dictionary og herefter udskrive hver kategori og under hver kategori via en lække udskrive de forskellige titler.
Avatar billede ij Nybegynder
30. oktober 2000 - 15:45 #5
Har du ikke adgang til de scripts du benytter i siteserver?
Avatar billede mjanum Nybegynder
30. oktober 2000 - 17:08 #6
jo, men disse scipts virker fint til de andre formål og jeg ser ikke nogen grund til at pille i dem....
Avatar billede tuhe Nybegynder
31. oktober 2000 - 18:12 #7
Du skal have oprettet en del Dictionary-objekter:
IF NOT isObject(dictCategory) THEN
Set dictCategory=Server.CreateObject(\"Scripting.Dictionary\")
END IF

Derefter opretter du en række key-item par, hvor din key=KategoriNavn, og item er et nyt dictionary objekt, som du opkalder efter din kategori. I denne under dictionary opretter du ligeså key-item par, hvor key=bogens primærnøgle fra db\'en og item=titlen på bogen. Eksempel med krimi:
IF NOT dictCategory.Exists(Mrec(\"Category\")) THEN
navn=Mrec(\"Category\")
Set navn = Server.CreateObject(\"Scripting.Dictionary\")
navn.Add Mrec(\"contentID\"), Mrec(\"title\")
END IF


Hmm jeg har ikke lige prøvet det, men mon ikke det er noget lignenede du skal bruge??
Avatar billede tuhe Nybegynder
31. oktober 2000 - 19:02 #8
Doh! Du opretter så navn-dictionary\'en som item i dit dictCategory, hvor key=kategori:
dictCategory.Add Mrec(\"Category\"), navn

Hvor navn altså er et dictionary-objekt, hvor key=contentID og item = bogens titel
Avatar billede mjanum Nybegynder
28. december 2000 - 09:59 #9
Jeg fik fikset det - tak tuhe............
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester