webForumDet fria alternativet

Arrayproblem!

6 svar · 328 visningar · startad av znyder

znyderMedlem sedan dec. 2002172 inlägg
#1

Hej, kollt runt här på WF men inte hittat det jag söker efter.

Mitt problem:

<%
SET RStemp = MinCon.Execute("SELECT * FROM tillverkare ORDER BY tillverkare")
Do While NOT RStemp.EOF

LMG_SQL = LMG_SQL & """" & RStemp("tillverkare") & """, "

RStemp.MoveNext
Loop
%>

men när jag ska änvända den i en array:
myarray = array(LMG_SQL)

så skriver den bara ut:
"Atari", "Bandai", "Nintendo"

som en enda text... varför delas den inte ut??

jimpaMedlem sedan jan. 2001361 inlägg
#2

Hej,

Vet inte svaret på din fråga dock.. men ett allternativ kan ju vara att göra så här istället:

<%
SET RStemp = MinCon.Execute("SELECT * FROM tillverkare ORDER BY tillverkare")
Do While NOT RStemp.EOF

LMG_SQL = LMG_SQL & ";" & RStemp("tillverkare")

RStemp.MoveNext
Loop

myArray = Split(LMG_SQL, ";")

 For i = 0 To Ubound(myArray)
  Response.Write myArray(i)
Next
%>
J.N.Medlem sedan apr. 20031 660 inlägg
#3

HEJ!

Du skriver tydligen ut "Atari", det borde vara endast Atari?

Jag tror du lider av fnuttomani.
Det borde räcka med

LMG_SQL = LMG_SQL & RStemp("tillverkare") & ", "

http://www.devguru.com/Technologies/vbscript/quickref/array.html

GuffaMedlem sedan juni 2004533 inlägg
#4

Den delas inte upp därför att du inte har gjort något för att dela upp den.

När du skapar arrayen med strängen i så skapas det helt enkelt en array med en enda post i. Det sker ingenting magiskt som känner av det som strängen innehåller.

Ifall du vill dela upp strängen på kommatecken så använder du funktionen Split:

astrCompanies = Split(LMG_SQL, ", ")

Tänk dock på att den inte bryr sig om ifall kommatecknen kommer ifrån datat i databasen eller ifrån koden. Ifall strängen ser ut så här:

"Acme, Ltd", "Atari"

så kommer du att få tre poster:

"Acme
Ltd"
"Atari"

Du kan göra så här för att få innehållet i recordsetet i en array:

astrCompanies = RStemp.GetRows()

Det du får är en tvådimensionell array som innehåller datat ifrån posterna och fälten i recordsetet.

J.N.Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

Guffa skrev:

Den delas inte upp därför att du inte har gjort något för att dela upp den.

Nja, det trodde jag också först, men när jag sedan kontrollerade hur syntaxen för Split ser ut, kom jag snabbt fram till att jag hade fel, och tror att felet ligger i fnuttarna.

<%myarray = array("A", "B", "C", "D")%>
<%=myarray(0)%>
ger
A

Guffa skrev:

Tänk dock på att den inte bryr sig om ifall kommatecknen kommer ifrån datat i databasen eller ifrån koden. Ifall strängen ser ut så här:

"Acme, Ltd", "Atari"

så kommer du att få tre poster:

"Acme
Ltd"
"Atari"

Detta är fel, det fungerar alldeles utmärkt.

<%myarray = array("A,x", "B", "C", "D")%>
<%=myarray(0)%>
<%=myarray(1)%>
ger
A,x
B

Du behöver inte kalla det magiskt, det ligger i VBscript-språket. :e

GuffaMedlem sedan juni 2004533 inlägg
#6

J.N. skrev:

HEJ!

Guffa skrev:

Den delas inte upp därför att du inte har gjort något för att dela upp den.

Nja, det trodde jag också först, men när jag sedan kontrollerade hur syntaxen för Split ser ut, kom jag snabbt fram till att jag hade fel, och tror att felet ligger i fnuttarna.

<%myarray = array("A", "B", "C", "D")%>
<%=myarray(0)%>
ger
A

Nu blandar du ihop saker och ting. Det du skapar i exemplet är en array med fyra poster, men det som znyder skapade var en array med en post.

Array("A, B, C, D") är inte samma sak som Array("A", "B", "C", "D").

J.N. skrev:

Guffa skrev:

Tänk dock på att den inte bryr sig om ifall kommatecknen kommer ifrån datat i databasen eller ifrån koden. Ifall strängen ser ut så här:

"Acme, Ltd", "Atari"

så kommer du att få tre poster:

"Acme
Ltd"
"Atari"

Detta är fel, det fungerar alldeles utmärkt.[KOD]<%myarray = array("A,x", "B", "C", "D")%>
<%=myarray(0)%>
<%=myarray(1)%>
ger
A,x

Nej, det är inte fel. Här blandar du ihop Array med Split.

Split("A,x, B, C, D", ", ") get inte samma resultat som Array("A,x", "B", "C", "D"). Ifall man lägger in separata värden i en array så är det ju självklart att man kan ha kommatecken i värdena.

J.N.Medlem sedan apr. 20031 660 inlägg
#7

Guffa skrev:

J.N. skrev:

HEJ!

Guffa skrev:

Den delas inte upp därför att du inte har gjort något för att dela upp den.

Nja, det trodde jag också först, men när jag sedan kontrollerade hur syntaxen för Split ser ut, kom jag snabbt fram till att jag hade fel, och tror att felet ligger i fnuttarna.

<%myarray = array("A", "B", "C", "D")%>
<%=myarray(0)%>
ger
A

Nu blandar du ihop saker och ting. Det du skapar i exemplet är en array med fyra poster, men det som znyder skapade var en array med en post.

Array("A, B, C, D") är inte samma sak som Array("A", "B", "C", "D").

Är du absolut 100% säker på att det är en array med en post?
Eller att det är det han vill ha?
Det är nämligen inte jag, särskilt inte eftersom han har så många fnuttar.

Guffa skrev:

J.N. skrev:

Guffa skrev:

Tänk dock på att den inte bryr sig om ifall kommatecknen kommer ifrån datat i databasen eller ifrån koden. Ifall strängen ser ut så här:

"Acme, Ltd", "Atari"

så kommer du att få tre poster:

"Acme
Ltd"
"Atari"

Detta är fel, det fungerar alldeles utmärkt.

<%myarray = array("A,x", "B", "C", "D")%>
<%=myarray(0)%>
<%=myarray(1)%>
ger
A,x

Nej, det är inte fel. Här blandar du ihop Array med Split.

Split("A,x, B, C, D", ", ") get inte samma resultat som Array("A,x", "B", "C", "D"). Ifall man lägger in separata värden i en array så är det ju självklart att man kan ha kommatecken i värdena.

Nej, det har jag inte påstått heller, Split och Array är två skilda saker.
Det jag skriver ger exakt det resultat jag skriver, och inget annat, det är bara att testa!

Eftersom inte znyder har svarat på våra inlägg vet vi inte hur felsökningen framskrider; om han har för många fnuttar, eller om han borde använda Split istället.

:h

130 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)