Avatar billede mailand Nybegynder
16. januar 2003 - 20:33 Der er 2 kommentarer og
1 løsning

problemer med strings uden indhold...

Jeg har et, synes jeg, meget maerkeligt faenomen her...

Jeg har foelgende:

sql = "SELECT * FROM t_members WHERE m_id = " & request.querystring
set rs = server.createobject("adodb.recordset")
rs.open sql, con
strHomephone = rs("m_homephone")
rs.close
set rs = nothing

og efterfoelgende denne if-saetning:
if strHomephone = "" then
    strHomephone = "# none #"
end if


MEN naar jeg udskriver indholdet af strHomephone, saa er den tom...!!!!

Feltet i min database er et tekstfelt...

Der er ikke noget indhold i feltet i databasen.
Jeg har proevet at inkludere et 'else' i min if-saetning, og det viser sig, den betragter strHomephone som om den har et indhold...

HJAELP!!!!

Jeg har 3 felter paa denne maade, og de opfoerer sig alle sammen ens - som om de har indhold uden at have det.

Er der en anden maade at koere min if-saetning paa... eller er der bare nogen, der har et svar paa, hvad der sker / ikke sker ????


Frustreret!

#Mailand
Avatar billede jespernaur Nybegynder
16. januar 2003 - 20:48 #1
Det kan være at strengen indeholder noget 'ikke-trykbart', fx NULL-tegn eller noget andet. Prøv følgende, så finder du ud af det:

  Response.Write("Længde = " & CStr(Len(strHomephone)) & "<br>")
  for i = 1 to Len(strHomephone)
      Response.Write( "ASCII-værdi: " & Asc(Mid(strHomephone,i,1)) & "<br>" )
  next

Mvh
Jesper Naur
Avatar billede mailand Nybegynder
16. januar 2003 - 20:58 #2
tror du har fat i noget der...

jeg loeste dog problemet, ved bare at give feltet en defaultvalue (0)

men tak anyways!
Avatar billede coltau Juniormester
16. januar 2003 - 21:18 #3
Jeg har et svar på hvad der sker.

strHomephone = rs("m_homephone")

Denne variable er svær at arbejde videre med fordi den er af typen VARIANT, hvilket betyder at den kan indeholde alle typer.

Når den så er blank/null og du skriver følgende: if strHomephone = "" then er det det samme som: Du spørger ASP om strHomePhone er en tom tekst og ASP svare nej det er den ikke og det er jo korrekt.

Du skal bahandle variablen strHomephone som en VARIANT eller et felt (som den jo blev sat lig med) og det kan ikke altid konverteres til en tekst.

Du skal gøre således:

if IsNull(rs("m_homephone")) then
  strHomephone = ""
else
  strHomephone = CStr(rs("m_homephone"))
end if

Så virker din if-sætning igen for nu er strHomephone typedefineret til TEKST.

Det er selvfølgelig ikke de eneste problemer man kan få med ASP - behandling af typer i ASP er jo nærmest en videnskab for sig selv.

Prøv eksempelvis den her:

  Session.LCID=1030
  s = Date
  if ("18/05/2002" > Date) then
    response.Write "18/05/2002 er større " & Date & "<br>"
  else
    response.Write "18/05/2002 er mindre " & Date & "<br>"
  end if

Den skriver 18/05/2002 er større 16-01-2003 fordi typedefinitionen først defineres i "if-sætningen" til typen TEKST. ASP vælger typen TEKST fordi det er den eneste der er kendt (s er jo af typen VARIANT)

Sådan kan man blive ved.
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