我有一個視圖選擇公式如何從最近7天內選擇所有文件?
SELECT @If(@Date(@Now) = @Date(@Created); @All; @False)
,我想它從過去7天,而不僅僅是今天的選擇所有文件。
我有一個視圖選擇公式如何從最近7天內選擇所有文件?
SELECT @If(@Date(@Now) = @Date(@Created); @All; @False)
,我想它從過去7天,而不僅僅是今天的選擇所有文件。
SELECT @If(@Date(@Now) < @Date(@Adjust(@Created(), null, null, 7, null, null, null)); @All; @False)
你需要非常小心的視圖選擇公式中有日期。
如果您使用@Today或@Now,那麼Notes/Domino將始終考慮視圖中的所有文檔都沒有數據,並且每次訪問時都必須重建索引。對於非常小的數據庫來說這是可以的,但是對於大型數據庫來說卻是一場災難
有些人會嘗試使用@date(「Today」)這樣的公式來解決這個問題。 Notes/Domino不會將它識別爲基於日期/時間的公式,因爲它不包含@Today或@Now,並且將在最初工作。但是,您會發現該視圖不會刪除舊文檔,除非索引完全刷新,這可能會非常棘手。
應對這種情況的最好的辦法是有一個代理,每天晚上運行,更新與正確的固定日期值的選擇公式。 Jake Howlett在codestore.net有一些excellent這樣做的帖子。
感謝您的輸入!每次訪問代理中的視圖時,我都需要最新的值。一些數據庫是幾個演出,所以我想我會在這種情況下每天運行一兩次。 – Todd 2009-02-17 01:24:28
您需要2個零件。 該視圖選擇公式:
SELECT isnotyet7daysOld = @True
以及代理(或兩個),其上安排和上「時已創建或更新文檔」運行。代理看起來像這樣(都)
minDate := @Adjust(@Today;0;0;-7;0;0;0);
REM "There are no future documents";
tmpResult := @if(minDate <= @Created;@False;@True);
SELECT tmpResult != isnotyet7daysOld;
FIELD isnotyet7daysOld := tmpResult
對於調整你需要0不爲空;空恰巧工作,因爲沒有字段或變量名稱爲空,@Formula是寬容,使缺失值0 這裏的竅門:您計算該字段isnotyet7daysOld應該有所選文檔的值(即將更改爲onChange代理程序或全部代理程序),然後選擇僅更改結果不匹配的那些代碼。這樣可以最大限度地減少文檔更新另外,保存的文件將直接更新。如果現在使用@True作爲字段值添加隱藏的computed-when-composed字段isnotyet7daysOld,則可以可靠地捕獲所有文檔。而且你只需要每晚運行一次預定代理(0:01)。
這裏是我做過什麼(我用@TextToTime("Today")
代替@Today
避免每索引重建上述警告):
SELECT (@Created) >= @Adjust(@TextToTime("Today");0;0;-7;0;0;0)
BTW,感謝上面的提示。我一直想創造一個這樣的觀點很長一段時間。我是一個z/OS系統程序員(大型機),不得不每週重建這個視圖以獲得最新版本,因爲「canned」視圖設計公式不是相對日期。我從Notes幫助中的@Created
示例中獲取@TextToTime
提示(這是本月獲取文檔的示例)。我的Notes客戶端是版本6.5。
這裏只是添加註釋,儘管這在技術上是正確的,選擇公式中使用基於時間的功能(例如@Now)不鼓勵,特別是對大型數據庫,特別是如果該視圖的索引選項設置爲「自動」 。 – 2013-05-24 15:39:00