Crystal Report空数据场景下公式使用问题求助
解决Crystal Report中两表数据减法的空值处理问题
嗨,作为Crystal Report新手遇到这种空值导致计算异常的情况太正常了,我来帮你搞定这个减法运算的问题!
问题分析
你当前的公式里,当peminjaman_alat1表没有对应nama_komponen的记录时,sum({peminjaman_alat1.peminjaman_banyak},{list_komponen1.nama_komponen})会返回null(空值)。直接用tonumber转换空值再做减法,会导致整个计算结果为空,从而无法显示你期望的数值(比如banyak为5或4时的Total)。
解决方案:空值替换为0
我们只需要在计算前判断sum的结果是否为空,为空就替换成0,再进行减法运算。这样就能保证所有场景下的计算都能正常输出。
基础版公式(假设banyak字段不会为空)
tonumber({list_komponen1.banyak}) - If IsNull(sum({peminjaman_alat1.peminjaman_banyak},{list_komponen1.nama_komponen})) Then 0 Else tonumber(sum({peminjaman_alat1.peminjaman_banyak},{list_komponen1.nama_komponen}))
严谨版公式(同时处理banyak可能为空的情况)
如果list_komponen1.banyak也有可能是空值,建议加上对它的空值判断,避免报错:
(If IsNull({list_komponen1.banyak}) Then 0 Else tonumber({list_komponen1.banyak})) - (If IsNull(sum({peminjaman_alat1.peminjaman_banyak},{list_komponen1.nama_komponen})) Then 0 Else tonumber(sum({peminjaman_alat1.peminjaman_banyak},{list_komponen1.nama_komponen})))
效果验证
修改公式后,就能得到你期望的结果:
| banyak | peminjaman_banyak | Total |
|---|---|---|
| 2 | 1 | 1 |
| 3 | 1 | 2 |
| 3 | 2 | 1 |
| 5 | 5 | |
| 4 | 4 |
内容的提问来源于stack exchange,提问作者user9543011
相关产品推荐
相关产品推荐

