Lotus 公式秘籍

HighCache發表於2009-08-07

訪問使用者環境
使用者環境是包含資料庫的伺服器或工作站,資料庫包括以下內容: 複製公式、由新郵件到達時或定時觸發的代理、選擇公式或列公式。否則,使用者環境是使用者執行公式的 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 透過 LS:DO 訪問外部資料庫

以下 @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 和口令的地方,您可以指定空串並讓使用者在執行函式時提供它們。

使用 @function 透過 LS:DO 訪問外部資料庫

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 從當前資料夾刪除所選文件。

資料引用:

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/184309/viewspace-1025014/,如需轉載,請註明出處,否則將追究法律責任。

相關文章