2014-03-25 29 views
1

我正在嘗試使用@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,這是狀態「打開」的計數。我知道這是對我的上述說法是正確的,但是,這不是我要去的。

如何獲得每個「狀態」的「計數」值?使用@DbLookup也許..?

回答

2

有兩種不同的做法,你想做什麼。 首先應該爲每個狀態值做一個@DbLookup。這應該是這樣的(例如,對於狀態打開):

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

根據可能變得緩慢的狀態數。

另一種方法是做一個計算領域的dbcolumn(這將意味着要爲這一目的而不是頁面的形式,但不是一個真正的問題):

場名爲「allTotals 」數,計算用於顯示的,允許多個值,式:

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

然後在總的每個值用於特殊的狀態就需要其在視圖位置。第一個狀態:

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

第二個狀態:

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

...

當然,還有可能是其他的,處理這種更復雜的方式...

+0

啊,我沒有想過使用'@ Subset'。謝謝! – Drewness

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); 
+0

莫非我把'Statuses'和'Counts'放在頁面'Queryopen'中?然後,我只需要引用每個字段的最後一行... – Drewness

+0

您可以在窗體的頂部放置一些隱藏的計算字段,以便您可以在窗體的其他字段中引用它們。我忘了,如果讓他們計算顯示會讓你引用他們,但不保存它們 - 值得一試。 –

+1

啊,這是一個古老的「隱藏在表格頂部的計算機領域」技巧。謝謝! – Drewness