Lotus domino/design的公式秘籍

來源:互聯網
上載者:User
 

訪問使用者環境

使用者環境是包含資料庫的伺服器或工作站,資料庫包括以下內容: 複製公式、由新郵件到達時或定時觸發的代理、選擇公式或列公式。否則,使用者環境是使用者運行公式的 Notes 工作站。

使用者名稱可以是專有名稱也可以是非專有名稱,專有名稱可以是規範或縮寫的,使用 @Name 可更改使用者名稱的格式。

以下函數返回或處理使用者環境的資訊。

函數 描述

@UserName 返回使用者名稱或伺服器名。

@Name([key]; name) 更改使用者名稱的格式。關鍵字包含 [CN] 以從一個專有名字中解析出公用名,[Abbreviate] 縮寫標準格式的專有名字,[Canonicalize] 與上述作用相反,[ToKeyword] 將名字各部分按相反順序排序,用反斜線分開(用於分類別檢視)。

@UserRoles 對於伺服器上的資料庫,返回目前使用者的角色列表。

@MailDbName 返回使用者郵件資料庫的伺服器名和路徑名。該 @function 計算出一個包含兩元素的列表。

@OptimizeMailAddress(address) 從地址中刪除無用的網路域。

@Platform 返回使用者當前啟動並執行平台:Macintosh、 NetWare、 OS2V1、 OS2V2、 UNIX、 Windows/16 或 Windows/32。

@Version 返回正在啟動並執行 Notes 版本(字串)。

@Password(string) 對字串加密。加密後別人無法從中得到最初的字串。

訪問當前資料庫和視圖

可以直接存取正在運行公式的資料庫(便捷表徵圖除外,因為它沒有資料庫環境)。也可以在視圖環境中直接存取正在運行公式的視圖。同樣,在文檔環境中可直接存取開啟文檔的視圖。

資料庫和視圖屬性

下表列出返回資料庫和視圖屬性的函數。

函數 描述

@DbManager 返回當前對資料庫有“管理者”許可權的使用者、群組和伺服器。返回一個列表。

@DbName 返回當前 Notes 伺服器和資料庫的名稱。返回二個元素的列表。

@ViewTitle 返回當前視圖的標題。

視窗標題和列公式 @function

許多 @function 提供了關於視圖的回覆層次和其他方面的資訊。在視圖中,主文件以 1、2、3 等編號。每組回覆文檔或回覆的回覆文檔則有第二個和第三個層次的從 1 開始的編號。預設情況下,完整的回覆文檔的編號以小數形式出現。例如:第三個主文件的第二個回覆文檔編號為 3.2,而它下面的第一個回覆文檔編號為 3.2.1。

這些函數僅工作於視窗標題和列公式中,有一些會被限制。傳回值都是一個字串。

函數 描述

@Responses 返回當前視圖中當前文檔的回覆文檔的編號(只限於視窗標題公式)。

@DocLevel 返回在當前視圖中當前文檔的層級。

@DocSiblings 返回與當前文檔同級的文檔編號(包含當前文檔)。

@DocNumber 返回當前視圖中的當前文檔或分類的編號。

@DocNumber(sep) 同上,只是用 sep,而不是句點來分隔編號。

@DocNumber("") 同上,只是僅返回編號的最右邊部分。

@DocParentNumber 返回當前視圖中當前文檔或分類的父文檔或父分類的編號。

@DocParentNumber(sep) 同上,只是用 sep,而不是句點分隔編號。

@DocParentNumber("") 同上,只是僅返回編號的最右部分。

@DocDescendants 返回後續文檔的編號。包含當前文檔的子文檔,子文檔的子文檔。

@DocDescendants(def) 同上,只是返回 def。在 def 中使用 % 以表示編號。

@DocDescendants(zero; def) 同上,只是如果沒有後續文檔的話則返回 zero。

@DocDescendants(one, zero; def) 同上,如果只有一個後續文檔的話,則返回 one。

@DocChildren 返回當前文檔的直接子文檔的編號。

@DocChildren(def) 同上,僅返回 def。在 def 中使用 % 以表示編號。

@DocChildren(zero; def) 同上,只是如果沒有後續文檔的話,則返回 zero。

@DocChildren(one, zero; def) 同上,如果只有一個後續文檔的話,則返回 one。

