Oprettet tir. d. 20. september 2011 kl. 08:14:03

turbo2000
turbo2000 (16.455 point. Point ude: 740)

Invalid use of Null: 'replace'

Er der nogen der ved hvordan jeg undgår denne fejl?

<% if language = "" Then %>

    <% = Replace(x("beskrivelse"),vbCrLf,"<br />") %>

<% elseif language = "de" Then %>

    <% If Replace(x("beskrivelse_de"),vbCrLf,"<br />") = "0" Then %><% = Replace(x("beskrivelse"),vbCrLf,"<br />") %><% Else %><% = Replace(x("beskrivelse_de"),vbCrLf,"<br />") %><% End If %>

<% elseif language = "en" Then %>

    <% If Replace(x("beskrivelse_en"),vbCrLf,"<br />") = "0" Then %><% = Replace(x("beskrivelse"),vbCrLf,"<br />") %><% Else %><% = Replace(x("beskrivelse_en"),vbCrLf,"<br />") %><% End If %>

<% End If %>

Skrevet tir. d. 20. september 2011 kl. 08:29:20| #1

softspot
softspot (101.915 point)
www.softspot.dk
Det sker typisk fordi den streng du forsøger at udskifte noget i ikke er erklæret eller indeholder null (fordi den kommer fra et databasefelt der er nullable). Du kan nok komme omkring problemet med følgende metode:

Replace(x("beskrivelse_en")&"", vbCrLf, "<br />")

Det sørger for at feltet, selvom det indeholder null, bliver lavet om til en gyldig streng.

Skrevet tir. d. 20. september 2011 kl. 12:42:06| #2

turbo2000
turbo2000 (16.455 point)
Hej Softspot mange tak for svaret :) Dog kan jeg ikke rigtig få det til at virke... nedestående eksempel vil ikke udskrive <% = Replace(x("tysk_de")&"",vbCrLf,"<br />") %>



<% If x("tysk") = "" then %>

    <% = Replace(x("dansk")&"",vbCrLf,"<br />") %>

<% Else %>

    <% = Replace(x("tysk")&"",vbCrLf,"<br />") %>

<% End If %>

Skrevet tir. d. 20. september 2011 kl. 12:42:52| #3

turbo2000
turbo2000 (16.455 point)
hov den vil ikke udsrkive: <% = Replace(x("tysk")&"",vbCrLf,"<br />") %> mener jeg :)

Skrevet tir. d. 20. september 2011 kl. 12:55:42| #4

softspot
softspot (101.915 point)
www.softspot.dk
Udskriver den noget overhovedet?

Du har umiddelbart samme udfordring med din if-sætning, da "" <> null. Dermed vil en null-værdi i x("tysk") medføre at den tyske alligevel forsøges udskrevet.

Prøv evt.

<%
If x("tysk") & "" = "" then

    Response.Write Replace(x("dansk")&"",vbCrLf,"<br />")

Else

    Response.Write Replace(x("tysk")&"",vbCrLf,"<br />")

End If
%>

Hvis dette ikke er problemet, må du lige give noget mere info om, hvilke data du arbejder med, dvs. hvad er der i de enkelte felter i dit recordset x...?

Skrevet tir. d. 20. september 2011 kl. 13:18:11| #5

turbo2000
turbo2000 (16.455 point)
Det var underligt.. Hvis jeg bruger din kode:
<%
If x("tysk") & "" = "" then

    Response.Write Replace(x("dansk")&"",vbCrLf,"<br />")

Else

    Response.Write Replace(x("tysk")&"",vbCrLf,"<br />")

End If
%>

så vil den ikke udskrive:

    Response.Write Replace(x("tysk")&"",vbCrLf,"<br />")


MEN hvis jeg fjerne din kode og bare skriver:
<% Response.Write Replace(x("tysk")&"",vbCrLf,"<br />") %>

så vil den gerne udskrive det :/

Skrevet tir. d. 20. september 2011 kl. 13:26:03| #6

softspot
softspot (101.915 point)
www.softspot.dk
Hvordan ser den kode der fungerer så ud?

Skrevet tir. d. 20. september 2011 kl. 13:33:22| #7

turbo2000
turbo2000 (16.455 point)
Den ser sådan ud:
<% Response.Write Replace(x("tysk")&"",vbCrLf,"<br />") %>

men hvis jeg erstatter dette med din kode vil den ikke udskrive "tysk"

Skrevet tir. d. 20. september 2011 kl. 13:36:15| #8

turbo2000
turbo2000 (16.455 point)
Kan det være noget i databasen der gør det?

Det virker umiddelbart også hvis feltet ikke er et memo

Skrevet tir. d. 20. september 2011 kl. 13:50:19| #9

softspot
softspot (101.915 point)
www.softspot.dk
Kan du ikke lige prøve at vise hele den if-sætning, hvor koden fungerer (hvis ellers det er det du mener med det du skriver)...?

Det er utroligt svært at hjælpe dig, når du ikke er mere meddelsom end du er. Du er nød til at vise den kode du arbejder med (det er ikke nok bare at vise én linje, som er taget ud af en kontekst). Samtidig er det også meget vigtigt hvilke data der ligger i den record din kode arbejder med, dvs. du skal altså have fortalt mig, hvilke data der helt konkret ligger i den record for de relevante felter.

Du kan bruge simple response.writes til at vise data med. Vær opmærksom på at null udskrives som blank, så du skal nok lave en eller anden form for tjek inden du udskriver værdien, f.eks.:

Response.Write "x(""tysk""): " & SkrivVaerdi(x("tysk")) & "<br>"
Response.Write "x(""dansk""): " & SkrivVaerdi(x("dansk")) & "<br>"

og så definer en funktion der hedder SkrivVaerdi i samme asp-side, således denne kan kaldes for hert felt du skal udskrive. Denne kunne se således ud:

function SkrivVaerdi(v)
  if isnull(v) then
    SkrivVaerdi = "NULL"
  elseif isempty(v) then
    SkrivVaerdi = "EMPTY"
  else
    SkrivVaerdi = v
  end if
end function

Skrevet ons. d. 21. september 2011 kl. 08:59:36| #10

turbo2000
turbo2000 (16.455 point)
Hej Softspot, jeg fandt ud af at memo felter åbenbart kun kan kaldes 1 gang. Det samme gælder tilsyneladene ikke for text felter så derfor virkede det fint.

Jeg fandt selv en løsning på problemet her:
    <%
dansk = x("beskrivelse")
    If Len(dansk) > 0 And IsNull(dansk) = False Then
    response.write replace(dansk, vbCrLf, "")
    End If
    %>

Smid et svar så for du point fordi du gad bruge din tid på at hjælpe mig (igen) ;)

Skrevet ons. d. 21. september 2011 kl. 09:35:30| #11

softspot
softspot (101.915 point)
www.softspot.dk
Ja, OK, det var jo en af de mere eksotiske :-)

Det kan være du kan finde noget interessant om hvordan man håndterer memo og blob-felter i øvrigt, hvis du søger efter noget med ReadChunk og WriteChunk sammen med ADO...

Det er ikke noget jeg selv har haft problemer med og derfor har jeg ikke brugt ovenstående.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

ASP: formular udtræk med mulighed for at rette

Oprettet den 21. maj 2012 kl. 15.09
quarkb giver 200 point for svar | Giv et svar »

Sorter biblioteker efter dato i ASP

Oprettet den 17. maj 2012 kl. 16.52
4ks giver 60 point for svar | Giv et svar »

Simpel login-funktion (web) - behov for flere logins/brugere

Oprettet den 15. maj 2012 kl. 09.54
madx giver 75 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger