14. maj 2000 - 17:09Der er
9 kommentarer og 2 løsninger
replace, scope-regler
Jeg får nedenstående fejl: Microsoft VBScript runtime error '800a005e' Invalid use of Null: 'replace'
Fejlen kommer ved følgende kode: Function replaceCrLf(aValue) DIM subValue set subValue = aValue if (subValue=Null) or (subValue="") then replaceCrLf = "" else set subValue = replace (subValue, vbCrLf, "<br>") replaceCrLf = subValue end if End Function
Hvis jeg kalder funktionen med en værdi, der er NULL, burde den fanges af if-sætningen?!
Jeg har rodet med det længe og til sidst ville jeg bare have siden til at virke, så jeg fjernede kaldet til replace, men det bevirker at funktionen replaceCrLf ikke returnerer noget, og den burde jo bare returnere det, den fik med ind. Hvis jeg kalder med nedenstående kode returnerer funktionen ikke noget, men hvis jeg tilføjer "response.write(subValue)" i replaceCrLf udskrives en værdi, så variablen har en værdi - længere nede tildeler jeg funktionens returværdi til subValue, men der hvor funktionen kaldes returneres ingenting.
Funktionen ligger i en anden ASP blok end kaldet dertil - har ASP nogle forskruede scope-regler, man burde kende til?
<--- code snippet begin ---> Function replaceCrLf(aValue) DIM subValue set subValue = aValue if (subValue=Null) or (subValue="") then replaceCrLf = "" else set subValue = replace (subValue, vbCrLf, "<br>") replaceCrLf = subValue end if End Function <--- code snippet end --->
<--- code snippet begin ---> <TD><%=dbRs(DB_FOEDSELSDATO)%></TD> <TD><%=replaceCrLf(dbRs(DB_INTERNE_NOTER))%></TD> <--- code snippet end --->
Function replaceCrLf(aValue) DIM subValue set subValue = aValue if isnull(subValue) or (subValue="") then replaceCrLf = "" else set subValue = replace (subValue, vbCrLf, "<br>") replaceCrLf = subValue end if End Function
Hvis jeg indsætter kommandoen "response.write(subValue)" for if-sætningen, udskrives værdien af subValue, men programmet programmet udfører kommandoen "replaceCrLf = """ !!!!???? Hvad ...... sker der?
Jeg har svaret i din anden tråd, men du får også lige et svar her:
Her er en optimeret/korrekt version af din rutine. Bemærk ændringen i sidste linie kode (.Value)
<--- code snippet begin ---> Function replaceCrLf(aValue) if IsNull(aValue) Then replaceCrLf = "" else if subValue="" then replaceCrLf = "" else replaceCrLf = replace (subValue, vbCrLf, "<br>") end if end if End Function <--- code snippet end --->
<--- code snippet begin ---> <TD><%=dbRs(DB_FOEDSELSDATO)%></TD> <TD><%=replaceCrLf(dbRs(DB_INTERNE_NOTER).Value)%></TD> <--- code snippet end --->
.Value returnerer feltets værdi. Uden .Value overføres hele feltet som objekt.
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.