Avatar billede svinget Praktikant
24. juli 2007 - 15:29 Der er 23 kommentarer og
2 løsninger

Sætte n/a i tomme felter

Hej

Jeg hiver data på en asp side fra en Access database med denne kode: <%= rs("data1") %>

Af og til er der ikke data tilgængelig i feltet, og i de tilfælde kunne jeg godt tænke med at skrive n/a i stedet for at have et tomet felt. Er det muligt???

Mvh. Kim
Avatar billede fennec Nybegynder
24. juli 2007 - 15:33 #1
function na(fData)
  if trim(fData&"") = "" then
    na="n/a"
  else
    na=fData
  end if
end function

<%= na(rs("data1")) %>
Avatar billede thesurfer Nybegynder
24. juli 2007 - 15:36 #2
Så vidt jeg ved, er et tomt felt i databasen lig null, og ikke "".. men det kommer an på typen af feltet..

Derfor: "" & rs("data1")

Eksempel: <%= na("" & rs("data1")) %>

Det konverterer et null felt til "", så man kan checke med: if felt = "" then
Avatar billede thesurfer Nybegynder
24. juli 2007 - 15:37 #3
Ellers skal man bruge: If IsNull(rs("data1")) then
Avatar billede thesurfer Nybegynder
24. juli 2007 - 15:39 #4
Det gælder typisk, hvis man prøver på at lave en replace, på et felt der er null (ikke indeholder noget).. Så får man en fejl / siden crasher..

Det undgår man med: replace("" & rs("data1"), ......)
Avatar billede fennec Nybegynder
24. juli 2007 - 15:52 #5
thesurfer >>
Det er netop derfor jeg smider &"" på trim i funktionen:

if trim(fData&"") = "" then
Avatar billede thesurfer Nybegynder
24. juli 2007 - 15:54 #6
fennec> Ahh.. vidste jeg da godt.. at du havde "" der.. :-P
Avatar billede svinget Praktikant
24. juli 2007 - 16:13 #7
Jeg får denne fejl:
Microsoft VBScript compilation error '800a03ea'
Syntax error
...., line 189
function na(fData)
^

Med denne kode:
<%
function na(fData)
  if trim(fData&"") = "" then
    na="n/a"
  else
    na=fData
  end if
end function
%>
                           
<%= na(rs("data1")) %>
Avatar billede fennec Nybegynder
24. juli 2007 - 16:16 #8
Virker fint for mig...

Har du placeret den inden i en anden funktione eller sub??
Avatar billede thesurfer Nybegynder
24. juli 2007 - 16:20 #9
Måske er det bedre, at den får afviklet alle linierne, inden den returnerer strengen..

Altså:

<%
function na(fData)
dim retur
  if trim(fData & "") = "" then
    retur = "n/a"
  else
    retur = fData
  end if
na = retur
end function
%>
Avatar billede svinget Praktikant
24. juli 2007 - 16:31 #10
Jeg har en anden if, samt et loop

<%
If (rs.BOF AND rs.EOF) Then
    Response.Redirect "no_values.asp"
Else
    While NOT rs.EOF
    %>

NY KODE

<%
  rs.MoveNext
  Wend
End If %>
Avatar billede fennec Nybegynder
24. juli 2007 - 16:33 #11
Prøv at smide funktionen helt i bunden eller toppen af din side...
Avatar billede thesurfer Nybegynder
24. juli 2007 - 16:36 #12
Eksempel:

<%
function na(fData)
  if trim(fData&"") = "" then
    na="n/a"
  else
    na=fData
  end if
end function


... din kode her og så:

If (rs.BOF AND rs.EOF) Then
    Response.Redirect "no_values.asp"
Else
    While NOT rs.EOF

response.write na(rs("data1"))

  rs.MoveNext
  Wend
Avatar billede thesurfer Nybegynder
24. juli 2007 - 16:37 #13
Og egentligt burde det være OR i stedet for AND: If (rs.BOF AND rs.EOF) Then

Jeg tror ikke at det kan forekomme, at den er BOF og ikke samtidigt EOF, men det kunne jo ske..

Med OR er man i sikkerhed..
Avatar billede svinget Praktikant
24. juli 2007 - 16:47 #14
Hvis jeg sætter den i toppen, så virker den fint
Avatar billede svinget Praktikant
24. juli 2007 - 16:48 #15
thesurfer: din kode kommer med samme fejl
Avatar billede thesurfer Nybegynder
24. juli 2007 - 16:49 #16
Det kan ikke passe.. :-)

Hvis os så meget kode som muligt.. også gerne det hele..

Jeg tror at du har en fejl, lige før funktionen..
Avatar billede thesurfer Nybegynder
24. juli 2007 - 16:50 #17
Forresten.. har du prøvet 24/07-2007 16:20:44 ?
Avatar billede thesurfer Nybegynder
24. juli 2007 - 16:56 #18
Hmm... i 24/07-2007 16:47:54 skriver du, at det virker fint?
Hvis det virker fint, behøver du ikke at ændre på noget.. :-)
Avatar billede svinget Praktikant
24. juli 2007 - 17:10 #19
Jeg har ikke brug for koden i toppen af side :)
Avatar billede svinget Praktikant
24. juli 2007 - 17:12 #20
Ups - nu ved jeg hvad du mener. resultatet kan jeg placere hvor det passer mig. Takker for hjælpen :)
Avatar billede svinget Praktikant
24. juli 2007 - 17:18 #21
Det var godt nok fennec løsning jeg brugte, men i begge har brugt tid på det, så skal jeg splitte point'ene 45 / 15???
Avatar billede thesurfer Nybegynder
24. juli 2007 - 17:19 #22
Hvis det er iorden med fennce.. :-)
Avatar billede thesurfer Nybegynder
24. juli 2007 - 17:20 #23
Rettelse: fennec :-)

Som vist nok bruger ".-) <-- One Eyed Jack".. good ol' days.. :-)
Avatar billede fennec Nybegynder
25. juli 2007 - 08:39 #24
Det er i orden med mig

.o) <-- One Eyed Jack
Avatar billede svinget Praktikant
25. juli 2007 - 11:59 #25
Takker for superb hjælp
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