@IsCategory 如果當前行的當前域右邊任何域是一個分類,則返回一個星號。

@IsCategory(True) 同上,只是返回 Frue 代替星號。

@IsCategory(True; False) 同上,但是如果沒有分類域,則返回 False。

@IsExpandable 如果當前行是可展開的,則返回一個加號。

@IsExpandable(True) 同上,只是返回 True 代替加號。

@IsExpandable(True; False) 同上,但是如果當前行是不可展開的,則返回 False。

以下 @function 通過 ODBC 訪問外部資料庫並返回一個值或值的列表:

@DbColumn 返回表的一列中的全部值,或者全部的不同的值。

@DbLookup 返回表的一列中通過關鍵字匹配選定的值。

@DbCommand 將一個命令傳遞給外部的資料庫管理系統(DBMS)並返回結果。

@DbColumn 與 @DbLookup 都只能提取資料。它們不能增加、刪除、修改資料或執行其他動作。@DbCommand 能提取資料或發送其他可以更改資料的 SQL 陳述式。LotusScript 提供了包括更新外部資料庫的更加強大的功能。

前四個參數對於三個函數是同樣的,通過 ODBC 建立訪問資料庫。這些參數是:

"ODBC" 是字元常量;或 "ODBC" : "NoCache"

定義在資料來源表格中的資料來源名稱(在 Windows 中的 ODBC.INI)

使用者識別碼,兩個使用者識別碼列表,或者一個空串,根據外部資料源而定

口令,兩個口令列表,或者一個空串,根據外部資料源而定

(@DbColumn 和 @DbLookup) 要訪問的表的名稱

(@DbCommand) 要執行的命令

(@DbColumn 和 @DbLookup) 要訪問的列的名稱

處理由資料來源返回的空資料的選項

(@DbLookup) 包含關鍵字的列名

(@DbLookup) 適當的資料類型的關鍵字值,或者是一個列表

(@DbColumn 和 @DbLookup) 兩個元素的列表:“Distinct”作為關鍵字或空串;“Ascending”或“Descending”作為一個關鍵字

在需要用 IDS 和口令的地方,您可以指定空串並讓使用者在執行函數時提供它們。

 

1. 該公式取得 MANUAL 表中的 PARTNO 列。

@DbColumn("ODBC";"Oracle";"";"";"MANUALS";"PARTNO";"":"Ascending")

2. 該公式從 MANUALS 表的行中取得 TITLE,在該行中 PARTNO 是 17-895A。

@DbLookup("ODBC";"Oracle";"";"";"MANUALS";"TITLE";"PARTNO";"17-895A")

3. 該公式從 MANUALS 表中的 ONHAND 列的數字值小於 100 的每行中取得 PARTNO 列值。

@DbCommand("ODBC";"Oracle";"";"";"SELECT PARTNO FROM MANUALS WHERE ONHAND <100")

轉換資料類型

在對資料操作時類型必須是正確的。以下的函數用來轉換資料和測試資料類型。

函數 描述

@Text(value) 將一個值轉換為文本字串。

@Text(value; format) 根據指定的格式將一個數字或時間-日期值轉換成文本字串。

@TextToNumber(string) 將文本字串轉換成一個數字。

@TextToTime(string) 將文本字串轉換成一個日期-時間值。

@IsText(value) 如果值是文本字串或文本字串列表,則返回“真”值 (1)。

@IsNumber(value) 如果值是數字或數字列表,則返回“真”值 (1)。

@IsTime(value) 如果一個值是時間-日期或時間-日期列表,則返回“真”值 (1)。

@Char(number) 將一個 IBM 字碼頁 850 代碼轉換為對應的字元。

串連、比較和判定長度

運算子 + 用來連接字串。運算子 =、<>、!=、=!、><、<、>、<= 和 >= 用來比較字串。以下的函數用來判定字串的長度和比較字串:

函數 描述和用法

@Length (string) 以字元為單位返回字串的長度。

@Length(stringlist) 以字元為單位,返回字串列表中每個元素的長度。

@Matches (string; pattern) 判定兩個字串是否匹配。可以用萬用字元來擴充比較的範圍。

@Like (string; pattern) 判定兩個字串是否匹配。遵循 ANSI SQL 標準。

@Like(string; pattern; esc) 與上面的一樣只是多了一個逸出字元。

