Kod fungerar ej om flera värden finns i array

ASP

1 svar · 389 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Trådstart#1

Varför fungerar nedanstående kod endast när Arrayen innehåller endast ett tal och inte flera? T ex. fungerar den när Arrayen innehåller endast "20" men inte om Arrayen innehåller "3,4,16,20".

<% Call OpenConn()
Set rsGetActiveMenu = Conn.Execute("SELECT Id, PageId FROM tblMenuCat")
Do Until rsGetActiveMenu.EOF
a = Array(rsGetActiveMenu("PageId"))
For Each x In a
If x = Request.QueryString("lnkid") Then
  strActiveMenuId = rsGetActiveMenu("Id")
  strMenuImg = rsGetActiveMenu("Id")
  Exit Do
Else
  strActiveMenuId = "1"
  strMenuImg = "1"
End If
Next
rsGetActiveMenu.MoveNext
Loop
rsGetActiveMenu.Close : Set rsGetActiveMenu = Nothing
Call CloseConn %>
Medlem sedan dec. 19996 721 inlägg
#2

Det beror på att arrayen aldrig kommer att innehålla mer än ett element. Om rsGetActiveMenu("PageId") är "1" så kommer arrayen att innehålla ett element ("1") och om rsGetActiveMenu("PageId") är "1, 2, 3" så kommer arrayen att innehålla....... ETT element med värdet "1, 2, 3".

Om du vill få ut en array så är det

a=split(rsGetActiveMenu("PageId"),", ")

som gäller. Som sagt, det är inte så smidigt att lagra flera värden i en kolumn. Låt helst bli.

264 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)