Как я могу посчитать количество записей с @DbColumn?

Я пытаюсь получить значение столбца для некоторых вычисляемых текстовых полей на странице, используя @DbColumn,

Скажем, у меня есть представление под названием "По статусу", вот так:

+-------+--------+-----------+----------+------------+
| Count | Status |  Created  |  Author  |  Comments  |
+-------+--------+-----------+----------+------------+
|  134  |  Open  |           |          |            |
+-------+--------+-----------+----------+------------+
|       |        | Records with "Status" = "Open"... |
+-------+--------+-----------------------------------+
|  101  |  Hold  |           |          |            |
+-------+--------+-----------+----------+------------+
|       |        | Records with "Status" = "Hold"... |
+-------+--------+-----------------------------------+
...

Довольно понятен - он отображает все записи для базы данных по статусу и имеет счетчик (количество записей) для каждого статуса.

На моей странице у меня есть вычисляемое текстовое поле для каждого из статусов; Открыть, удерживать и т. Д. Я пытаюсь получить счет по статусу. Так, например:

@Text( @DbColumn(  "Notes" : "ReCache" ; "" : "" ; "By Status"; 1 ) );

Это возвращает 134, что является счетчиком для статуса "Открыть". Я знаю, что это правильно для моего вышеупомянутого утверждения, однако, это не то, для чего я иду.

Как я могу получить значение "Count" для каждого "Status"? С помощью @DbLookup возможно..?

2 ответа

Решение

Есть два разных способа сделать то, что вы хотите сделать. Сначала нужно сделать @DbLookup для каждого значения вашего статуса. Это будет выглядеть так (пример для статуса Open):

@DbLookup( "":"ReCache"; ""; "By Status"; "Open"; 1)

В зависимости от количества статусов, которые могут стать медленными.

Другой способ - создать столбец db в вычисляемом поле (это будет означать, что для этой цели будет взята форма, а не страница, но на самом деле это не проблема):

Поле с именем "allTotals", число, рассчитанное для отображения, допускает несколько значений, формула:

@DbColumn( "":"ReCache"; ""; "By Status"; 1)

И тогда в каждом значении для итогового статуса вам понадобится его позиция в представлении. Первый статус:

@Subset( @Subset( allTotals; 1 ) ; -1 )

Второй статус:

@Subset( @Subset( allTotals; 2 ) ; -1 )

...

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

@DbLookup - одно из решений. Вы хотите настроить новое представление, где столбец "Состояние" является первым столбцом в представлении и отсортирован по алфавиту. Во втором столбце будет счетчик, и тогда ваша формула для получения счетчика, находящегося в состоянии ожидания, будет:

@DbLookup("Notes":"NoCache"; "":""; "NewView"; "Hold"; 2);

Вы также должны иметь возможность использовать @DbColumn для получения двух связанных списков.

Statuses := @DbColumn(  "Notes" : "ReCache" ; "" : "" ; "By Status"; 2 );
Counts := @DbColumn(  "Notes" : "ReCache" ; "" : "" ; "By Status"; 1 );
NumberOnHold := @Select(@Member("Hold"; Statuses); Counts);
Другие вопросы по тегам