关于 Lotus 笔记:如何使用 Lotusscript 将数据转换为 Ascii?

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 值写入字节数组)。您可能还会发现"字节"版本也很有用。