Avatar billede entracore Nybegynder
21. marts 2003 - 11:29 Der er 19 kommentarer og
1 løsning

Collection i ASP

Hey

Visual Basic under støtter brug af Collections har ASP noget af den samme funktionalitet ???
Avatar billede mortency Nybegynder
21. marts 2003 - 11:31 #1
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 11:33 #2
Avatar billede entracore Nybegynder
21. marts 2003 - 11:37 #3
Nej egenlig ikke desværre. Det jeg har brug for er et eksempel på hvordan man anvender collections i ASP. (Hvis det overhovedet kan lade sig gøre) Eller en anden måde hvorpå at jeg f.eks. kan gemme data i f.eks et array.

Det man gør i f.eks. VB er:

Do While Recordset.Eof

    Collection.FirstName = Recordset("FirstName")
    Collection.LastName = Recordset("LastName")

    MyCollection.Add Collection

    Set Collection = Nothing
    Recordset.MoveNext
Loop

Og jeg ønsker noget tilsvarende i ASP
Avatar billede entracore Nybegynder
21. marts 2003 - 11:42 #4
erikjacobsen >> Du er lidt inde på det rigtigt. Men i når man vil løbe sin collection igennem kan kan kun gøre det en ad gangen. Kan man omgå dette?
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 11:43 #5
En af gangen ?? Den forstår jeg ikke. Scripting.Dictionary er ganske
primitiv, og et "bevis" på at gammeldags ASP er yt ;)
Avatar billede mortrr Praktikant
21. marts 2003 - 11:47 #6
Du har kun muligheden med dictionaries (som ikke fungerer specielt godt).

Eller eventuelt bruge disconnectede recordsets.
Det fungerer som et normalt recordset, du har bare ingen datascource, men opbygger selv felter og propper ting i dem.
Avatar billede entracore Nybegynder
21. marts 2003 - 11:47 #7
erikjacobsen >> Når du indsætter værdier i dit collection object (People) og skal udskrive disse kan man kune gøre det en adgangen. F.eks.

Set people(0) = server.CreateObject("Scripting.Dictionary")
people(0).Add "fname", "Jane"
people(0).Add "lname", "Doe"
people(0).Add "haircolor", "brown"
people(0).add "eyecolor" , "blue"
people(0).add "dateofbirth", "1/10/60"

Set people(1) = server.CreateObject("Scripting.Dictionary")
people(1).Add "fname", "Reginald"
people(1).Add "mname", "Elton"
people(1).Add "lname", "Dwight"
people(1).Add "haircolor", "red"
people(1).add "eyecolor" , "dusty"
people(1).add "dateofbirth", "1/10/60"

for each whatever in people(0)
  response.write whatever & "="
  response.write people(1).item(whatever) & "<br>"
next

for each whatever in people(1)
  response.write whatever & "="
  response.write people(1).item(whatever) & "<br>"
next
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 11:50 #8
Du kan sikkert proppe en almindelig forløkke udenom, til at løbe dit
array igennem:

  for i=lbound(people) to ubound(people)
  .....etc
  next
Avatar billede entracore Nybegynder
21. marts 2003 - 11:52 #9
Dette har jeg forsøgt men af en eller anden årsag får jeg kun skrevet den første ud.
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 11:54 #10
Din kode?
Avatar billede entracore Nybegynder
21. marts 2003 - 11:56 #11
Den kommer her:

    dim people(3)

Set people(0) = server.CreateObject("Scripting.Dictionary")
people(0).Add "fname", "Jane"
people(0).Add "lname", "Doe"
people(0).Add "haircolor", "brown"
people(0).add "eyecolor" , "blue"
people(0).add "dateofbirth", "1/10/60"

Set people(1) = server.CreateObject("Scripting.Dictionary")
people(1).Add "fname", "Reginald"
people(1).Add "mname", "Elton"
people(1).Add "lname", "Dwight"
people(1).Add "haircolor", "red"
people(1).add "eyecolor" , "dusty"
people(1).add "dateofbirth", "1/10/60"

Set people(2) = server.CreateObject("Scripting.Dictionary")
people(2).Add "fname", "Hitoshi"
people(2).Add "lname", "Yoshitsugu"

' print out one item
for i=lbound(people) to ubound(people)
Response.Write i & "<br><br>"
    for each whatever in people(i)
        response.write whatever & "="
        response.write people(i).item(whatever) & "<br>"
    next
   
    i = i + 1
Next
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 11:57 #12
Drop linien
i = i + 1
Avatar billede entracore Nybegynder
21. marts 2003 - 12:07 #13
Ok så virker det :-) Er der dog mulighed for at udviden denne men f.eks. at man kun vil udskrive "fname" eller "haircolor".

Jeg er klar over at man kan skrive

If Whatever = "fname" Then osv...

men kunne man ikke noget a'la whatever.fname.... ???
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 12:13 #14
response.write people(i).item("fname") & "<br>"
Avatar billede entracore Nybegynder
21. marts 2003 - 12:14 #15
Fedt - mange tak for hjælpen erik. Gider du at poste et svar så du kan få dine point :-)
Avatar billede entracore Nybegynder
21. marts 2003 - 12:18 #16
Forresten hvis man ønsker at lægget et uvist antal værdier i sin collection, f.eks. fra et reocrdset hvordan dimensionerere man så people.

Jeg har forsøgt mig med:

n = 4
dim people(m)

men dette giver en fejl.
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 12:21 #17
Det med ukendt størrelse på et array i gammeldags ASP er også et
bevis for at man nok ikke skal bruge det til noget.

Kan du aflæse antal records - det kan du vist, så

dim people()

'...aflæsning...

redim people(antalposter)
Avatar billede entracore Nybegynder
21. marts 2003 - 12:26 #18
Kanon - mange tak.... og hvis du liger gider at komme med en besvarelse ;-)
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 12:27 #19
Nå, nej, tak, jeg samler ikke på point
Avatar billede entracore Nybegynder
21. marts 2003 - 12:57 #20
Det er meget muligt, men point er gode at have hvis man ønsker svar på sine spørgsmål - men på den anden side... de 100 point er for dit vedkommende en dråbe i havet ;-)
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