A.D.TEJPAL
adtp at hotmail.com
Thu Jun 21 09:38:35 CDT 2007
Steve, Don't you think data type enforcement function wrapped around overall expression for the calculated field should suffice, instead of converting each element separately ? Example (RDate is date type field while RNum & SNum are number type fields): (a) Date type output: CDate(Nz([RDate],Date())+Nz([RNum],0)) (b) Number type output: Val(Nz([RNum],0)+Nz([SNum],0)) Note - It is also observed that the output of a calculated field in a query is a string only when it is a single element Nz() expression like Nz([RDate],Date()) or Nz([RNum],0). If there is interaction involving mathematical operators, the output is seen to be a number even without application of a data type conversion function. However, for date type, use of CDate() becomes necessary so as to display dates rather than equivalent date serials. All in all, it would be a safe practice to apply the conversion as per (a) & (b) above universally when using Nz() function. Similar precaution becomes necessary in case of domain aggregate functions. Best wishes, A.D.Tejpal --------------- ----- Original Message ----- From: Steve Schapel To: Access Developers discussion and problem solving Sent: Thursday, June 21, 2007 02:34 Subject: Re: [AccessD] NZ for Null Virginia, Sorry, I do see now that you specifically mentioned this is in "the query for the report", I got confused by the context of some of the other posts. So, I recommend, in the query... YourCalculatedField: Val(Nz(tbl_InventoryCurrent!Units,0))-Val(Nz(qry_nonpurchase!SumOfUnits,0))-Val(Nz(qry_purchase!SumOfUnits,0)) ... and then, as per Dan's recommendation, set the Format property of the textbox on the report to Standard, Decimal Places 0. Regards Steve Steve Schapel wrote: > Virginia, > > I agree with Arthur and Dan. I can't see the beginning of this thread, > so I'm not sure whether this expression is being used in code, or in a > calculated field in a query, or in the Control Source of a calculated > textbox on your report. Anyway, something else to bear in mind is that the Nz() function returns a string, so it is sometimes tricky. If you want the result to still behave as a number (e.g. to apply number > formats etc), you have to convert it back to a numerical value again, > typically by wrapping it inside a Val() function.