If Cint(Ubound(a)) >= 0 Then Response.write "Der er indhold i array'et " Else Response.Write "Der er ikke noget indhold." End If ---------------------------------- Men jeg får en subscript out of range. og det er jo klar, man kan jo ikke lave en Ubound på ingenting.
Men kan jeg ikke på en eller anden måde spørge om det eret array eller ikke et array. For jeg definerer at det er et array, når jeg har fundet noget at smide ned idet.
------ Hvis der er noget så smid det ned i et array --------- If Not objrsDB.eof Then ReDim m_arrIndhold(0) Set objIndhold = New clsIndhold objIndhold.intWebSideId = objrsDB("WEBSIDE_ID") objIndhold.strSkabelonFil = objrsDB("SKABELON_FIL") Set m_arrIndhold(intCount) = objIndhold End If
----------- Spørg efter om det er indhold i array --------- if Ubound(a) < LBound(a) then Response.Write "Der findes en side" Response.End else Response.Write "Der findes ikke en side" Response.End end if
hmm jeg var lidt for hurtigt med at skrive min kode ind her. Så jeg kan godt forstå, hvis ovenstående forvirrer. Jeg vil på en måde bare teste om m_arrIndhold() er tom. Eller omvendt om der er indhold i m_arrIndhold().
Hvis du har erklæret det med en fast dimension, som f.esk. dim A(0) eller dim B(1) vil A(0), B(0) og B(1) eksistere. Om de er tomme kræver at du undersøger hver enkelt komponent.
Hvis du erklærer A således: dim A A=split(s,",") så er A uden felter, når Ubound(A) er lig -1.
Så vidt jeg ved, er det den eneste måd, du ved hjælp af Ubound kan afgøre det. dim A() så vil Ubound ikke være defineret, før du har redimensioneret A.
Når du vil vide om et array er tomt, er det så et spørgsmål om hvorvidt A(0) er defineret, eller er det spørgsmålet om om A(0)="", A(1)="",...,A(n)="" ??
Du kan ved at benytte On Error resume next derefter spørge på A(0) Hvis Err.number<>0 så er A(0) ikke defineret.
I får lige hele smøren her. Dette er min metode ------------------------------------------ Public Function Returner_ForsideTemplateNavn(intWebstedId) Call doConnectDB() Dim objIndhold Dim m_arrIndhold()
strSQL = "SELECT WEBSIDE.IDNR AS WEBSIDE_ID, SKABELON.SKABELON_FIL "&_ " FROM SKABELON INNER JOIN WEBSIDE ON SKABELON.IDNR = WEBSIDE.SKABELON_ID WHERE WEBSIDE.FORSIDE=1 AND WEBSIDE.WEBSTED_ID=" & numConvertToDBNum(intWebstedId) & " AND (DATE() >= START_DATO AND DATE() <= SLUT_DATO) ORDER BY RAEKKEFOLGE;" Set objrsDB = objConnection.execute(strSQL)
If Not objrsDB.eof Then ReDim m_arrIndhold(0) Set objIndhold = New clsIndhold objIndhold.intWebSideId = objrsDB("WEBSIDE_ID") objIndhold.strSkabelonFil = objrsDB("SKABELON_FIL") Set m_arrIndhold(intCount) = objIndhold End If objrsDB.close
Set objrsDB = Nothing Call doDisConnectDB() Returner_ForsideTemplateNavn = m_arrIndhold End Function
--------------------------------------- ----Her kommer mit 'main program'------
Dim a
Set objIndhold = New clsHentIndhold a = objIndhold.Returner_ForsideTemplateNavn(intWebstedId)
if Ubound(a) = null then Response.Write "Der findes en side" Response.End else Response.Write "Der findes ikke en side" Response.End end if
Funktionen isArray(a) afgør egentlig ikke om et array er tomt, men kun om den variable a er af typen et array, og det var åbenbart det du havde brug for at få at vide. F.eks. vil dim A(), B B=split(s,",") resultere i to tomme tabeller (arrays). Både isArray(A) og isArray(B) er sande. Men Ubound(A) er ikke defineret. redim A(-1) Nu vil Ubound(A) være -1 og Ubound(B) er -1. Nu vil man vel kalde A for et tomt array. redim A(0) Nu er Ubound(A) lig med 0, og udsagnet A(0)="" er sandt, men man vil vel ikke kalde A for et tomt array.
Synes godt om
Ny brugerNybegynder
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.