as default second parameter for Nz() is an empty STRING!
Only when Nz is used in a query; otherwise the return data type is decided by the whether the context determines it should be Null or ZLS.
The DSum function should return Null if there are no records that satisfy the criteria so not sure why a test for Null would not result in Null unless you're summing numbers that are text data type. Here's some tests I did with a calculated textbox on a form and directly on the table. Note: not my db so don't mind the wonky names.
TABLE
?DSum("[Point Value]","[Attendance Log]","EmployeeID=1234")
4
?TypeName(DSum("[Point Value]","[Attendance Log]","EmployeeID=1234"))
Double
?DSum("[Point Value]","[Attendance Log]","EmployeeID=123") << no such record with 123
Null
TEXTBOX (with criteria 123)
?TypeName(forms![Attendance Log1].Text175.value)
Null
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.