Avatar billede madeindk Nybegynder
15. november 2006 - 11:12 Der er 12 kommentarer og
2 løsninger

Lav et array ud fra database rs?

Hej eksperter! Hvordan kan jeg gøre dette?

Altså rs("name") bliver loopet i gennem via rs.movenext og vil blive udfyldt flere gange?

myVariable = rs("name")
myArray = Split(myVariable,",")

For i = LBound(myArray) TO UBound(myArray)
  Response.Write myArray(i) & "<BR />"
Next
Avatar billede ffsoft Praktikant
15. november 2006 - 11:22 #1
do until rs.eof
  myVariable = myVariable & ";" & rs("name")
rs.movenext
loop

response.write "myVariable: " & myVariable & "<br>"

myArray = Split(myVariable,";")

Det er bedre at bruge ; som seperatortegn. Jeg har ikke checket
om det virker.
Avatar billede madeindk Nybegynder
15. november 2006 - 11:24 #2
Har selv fundet ud af, men kan godt bruge din hjælp alligevel. Har fået lavet følgende med lidt hjælp fra HTML.dk ;-)

' to variabler til liste og array
Dim frugtliste, arrFrugter

' Kommasepareret liste
strSQL = "SELECT catID, catName FROM categories ORDER BY catOrder ASC "
Set catRs = connection.execute(strSQL)
<%
Do while not catRs.eof
  frugtliste = frugtliste & catRs("catName") & ","
  catRs.movenext
Loop

' Lav et array ved at splitte listen ved kommaer
arrFrugter = Split(frugtliste,",")

' Her bruges en løkke til at genneløbe arrFrugt
For t = LBound(arrFrugter) to UBound(arrFrugter)
  Response.Write arrFrugter(t)
Next
%>

Det fungerer også fint, men jeg skal også ha rs("catId") med, så jeg senere nede kan køre mit array i gennem og få catId og catName for sig selv - kan det lade sig gøre?
Avatar billede madeindk Nybegynder
15. november 2006 - 11:24 #3
Hovsa, min ASP kode ser sådan herud:

<%
' to variabler til liste og array
Dim frugtliste, arrFrugter

' Kommasepareret liste
strSQL = "SELECT catID, catName FROM categories ORDER BY catOrder ASC "
Set catRs = connection.execute(strSQL)

Do while not catRs.eof
  frugtliste = frugtliste & catRs("catName") & ","
  catRs.movenext
Loop

' Lav et array ved at splitte listen ved kommaer
arrFrugter = Split(frugtliste,",")

' Her bruges en løkke til at genneløbe arrFrugt
For t = LBound(arrFrugter) to UBound(arrFrugter)
  Response.Write arrFrugter(t)
Next
%>
Avatar billede madeindk Nybegynder
15. november 2006 - 11:26 #4
Ja ok, det gør man bare sådan her:

<%
' to variabler til liste og array
Dim frugtliste, arrFrugter

' Kommasepareret liste
strSQL = "SELECT catID, catName FROM categories ORDER BY catOrder ASC "
Set catRs = connection.execute(strSQL)

Do while not catRs.eof
  frugtliste = frugtliste & catRs("catName") & ","
  frugtliste2 = frugtliste2 & catRs("catId") & ","
  catRs.movenext
Loop

' Lav et array ved at splitte listen ved kommaer
arrFrugter = Split(frugtliste,",")
arrFrugter2 = Split(frugtliste2,",")

' Her bruges en løkke til at genneløbe arrFrugt
For t = LBound(arrFrugter) to UBound(arrFrugter)
  Response.Write arrFrugter(t)
  Response.Write arrFrugter2(t)
Next
%>

Er det ikke måden at gøre det på?
Avatar billede keysersoze Ekspert
15. november 2006 - 11:34 #5
det er i hvert fald en mulighed - men der er en lettere og hurtigere måde; getrows

MyArray = rsCategory.GetRows()
Avatar billede madeindk Nybegynder
15. november 2006 - 11:37 #6
Hvor skal jeg indsætte det?
Avatar billede madeindk Nybegynder
15. november 2006 - 11:40 #7
Nu har jeg denne kode:

' to variabler til liste og array
Dim arrayCategoryID, arrayCategoryName

' Kommasepareret liste
strSQL = "SELECT catID, catName FROM categories ORDER BY catOrder ASC "
Set catRs = connection.execute(strSQL)

Do while not catRs.eof

  arrCategoryID = arrCategoryID & "," & catRs("catId")
  arrCategoryName = arrCategoryName & "," & catRs("catName")
  catRs.movenext
 
Loop

' Lav et array ved at splitte listen ved kommaer
arrayCategoryID = Split(arrCategoryID,",")
arrayCategoryName = Split(arrCategoryName,",")
%>

Når jeg indsætter det i en select og looper den i gennem bliver den øverste option tom, hvorfor det?
Avatar billede keysersoze Ekspert
15. november 2006 - 11:44 #8
strSQL = "SELECT catID, catName FROM categories ORDER BY catOrder ASC "
Set catRs = connection.execute(strSQL)

arrCategories = catRs.GetRows()

'herefter kan du loope arrCategories igennem.
Avatar billede madeindk Nybegynder
15. november 2006 - 11:49 #9
Sådan her?

<%
strSQL = "SELECT catID, catName FROM categories ORDER BY catOrder ASC "
Set catRs = connection.execute(strSQL)

arrCategories = catRs.GetRows()

  arrCategoryID = arrCategoryID & "," & catRs("catId")
  arrCategoryName = arrCategoryName & "," & catRs("catName")
  catRs.movenext
 
Loop
%>

Så siger den 'Loop' without 'Do'
Avatar billede keysersoze Ekspert
15. november 2006 - 11:51 #10
Er der nogen grund til at du laver 2 arrays i stedet for bare ét?
Avatar billede madeindk Nybegynder
15. november 2006 - 11:59 #11
Ja :-) Det er fordi det skal udskrives sådan her:

<option value="<%=arrayCategoryID"><%=arrayCategoryName%></option>
Avatar billede madeindk Nybegynder
15. november 2006 - 12:01 #12
<option value="<%=arrayCategoryID%>"><%=arrayCategoryName%></option>
Avatar billede madeindk Nybegynder
15. november 2006 - 12:19 #13
Fandt en løsning:

                For t = LBound(arrayCategoryID) to UBound(arrayCategoryID)
                  If not arrayCategoryID(t) = "" Then
                    Response.Write("<option value=""" & arrayCategoryID(t) & """>" & arrayCategoryName(t) & "</option>")
                  End If
                Next
Avatar billede keysersoze Ekspert
15. november 2006 - 12:28 #14
umiddelbart vil jeg mene det er spild at lave 2 arrays - du kan jo sagtens lave et array med flere dimensioner, og det er bla det man gør med getrows. Visuelt og kodemæssigt kan du måske se forskellen her; http://www.codefixer.com/tutorials/multidimensional_arrays.asp - det gør det betydelig lettere at holde styr på ens data.
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