2011-01-16 15 views
0

以下のコードを使用して、リッチテキストフィールドの添付ファイルを検証しています。リッチテキストフィールドの添付ファイルの妥当性確認

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

このようにリフレッシュする部分やコード全体を検証しないようにするためのオプションや考え方があります。

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

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 

答えて

0

はあなたが式にRTフィールドを検証することができます:添付ファイル、テキスト、埋め込まれたオブジェクト、すべての種類をカバーし、このロータス開発ドメインのポストを、確認してください?

私は、この入力確認式で自分のリッチテキストフィールドの下に隠しフィールドを作成:ここで、あなたはそれは時間がかかりすぎるので、最新の情報に更新を避けたいと仮定すると、

REM {Validate just when saving}; 
@If([email protected]; @Return(@Success); ""); 

REM {Should contain some file}; 
_filenames := @AttachmentNames; 
@If(
    @Elements(_filenames)=0; 
    @Return(@Failure("You should attach at least one file")); 
    @Success); 
0

は、あなたが見たいかもしれないものです可能ならば、変更しよう:

  1. たぶん、あなたは、リッチテキストフィールド場合は、あなたのコードで更新をスキップする(形式)グローバル変数と一緒にリッチテキストフィールドの「入力」イベントを使用することができますまったく触れられなかった。
  2. 無効にするのが安全な「ドキュメントの更新時に選択を更新する」オプションが有効になっているキーワードフィールドはありますか?または、ダイアログを表示し、選択したキーワードをフィールドに入力するボタンを配置することもできます。@ DbColumn/@ DbLookupを使用して常に最新の選択肢を表示できるため、選択肢をリフレッシュする必要はありません。 NotesUIWorkspace.PickListStringsです。
  3. "Queryrecalc"および/または "Postrecalc"フォームイベントには、最適化する可能性のあるコード(LotusScriptまたはFormula)はありますか?たとえば、グローバル変数(フォーム内)をフラグとして使用して、Queryrecalc/Postrecalcでコードを実行するかどうかを指定します。コードでRefreshを呼び出す直前にfalseに設定してから、このRefreshをtrueに戻しますRichTextフィールドをバックエンド文書に更新します)。
0

新しい(保存されていない)ドキュメントの場合でも添付ファイルの有無を確認する方法があります。式

例えば、隠された計算フィールドを作成AttachmentNames:(!@AttachmentNames = ""; "1"、 "")

@If。 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