@Matches @Matches 用“?”來匹配任意一個單獨的字元,用“*”來匹配任意的字元序列,@Matches 使用“\”作為逸出字元。

@Like 按照 ANSI X3.135-1992 標準,使用“_”(底線)來匹配任意一個單獨的字元,用“%”(百分比符號)來匹配任意的字元序列。

尋找並提取子串

範例

以下函數尋找並提取子串:

函數 描述

@Contains(string; sub) 判定一個字串是否包含一個子串。

@Contains(string; list) 判定一個字串是否包含一個列表中的子串。

@Begins(string; sub) 判定一個字串是否以一個子串開始。

@Ends(string; sub) 判定一個字串是否以一個子串結束。

@Left(string; n) 從一個字串中提取最左邊的 n 個字元。

@Left(string; sub) 從一個字串中提取最左邊的字元,直到一個子串為止,從左至右搜尋。

@LeftBack (string; n) 從一個字串中提取最左邊的字元,直到從右邊開始的第 n 個字元為止。

@LeftBack(string; sub) 從一個字串中提取最左邊的字元,直到一個子串為止,從右至左搜尋。

@Right(string; n) 從一個字串中提取最右邊的 n 個字元。

@Right(string; sub) 從一個字串中提取最右邊的字元,直到一個子串為止,從左至右搜尋。

@RightBack (string; n) 從一個字串中提取最右邊的字元,直到從左邊開始的第 n 個字元為止。

@RightBack(string; sub) 從一個字串中提取最右邊的字元,直到一個子串為止,從左至右搜尋。

@Middle(string; off; n) 從一個字串中提取 n 個字元,從一個位移量開始,從左至右搜尋。

@Middle(string; sub; n) 從一個字串中提取 n 個字元,從一個子串開始,從左至右搜尋。

@Middle(string; off; sub) 從一個字串中提取字元,從一個位移量開始,到一個子串結束,從左至右搜尋。

@Middle(string; sub; sub) 從一個字串中提取字元,從一個子串開始,到另一個子串結束,從左至右搜尋。

@MiddleBack(str; off; n) 從一個字串中提取 n 個字元,從一個位移量開始,從右至左搜尋。

@MiddleBack(str; sub; n) 從一個字串中提取 n 個字元,從一個子串開始,從右至左搜尋。

@MiddleBack(str; off; sub) 從一個字串中提取字元,從一個位移量開始,到一個子串結束,從右至左搜尋。

@MiddleBack(str; sub; sub) 從一個字串中提取字元,從一個子串開始,到另一個子串結束,從右至左搜尋。

@ReplaceSubstring(source; from; to) 在 source 中用 from 的內容替換 to 的內容。如果 from 和 to 都是列表,按次序替換對應的項目。

@Word(string; sep; n) 從 string 提取單詞 n,其中單詞是在指定的分隔字元之間的文本。

@Word(list; sep; n) 從列表中的每個字串中提取單詞 n,其中單詞是在指定的分隔字元之間的文本。

修剪、重複、添加新行,並改變大小寫

範例

以下函數修剪字串、重複字元、添加新行(斷行符號),並改變大小寫:

函數 描述

@Trim(string) 從字串中刪除開頭、結尾和多餘的空格。

@Trim(list) 從字串列表的每個元素中刪除開頭、結尾和多餘的空格,並從列表中刪除空白元素。

@Repeat(string , number) 將字串重複若干次。

@NewLine 在文本字串中插入一個新行(斷行符號)。

@LowerCase(string) 將字串中所有的大寫字元轉換成小寫。

@UpperCase(string) 將字串中所有的小寫字元轉換成大寫。

@ProperCase 將字串中每個單詞的第一個字元轉換成大寫,並將其餘的字元轉換為小寫。

執行算術運算

乘、除、加、減運算子(*/+-)。乘法和除法運算子的優先順序高於加法和減法;運算順序是從左至右。但可以使用括弧更改運算順序。以下列出的是算術運算函數。

函數 描述

@Abs(number) 計算一個數的絕對(無符號)值。

@Sign (number) 對於正數返回 1,對於負數返回 -1,對於零則返回 0。

@Sum(num; num; ...) 計算數字和數字列表的和。

@Integer(number) 去掉數位小數部分,使它成為整數。

