How to convert data to Ascii using Lotusscript?
我在使用 Domino Designer 构建的表单中有一个 lotus 脚本字段。该字段还允许用户存储 Lotus 多字节字符集字符串。但是我想将其转换为 ASCII 字符串。我总是使用公式语言中的@Ascii() 函数在我的视图列定义中进行转换。但是我计划在 Lotus 脚本的 Exiting() 函数中执行此操作 有人可以帮我在 lotusscript 中做类似的操作吗?
公式语言
1 | @Ascii(@Text(Employee_Name)) |
LotusScript:
1 2 3 4 5 | Sub Exiting(Source As Field) Employee_Name = Asc(Employee_Name) // does not work End Sub |
首先:您的问题有一个很大的错误:Lotus Notes 中没有"LotusScript-field"。所有可编辑字段都有 LotusScriptEvents,但字段的主要语言是公式。使用公式,您可以定义默认值、输入验证和-这对您的问题很重要-输入-翻译。 Input-Translation-Event 可以包含在存储之前转换字段内容的公式。
当然你可以在QuerySave中编写这10行代码。但是你也可以只把这个公式放在字段的输入翻译中:
1 | @Ascii( @ThisValue ) |
这是你的决定...
您可以使用 Evaluate 语句调用@Ascii 公式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Sub Querysave(Source As Notesuidocument, Continue As Variant) Dim workspace As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim doc As NotesDocument Set uidoc = workspace.CurrentDocument Set doc = uidoc.Document Dim eval As Variant eval = Evaluate("@Ascii(@Text(Employee_Name))", doc) Call doc.ReplaceItemValue("Employee_Name", eval) Call doc.Save(True, False) End Sub |
如果其他解决方案因任何原因不可接受,那么您可以使用 LS。 Asc(和 Char)的问题在于它一次只对一个角色起作用。只需循环遍历字段值并一次转换每个字符,然后将每个字符附加回字符串(或将 ASCII 值写入字节数组)。您可能还会发现"字节"版本也很有用。