Работа с нулевыми значениями в @DBLookup - PullRequest
0 голосов
/ 22 мая 2019

У меня есть представление домино со столбцом количества, но некоторые значения пусты ... и должны быть. Проблема в том, что @Sum работает нормально, пока у меня не будет пустого значения, затем оно прекратит суммирование.

Например: если значения 5,5, "" и 5, я получаю сумму 10, а не 15.

Я отследил проблему до @DbLookup, которая заключается в том, что он прекращает сборку возвращаемого массива, когда встречает пустое значение. Не существует встроенного метода для работы с нулевыми значениями.

https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/reference/r_wpdr_atfunctions_dblookup_r.html

Чтобы усложнить задачу, @dbLookup возвращает строку, если найден только один, или массив, если найдено более одного. Если значения 5,5, "" и 5, он возвращает массив из 2 значений.

var alloc = @Sum(@DbLookup(@DbName(), "SubForms",MainFrmID , "ca_ca_ca_ca_amount"));
if (isNaN(alloc)){
    return "$0.00";
}else{
    return "$" + alloc.toFixed(2);
}

Может ли кто-нибудь помочь мне реорганизовать @sum или @DbLookup, чтобы учесть пустые значения? К сожалению, я не могу определить какие-либо новые функции для этого решения. Окружающая среда плотно закрыта. Со списком значений 5,5, "" и 5 мне нужна сумма 15.

Ответы [ 3 ]

1 голос
/ 22 мая 2019

Я бы попробовал @Sum (@TextToNumber (@Trim (@Text (@DbLookup (...))))))

0 голосов
/ 22 мая 2019

Если @DbLookup не делает то, что вам нужно, вы всегда можете перебирать документы или просматривать записи для построения суммы.

Поток будет примерно таким:
1. Получить дескриптор текущей базы данных.
2. Получите дескриптор к представлению «SubForms».
3a. Получить коллекцию записей представления, используя метод getAllEntriesByKey () с MainFrmID в качестве ключа, если существует столбец представления, отображающий необходимые значения.
-OR, -
3b. Получите коллекцию документов, используя getAllDocumentsByKey () с MainFrmID в качестве ключа, если не существует столбца представления, отображающего необходимые значения.
4. Выполните итерацию по коллекции для суммирования значений, используя getColumnValues ​​(). Get (columnNumber) для доступа к значению из каждой записи представления или getItemValueDouble (fieldName) для доступа к значению из каждого документа.

Таким образом, вы можете легко обнаружить нулевые значения и отбросить их.

0 голосов
/ 22 мая 2019

я бы попробовал @Sum (@Transform (@Dblookup (....

)
...