Lotus 公式秘籍
LeapSoft
訪問用戶環(huán)境:
用戶環(huán)境是包含數(shù)據(jù)庫的服務器或工作站,數(shù)據(jù)庫包括以下內容:復制公式、由新郵件到達時或定時觸發(fā)的代理、選擇公式或列公式。否則,用戶環(huán)境是用戶運行公式的 Notes 工作站。
用戶名可以是專有名稱也可以是非專有名稱,專有名稱可以是規(guī)范或縮寫的,使用 @Name 可更改用戶名的格式。
以下函數(shù)返回或處理用戶環(huán)境的信息。
函數(shù) 描述:
@UserName 返回用戶名或服務器名。
@Name([key]; name) 更改用戶名的格式。關鍵字包含 [CN] 以從一個專有名字中解析出公共名,[Abbreviate] 縮寫規(guī)范格式的專有名字,[Canonicalize] 與上述作用相反,[ToKeyword] 將名字各部分按相反順序排序,用反斜杠分開(用于分類視圖)。
@UserRoles 對于服務器上的數(shù)據(jù)庫,返回當前用戶的角色列表。
@MailDbName 返回用戶郵件數(shù)據(jù)庫的服務器名和路徑名。該 @function 計算出一個包含兩元素的列表。
@OptimizeMailAddress(address) 從地址中刪除無用的網絡域。
@Platform 返回用戶當前運行的平臺:Macintosh、 NetWare、 OS2V1、 OS2V2、 UNIX、 Windows/16 或 Windows/32。
@Version 返回正在運行的 Notes 版本(字符串)。
@Password(string) 對字符串加密。加密后別人無法從中得到最初的字符串。
訪問當前數(shù)據(jù)庫和視圖:
可以直接訪問正在運行公式的數(shù)據(jù)庫(便捷圖標除外,因為它沒有數(shù)據(jù)庫環(huán)境)。也可以在視圖環(huán)境中直接訪問正在運行公式的視圖。同樣,在文檔環(huán)境中可直接訪問打開文檔的視圖。
數(shù)據(jù)庫和視圖屬性
下表列出返回數(shù)據(jù)庫和視圖屬性的函數(shù)。
函數(shù) 描述
@DbManager 返回當前對數(shù)據(jù)庫有“管理者”權限的用戶、群組和服務器。返回一個列表。
@DbName 返回當前 Notes 服務器和數(shù)據(jù)庫的名稱。返回二個元素的列表。
@ViewTitle 返回當前視圖的標題。
窗口標題和列公式 @function
許多 @function 提供了關于視圖的答復層次和其他方面的信息。在視圖中,主文檔以 1、2、3 等編號。每組答復文檔或答復的答復文檔則有第二個和第三個層次的從 1 開始的編號。缺省情況下,完整的答復文檔的編號以小數(shù)形式出現(xiàn)。例如:第三個主文檔的第二個答復文檔編號為 3.2,而它下面的第一個答復文檔編號為 3.2.1。
這些函數(shù)僅工作于窗口標題和列公式中,有一些會被限制。返回值都是一個字符串。
函數(shù) 描述
@Responses 返回當前視圖中當前文檔的答復文檔的編號(只限于窗口標題公式)。
@DocLevel 返回在當前視圖中當前文檔的級別。
@DocSiblings 返回與當前文檔同級的文檔編號(包含當前文檔)。
@DocNumber 返回當前視圖中的當前文檔或分類的編號。
@DocNumber(sep) 同上,只是用 sep,而不是句點來分隔編號。
@DocNumber("") 同上,只是僅返回編號的最右邊部分。
@DocParentNumber 返回當前視圖中當前文檔或分類的父文檔或父分類的編號。
@DocParentNumber(sep) 同上,只是用 sep,而不是句點分隔編號。
@DocParentNumber("") 同上,只是僅返回編號的最右部分。
@DocDescendants 返回后續(xù)文檔的編號。包含當前文檔的子文檔,子文檔的子文檔。
@DocDescendants(def) 同上,只是返回 def。在 def 中使用 % 以表示編號。
@DocDescendants(zero; def) 同上,只是如果沒有后續(xù)文檔的話則返回 zero。
@DocDescendants(one, zero; def) 同上,如果只有一個后續(xù)文檔的話,則返回 one。
@DocChildren 返回當前文檔的直接子文檔的編號。
@DocChildren(def) 同上,僅返回 def。在 def 中使用 % 以表示編號。
@DocChildren(zero; def) 同上,只是如果沒有后續(xù)文檔的話,則返回 zero。
@DocChildren(one, zero; def) 同上,如果只有一個后續(xù)文檔的話,則返回 one。
@IsCategory 如果當前行的當前域右邊任何域是一個分類,則返回一個星號。
@IsCategory(True) 同上,只是返回 Frue 代替星號。
@IsCategory(True; False) 同上,但是如果沒有分類域,則返回 False。
@IsExpandable 如果當前行是可展開的,則返回一個加號。
@IsExpandable(True) 同上,只是返回 True 代替加號。
@IsExpandable(True; False) 同上,但是如果當前行是不可展開的,則返回 False。
使用 @function 通過 LS:DO 訪問外部數(shù)據(jù)庫
以下 @function 通過 ODBC 訪問外部數(shù)據(jù)庫并返回一個值或值的列表:
@DbColumn 返回表的一列中的全部值,或者全部的不同的值。
@DbLookup 返回表的一列中通過關鍵字匹配選定的值。
@DbCommand 將一個命令傳遞給外部的數(shù)據(jù)庫管理系統(tǒng)(DBMS)并返回結果。
@DbColumn 與 @DbLookup 都只能提取數(shù)據(jù)。它們不能增加、刪除、修改數(shù)據(jù)或執(zhí)行其他操作。@DbCommand 能提取數(shù)據(jù)或發(fā)送其他可以更改數(shù)據(jù)的 SQL 語句。LotusScript 提供了包括更新外部數(shù)據(jù)庫的更加強大的功能。
前四個參數(shù)對于三個函數(shù)是同樣的,通過 ODBC 建立訪問數(shù)據(jù)庫。這些參數(shù)是:
"ODBC" 是字符常量;或 "ODBC" : "NoCache"
定義在數(shù)據(jù)源表格中的數(shù)據(jù)源名稱(在 Windows 中的 ODBC.INI)
用戶標識符,兩個用戶標識符列表,或者一個空串,根據(jù)外部數(shù)據(jù)源而定
口令,兩個口令列表,或者一個空串,根據(jù)外部數(shù)據(jù)源而定
(@DbColumn 和 @DbLookup) 要訪問的表的名稱
(@DbCommand) 要執(zhí)行的命令
(@DbColumn 和 @DbLookup) 要訪問的列的名稱
處理由數(shù)據(jù)源返回的空數(shù)據(jù)的選項
(@DbLookup) 包含關鍵字的列名
(@DbLookup) 適當?shù)臄?shù)據(jù)類型的關鍵字值,或者是一個列表
(@DbColumn 和 @DbLookup) 兩個元素的列表:“Distinct”作為關鍵字或空串;“Ascending”或“Descending”作為一個關鍵字
在需要用 IDS 和口令的地方,您可以指定空串并讓用戶在執(zhí)行函數(shù)時提供它們。
使用 @function 通過 LS:DO 訪問外部數(shù)據(jù)庫
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 列的數(shù)字值小于 100 的每行中取得 PARTNO 列值。
@DbCommand("ODBC";"Oracle";"";"";"SELECT PARTNO FROM MANUALS WHERE ONHAND <100")
轉換數(shù)據(jù)類型
在對數(shù)據(jù)操作時類型必須是正確的。以下的函數(shù)用來轉換數(shù)據(jù)和測試數(shù)據(jù)類型。
函數(shù) 描述
@Text(value) 將一個值轉換為文本字符串。
@Text(value; format) 根據(jù)指定的格式將一個數(shù)字或時間-日期值轉換成文本字符串。
@TextToNumber(string) 將文本字符串轉換成一個數(shù)字。
@TextToTime(string) 將文本字符串轉換成一個日期-時間值。
@IsText(value) 如果值是文本字符串或文本字符串列表,則返回“真”值 (1)。
@IsNumber(value) 如果值是數(shù)字或數(shù)字列表,則返回“真”值 (1)。
@IsTime(value) 如果一個值是時間-日期或時間-日期列表,則返回“真”值 (1)。
@Char(number) 將一個 IBM 代碼頁 850 代碼轉換為對應的字符。
連接、比較和判定長度
運算符 + 用來連接字符串。運算符 =、<>、!=、=!、><、<、>、<= 和 >= 用來比較字符串。以下的函數(shù)用來判定字符串的長度和比較字符串:
函數(shù) 描述和用法
@Length (string) 以字符為單位返回字符串的長度。
@Length(stringlist) 以字符為單位,返回字符串列表中每個元素的長度。
@Matches (string; pattern) 判定兩個字符串是否匹配??梢杂猛ㄅ浞麃頂U展比較的范圍。
@Like (string; pattern) 判定兩個字符串是否匹配。遵循 ANSI SQL 標準。
@Like(string; pattern; esc) 與上面的一樣只是多了一個轉義字符。
@Matches @Matches 用“?”來匹配任意一個單獨的字符,用“*”來匹配任意的字符序列,@Matches 使用“\”作為轉義字符。
@Like 按照 ANSI X3.135-1992 標準,使用“_”(下劃線)來匹配任意一個單獨的字符,用“%”(百分號)來匹配任意的字符序列。
查找并提取子串
樣例
以下函數(shù)查找并提取子串:
函數(shù) 描述
@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,其中單詞是在指定的分隔符之間的文本。
修剪、重復、添加新行,并改變大小寫
樣例
以下函數(shù)修剪字符串、重復字符、添加新行(回車),并改變大小寫:
函數(shù) 描述
@Trim(string) 從字符串中刪除開頭、結尾和多余的空格。
@Trim(list) 從字符串列表的每個元素中刪除開頭、結尾和多余的空格,并從列表中刪除空白元素。
@Repeat(string , number) 將字符串重復若干次。
@NewLine 在文本字符串中插入一個新行(回車)。
@LowerCase(string) 將字符串中所有的大寫字符轉換成小寫。
@UpperCase(string) 將字符串中所有的小寫字符轉換成大寫。
@ProperCase 將字符串中每個單詞的第一個字符轉換成大寫,并將其余的字符轉換為小寫。
執(zhí)行算術運算
乘、除、加、減運算符(*/+-)。乘法和除法運算符的優(yōu)先級高于加法和減法;運算順序是從左到右。但可以使用括號更改運算順序。以下列出的是算術運算函數(shù)。
函數(shù) 描述
@Abs(number) 計算一個數(shù)的絕對(無符號)值。
@Sign (number) 對于正數(shù)返回 1,對于負數(shù)返回 -1,對于零則返回 0。
@Sum(num; num; ...) 計算數(shù)字和數(shù)字列表的和。
@Integer(number) 去掉數(shù)字的小數(shù)部分,使它成為整數(shù)。
@Integer(numlist) 去掉數(shù)字列表所有元素的小數(shù)部分,使它們成為整數(shù)。
@Round(number) 對一個數(shù)字進行四舍五入。
@Round(number; factor) 以一個指定的因子規(guī)整數(shù)字。
@Round(numlist) 對數(shù)字列表中的每個數(shù)字進行四舍五入。
@Round(numlist; factor) 以一個指定的因子規(guī)整數(shù)字列表中的每個元素。
@Max(number; number) 取兩個數(shù)中較大的一個。
@Max(numlist; numlist) 對兩個數(shù)字列表進行矩陣式操作時,取兩個數(shù)字中較大的一個
@Min(number; number) 取兩個數(shù)中較小的一個。
@Min(numlist; numlist) 對兩個數(shù)字列表進行矩陣式操作時,取兩個數(shù)字中較小的一個。
@Modulo(number; number) 計算一個數(shù)字被第二個數(shù)字除后得出的余數(shù)。
@Modulo(numlist; numlist) 對兩個數(shù)字列表進行矩陣式操作時,計算一個數(shù)字被第二個數(shù)字除后得出的余數(shù)。
@Power(base; exp) 指數(shù)計算。
@Sqrt (number) 計算平方根。
@Pi 取得圓周率。
@Log(number) 計算常用(以 10 為底)對數(shù)。
@Ln(number) 計算自然(以 e 為底)對數(shù)。
@Exp(number) 計算以 e 為底的指數(shù)。
@Random 返回一個 0 到 1 之間的隨機數(shù)。
@Sin(angle) 計算角度的正弦(弧度)。
@Cos(angle) 計算角度的余弦(弧度)。
@Tan(angle) 計算角度的正切(弧度)。
@Asin(sine) 反正弦函數(shù)。
@Acos(cosine) 反余弦函數(shù)。
@Atan(tangent) 反正切函數(shù)。
@Atan2(x; y) 計算以 y/x 作為正切值的反正切函數(shù)。
答復列的公式
僅用于答復的列需要公式來生成總結答復文檔的文本。
包含作者的信息
討論數(shù)據(jù)庫可以使用如下答復列的公式來顯示答復文檔的作者、日期和主題:
From + " added this comment: " + Subject + " (" + @Text(@Created) + ")"
按以下方式顯示答復:
Stephanie Mahar added this comment: Great job! (10/10/97 04:43:15 PM)
跟蹤文檔狀態(tài)
在雇員信息數(shù)據(jù)庫中,答復列可以顯示新雇員以及離職雇員的調查信息,作為“按雇員姓名”視圖中常規(guī)的“雇員記錄”的答復文檔。下面公式根據(jù)答復文檔使用的表單的不同,顯示不同的消息,并且顯示文檔的郵遞狀態(tài)。
@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
跟蹤答復的數(shù)目
可以使用 @DocDescendants 跟蹤答復文檔的數(shù)目,以便作者迅速知道收到多少答復文檔。下面的主文檔列(不是答復列)公式對于答復樣式的視圖非常有用。
Subject + " (" + @Name([CN]; From) + @DocDescendants(")"; ", % response)"; ", % responses)")
如果是主文檔,那么列顯示 Subject 域的內容、作者名稱、答復以及答復的答復文檔的數(shù)目。如果文檔有一個答復,那么列顯示“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 從當前文件夾刪除所選文檔。
關鍵詞:Lotus 公式秘籍
相關文章:
Lotus 公式秘籍

