问题描述
我想创建一个包含各种数据库字段的地址字段。但是,当这些值之一为NULL时,该NULL值之后的字段将不再显示。
例如,在我的公式中,字段BlockS为NULL。因此,不再显示CountryS字段中的值。我该如何确保尽管有NULL值,但所有确实具有值的字段都会显示出来?
IF ISNULL({Header.StreetS}) OR {Header.StreetS} = "" THEN "" ELSE {Header.StreetS} & CHR(13)
& IF ISNULL({Header.ZipCodeS}) OR {Header.ZipCodeS} = "" THEN "" ELSE {Header.ZipCodeS} & ' '
& IF ISNULL({Header.CityS}) OR {Header.CityS} = "" THEN "" ELSE {Header.CityS} & CHR(13)
& IF ISNULL({Header.BlockS}) OR {Header.BlockS} = "" THEN "" ELSE {Header.BlockS} & CHR(13)
& IF ISNULL({Header.CountryS}) OR {Header.CountryS} = "" THEN "" ELSE {Header.CountryS}
解决方法
我已经看过很多次了。
问题在于您无法在同一ISNULL({Column})
条款中评估{Column} = ""
和IF
。
因为{Column} = ""
将被评估,即使ISNULL
已返回True
。
这应该有效:
IF ISNULL({Header.StreetS}) THEN "" ELSE IF {Header.StreetS} = "" THEN "" ELSE {Header.StreetS} & CHR(13)
& IF ISNULL({Header.ZipCodeS}) THEN "" ELSE IF {Header.ZipCodeS} = "" THEN "" ELSE {Header.ZipCodeS} & ' '
& IF ISNULL({Header.CityS}) THEN "" ELSE IF {Header.CityS} = "" THEN "" ELSE {Header.CityS} & CHR(13)
& IF ISNULL({Header.BlockS}) THEN "" ELSE IF {Header.BlockS} = "" THEN "" ELSE {Header.BlockS} & CHR(13)
& IF ISNULL({Header.CountryS}) THEN "" ELSE IF {Header.CountryS} = "" THEN "" ELSE {Header.CountryS}