On Tue, 24 Jun 2003 10:21:53 +0200, "Jakob Munck"
<jakob.munck@tdcadsl.dk> wrote:
>På en af mine sites har jeg en funktion, der skal vise hvor lang en tekst,
>der ligger i en db, er, når den udskrives på papir. Det foregår således:
>
>sider = (Len(RS("tekst")) + 250)/3000
>antal_sider = Round(sider, 1)
>
>Det har, så vidt jeg ved, fungeret godt i lang tid, men er jeg begyndt (!)
>at få følgende fejlmelding:
>
>Microsoft VBScript runtime (0x800A005E)
>Invalid use of Null: 'Round'
Hvis RS("tekst") er Null, bliver Len også Null
Hvis Len er Null, bliver summen Null
Hvis summen er nul, bliver sider Null
Hvis sider er Null, får du en fejl
>Hvad skal laves om?
Én metode er at teste inden udregning:
strTekst = RS("tekst")
If IsNull(strTekst) Then strTekst = ""
sider = (Len(strTekst) + 250)/3000
antal_sider = Round(sider, 1)
En anden (simplere) er:
sider = (Len(RS("tekst") & "") + 250)/3000
antal_sider = Round(sider, 1)
- Humlen her er, at Null opfører sig som en nul-længde-streng, når den
&'es med en anden streng, så
RS("tekst") & "" = "", hvis RS("tekst") er Null
- hvis RS("tekst") er RS("tekst") & "" = RS("tekst")
Ellers kan du sætte feltet i db'en til ikke at acceptere Null-værdier
(så skal du selvfølgelig sørge for, at der altid indsættes noget andet
- og så kan man diskutere, hvor smart det nu er ...)
Eller du kan bruge en Iif i din Sql til at gardere dig mod
Null-værdier.
Alle løsninger har deres fordele og ulemper, så: pøj-pøj
--
Jørn Andersen,
Brønshøj