Avatar billede vange_inet Nybegynder
14. maj 2000 - 17:09 Der 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 --->

Avatar billede phylox2 Nybegynder
14. maj 2000 - 17:26 #1
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
Avatar billede vange_inet Nybegynder
14. maj 2000 - 17:33 #2
Dit forslag gør ingen forskel.

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?
Avatar billede phylox2 Nybegynder
14. maj 2000 - 17:44 #3
Jeg forstår ikke lige problemstillingen ... hvor sætter du response.write(subValue) ind ?
Avatar billede vange_inet Nybegynder
14. maj 2000 - 17:53 #4
Jeg indsætter response.write lige inden if-sætningen. Der har subValue en værdi, men if isNull fanger den alligevel.
Avatar billede vange_inet Nybegynder
14. maj 2000 - 17:55 #5
Det er altid isNull der fanger den (jeg har lige delt OR-delen op i to)
Avatar billede philiph Nybegynder
15. maj 2000 - 01:57 #6
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 --->

Philip
Avatar billede sone Nybegynder
15. maj 2000 - 14:07 #7
Den streng som man skal lave Replace på, må ikke indeholde Null.

Derfor laver jeg altid følgende trix: Konkatinerer den tomme streng:

  replaceCrLf = replace(subValue&"", vbCrLf, "<br>")
Avatar billede vange_inet Nybegynder
15. maj 2000 - 14:21 #8
Hvad gør .value? Hvad er forskellen med og uden .value?
Avatar billede vange_inet Nybegynder
15. maj 2000 - 14:23 #9
sone: Smart lille trix, der!
Avatar billede ortrak Nybegynder
15. maj 2000 - 14:27 #10
hmmm....det kunne være man skulle have svaret her i stedet for i det andet indlæg :-]


/ortrak
Avatar billede philiph Nybegynder
15. maj 2000 - 14:28 #11
.Value returnerer feltets værdi. Uden .Value overføres hele feltet som objekt.
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