Gustav Brock
gustav at cactus.dk
Fri Mar 7 06:43:01 CST 2003
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?