@Integer(numlist) 去掉數字列表所有元素的小數部分,使它們成為整數。

@Round(number) 對一個數字進行四捨五入。

@Round(number; factor) 以一個指定的因子規整數字。

@Round(numlist) 對數字列表中的每個數字進行四捨五入。

@Round(numlist; factor) 以一個指定的因子規整數字列表中的每個元素。

@Max(number; number) 取兩個數中較大的一個。

@Max(numlist; numlist) 對兩個數字列表進行矩陣式操作時,取兩個數字中較大的一個

@Min(number; number) 取兩個數中較小的一個。

@Min(numlist; numlist) 對兩個數字列表進行矩陣式操作時,取兩個數字中較小的一個。

@Modulo(number; number) 計算一個數字被第二個數字除後得出的餘數。

@Modulo(numlist; numlist) 對兩個數字列表進行矩陣式操作時,計算一個數字被第二個數字除後得出的餘數。

@Power(base; exp) 指數計算。

@Sqrt (number) 計算平方根。

@Pi 取得圓周率。

@Log(number) 計算常用(以 10 為底)對數。

@Ln(number) 計算自然(以 e 為底)對數。

@Exp(number) 計算以 e 為底的指數。

@Random 返回一個 0 到 1 之間的隨機數。

@Sin(angle) 計算角度的正弦(弧度)。

@Cos(angle) 計算角度的餘弦(弧度)。

@Tan(angle) 計算角度的正切(弧度)。

@Asin(sine) 反正弦函數。

@Acos(cosine) 反餘弦函數。

@Atan(tangent) 反正切函數。

@Atan2(x; y) 計算以 y/x 作為正切值的反正切函數。

回覆列的公式

僅用於回覆的列需要公式來產生總結回覆文檔的文本。

包含作者的資訊

討論資料庫可以使用如下回覆列的公式來顯示回覆文檔的作者、日期和主題:

From + " added this comment: " + Subject + " (" + @Text(@Created) + ")"

按以下方式顯示回覆:

Stephanie Mahar added this comment: Great job! (10/10/97 04:43:15 PM)

跟蹤文檔狀態

在僱員資訊資料庫中,回覆列可以顯示新僱員以及離職僱員的調查資訊,作為“按僱員姓名”視圖中常規的“僱員記錄”的回覆文檔。下面公式根據回覆文檔使用的表單的不同,顯示不同的訊息,並且顯示文檔的郵遞狀態。

@If(Form = "Exit"; "Exit Form, "; "New Hire Information, ") + @If(Mailed = "Yes"; "mailed to employee " + @Text(@Date(PostedDate)); "not yet mailed")

如果回覆文檔使用 Exit 表單,那麼回覆行顯示也許如下:

Exit Form, mailed to employee 08/26/97

如果回覆文檔使用 New Hire Information 表單,那麼回覆行顯示也許如下:

New Hire Information, not yet mailed

跟蹤回覆的數目

可以使用 @DocDescendants 跟蹤回覆文檔的數目,以便作者迅速知道收到多少回覆文檔。下面的主文件列(不是回覆列)公式對於回覆樣式的視圖非常有用。

Subject + " (" + @Name([CN]; From) + @DocDescendants(")"; ", % response)"; ", % responses)")

如果是主文件,那麼列顯示 Subject 域的內容、作者名稱、回覆以及回覆的回覆文檔的數目。如果文檔有一個回覆,那麼列顯示“response”;否則顯示“responses”。主文件行可作如下顯示:

Need Help with Trade Show (Indy Montoya, 1 response)

Changing the Product Name (Sandy Braun, 2 responses)

視圖小程式編程

通過使用一些 @commands 命令可以對視圖小程式編程。有以下命令:

@command 描述

ViewCollapse 摺疊所選文檔

ViewExpand 展開所選文檔

ViewCollapseAll 摺疊所有文檔

ViewExpandAll 展開所有文檔

ViewRefreshFields 重新整理視圖。

重新整理時,視圖小程式不刪除標記為已刪除的文檔

MoveToTrash 使當前所選文檔標記為已刪除

EmptyTrash 永久刪除標記為已刪除的文檔

Folder 將所選文檔移動或拷貝到檔案夾

RemoveFromFolder 從當前檔案夾刪除所選文檔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.