[AccessD] Nz function in Access 2002

Gustav Brock gustav at cactus.dk
Fri Mar 7 11:58:00 CST 2003


Hi Charlotte

I cannot comment on the value of the article as I don't have A2002.

For the Nz() function, I've never seen any problem with it in A9x or
A2000 except for the case I describe in the other (re)posting.

Perhaps one of our fellow listers could collect what Nz() DOES return
in A2002??

/gustav


> From the same article:

> The Nz method of the data source control is suppose to replace Null
> values with a zero (0) or some other specified value. However, the
> method does not replace Null values as expected.

> And ...

> Although the Nz Method is correctly documented in Microsoft Script
> Editor Help, it does not function as expected

> However, the article doesn't explain what it *DOES* do--that unexpected
> behavior.  

> I've never had any problems with Nz, so I can't agree with your "flaky"
> assessment.  It works for me, yet the article says it "does not function
> as expected".  Maybe I have different expectations?

> Charlotte Foust



> -----Original Message-----
> From: Gustav Brock [mailto:gustav at cactus.dk] 
> Sent: Friday, March 07, 2003 4:43 AM
> To: Charlotte Foust
> Subject: Re: [AccessD] Nz function in Access 2002


> Hi Charlotte

>> I ran across an MSKB article today 
>> http://support.microsoft.com/default.aspx?scid=kb;en-us;295619 that 
>> says the Nz function works in 2002 but it may not work as expected!
>> Say what??   It works, but it doesn't?

> How can you read that from the article? It reads:

> <quote>

> The Nz method of the data source control is supposed to replace Null
> values with a zero (0) or some other specified value. However, the
> method does not replace Null values as expected.   

> </quote>

> So it doesn't work in A2002.

> However, Nz() has always been flaky - to quote myself from 12. May
> 2002: 

> <quote>

> Did you know that - when used to return an expression in a query -
> Nz() always returns a string even if it is supposed not to do so?

> Like this:
>     Expr1: Nz([fldNumeric])
> or:
>     Expr1: Nz([fldNumeric], 0)

> If you need a numeric value, you'll have to wrap it in Int():

>     NumExpr1: Int(Nz([fldNumeric]))

> Even if fldNumeric is a long, this will return a long when fldNumeric is
> not Null but an integer for Null. If you wish a long in any case, the
> zero for Null values for some reason must be present:

>     NumExpr1: Int(Nz([fldNumeric], 0))

> Alternatively, Nz() can be replaced with the good old IIf()
> construction:

>     NumExpr1: IIf(IsNull([fldNumeric]), 0,[fldNumeric])

> This is tested for Access 95, 97 and 2000. Don't know about 2002.

> </quote>

> /gustav


>> Has anyone run into this?  Nz isn't always the most appropriate 
>> function, but I've never seen it fail, at least not that I knew about.

>> We use this a lot, and I'm concerned about migrating our apps from 97 
>> to 2002 and having a lot of code fall over.  I wondered if it could be

>> the result of not passing in the optional argument, but the article 
>> seemed rather vague to me.  Does anyone else have first-hand knowledge

>> of the problem?




More information about the AccessD mailing list