0

以下のコードを使用して、Attachment in Richtext フィールドを検証しています。

Call source.Refresh(True) を使用しない場合、検証は機能しませんが、このコードはボタンで querysave が呼び出されるたびにドキュメントを更新しています。

したがって、この Refresh 部分またはコード全体を使用して検証しないようにするためのオプションまたはその他のアイデアはありますか。

誰かがより効率的なコードを持っている場合は、これを共有してください。

If Source.Document.YesNo20(0)="Yes" Then
    Call source.Refresh(True)
    Dim rtitem As NotesRichTextItem
    Set rtitem = source.Document.GetFirstItem( "Atchmnt20" ) 
    NotesEmbeddedObjectArray = rtitem.EmbeddedObjects
    If Isempty ( NotesEmbeddedObjectArray ) Then 
        Messagebox "Please enter an attachment in 20a. As you selected option Yes"
        continue=False
        Exit Sub
    End If 
End If
4

4 に答える 4

1

LotusScript には、新しい (保存されていない) 文書に対しても添付ファイルの存在をチェックする方法があります。

非表示の計算フィールドを作成します。たとえば、次の式でAttachmentNamesを作成します。

@If(@AttachmentNames!=""; "1"; "");

LotusScript で次の操作を行います。

'in new documents Form field may be empty
If doc.Form(0) = "" then    
    doc.Form = "YourFormAlias"    
End If

'computing doc contents with the form
call doc.ComputeWithForm(false, false)

If doc.AttachmentNames(0) = "" then    
 MsgBox "Please attach a file",,"Attention"
 Continue = False 'if you are running this code in QuerySave
 Exit Sub
End If
于 2011-08-09T09:00:41.553 に答える
0

時間がかかりすぎるため更新を避けたいと仮定すると、次のことを確認し、可能であれば変更してみてください。

  1. RichText フィールドがまったく変更されていない場合は、RichText フィールドの "Entering" イベントをグローバル変数 (フォーム内) と組み合わせて使用​​して、コード内の Refresh をスキップすることができます。
  2. [ドキュメントの更新時に選択肢を更新する] オプションが有効になっているキーワード フィールドで、無効にしても安全なキーワード フィールドはありますか? または、ダイアログを表示して選択したキーワードをフィールドに入力するボタンを配置することもできます。@DbColumn/@DbLookup を介して常に最新の選択肢を提示できるため、選択肢を更新する必要はありません。または NotesUIWorkspace.PickListStrings。
  3. 「Queryrecalc」や「Postrecalc」フォーム イベントに最適化できるコード (LotusScript または Formula) はありますか? たとえば、グローバル変数 (フォーム内) を Queryrecalc/Postrecalc でコードを実行するかどうかのフラグとして使用することにより、コードで Refresh を呼び出す直前に false に設定し、次に true に戻します (この Refresh はRichText フィールドをバックエンド ドキュメントに更新します)。
于 2011-03-14T20:55:38.717 に答える
0

Lotus Notes でリッチ テキスト フィールドを検証するのは少し難しい作業ですが、これだけではできないでしょうか? (docバックエンドはどこですか):

If(doc.HasEmbedded) Then Continue = True

他にもできることがあります。添付ファイル、テキスト、埋め込みオブジェクトなど、あらゆる種類の情報をカバーする、この Lotus Developer Domain の投稿を確認してください。

http://www-10.lotus.com/ldd/nd6forum.nsf/0/8b3df10667d355768525719a00549058

于 2011-01-17T10:17:05.493 に答える
0

数式で RT フィールドを検証できますか?

この入力検証式を使用して、リッチ テキスト フィールドの下に隠しフィールドを作成しました。

REM {Validate just when saving};
@If(!@IsDocBeingSaved; @Return(@Success); "");

REM {Should contain some file};
_filenames := @AttachmentNames;
@If(
    @Elements(_filenames)=0;
    @Return(@Failure("You should attach at least one file"));
    @Success);
于 2011-03-11T15:22:24.777 に答える