【问题标题】:LotusScript - Multiple extraction and reattaching of attachments leads to copies of the first attachment and file corruptionLotusScript - 多次提取和重新附加附件会导致第一个附件的副本和文件损坏
【发布时间】:2019-01-15 22:48:24
【问题描述】:

提取和重新附加单个文件会产生正确的结果,但是当涉及多个文件时,结果是第一个附件的副本,但带有文件名。 例如,如果我提取 fileA.doc、fileB.doc 和 fileC.doc,我将得到 fileA.doc、fileB.doc 和 fileC.doc,但文档中的内容将是 fileA.doc 的内容。文件名正确,但内容是第一个文档的内容,并且某些文件已损坏。 下面是相同的代码。

strRtFieldName(0) ="Body1"
strRtFieldName(1) ="Body2"
strRtFieldName(2) ="Body3"
strRtFieldName(3) ="Body4"
strRtFieldName(4) ="Body5"
strRtFieldName(5) ="Body6"
strRtFieldName(6) ="Body7"
strRtFieldName(7) ="Body8"
strRtFieldName(8) ="Body9"
strRtFieldName(9) ="Body0"

varAttachmentNames = Evaluate("@AttachmentNames", doc) 

For i = 0 To UBound(varAttachmentNames)     
    ' check for attachment in Rich Text fields
    For k = 0 To 9
        Set rtitem = doc.Getfirstitem(strRtFieldName(k))
        If (object Is Nothing) Then
            If Not rtitem Is Nothing Then
                If (rtitem.Type = RICHTEXT) Then
                    Set object = rtitem.GetEmbeddedObject(varAttachmentNames(i))
                End If
            End If
        End If
    Next
    If (object Is Nothing) Then
        ' check for attachment in document
        Set object = doc.GetAttachment(varAttachmentNames(i))
    End If  
Next

如果您能指出代码有什么问题,将不胜感激。

【问题讨论】:

  • 实际提取和重新附加的代码在哪里?另外:这里很难遵循您的逻辑,但可以肯定的是:当您的代码进入 For i 循环时,对象是 Nothing,因此 For k 循环中的 If 内的代码将执行;但是在 For i 循环的第二次迭代中,对象不会什么都不是,因此 For k 循环内的代码将不会执行。这似乎不太可能是正确的。

标签: lotus-notes lotusscript agent lotus-formula domino-designer-eclipse


【解决方案1】:

查看object 变量,设置后对if 语句的影响。然后应该很明显 object 在第一个循环中什么都不是。所以后续循环会重复使用相同的附件。

我不确定为什么这会被 XPages 标记。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多