CancelSendOnMissingKeyについて

皆さん、こんにちは。

ここのところ、英語で記事を書きました。
こちらは、HCL Grand Masterの加藤さまからの課題ということで書いてみました。
ただ書くだけなら、過去の記事を英訳するだけでも良かったのですが、それではHCL Masterとしては(私自身を含めて)、誰も納得しないでしょう。
ですので、新しいことを調べた結果について書き上げました。

あえて日本語にしなかったのには理由があります。
実は、HCLへの苦情のつもりで書きました。私のブログは基本的にヘルプに書いてあることを元にしてあります。
ヘルプを読んでもわからない、わかりにくいだろうというところを補足するつもりで書いてきたのです。サンプルなんかもそうです。
ヘルプの補足なのです。

なので、日本語で書いても、HCLには届かないだろうということで英語で書いたのです。

それでも、私のブログの読者の大半は日本の技術者さまであろうということなので、日本語でも情報提供をしないといけないかな?と思い、前回の記事(Research results about CancelSendOnMissingKey)を日本語化したものをここに書きます。
英語が堪能な方にとっては、同じことの繰り返しになりますので、この記事はスルーしていただいてかまいません。

では、始めましょう・・・


コードアシスタントには出てくるけど、ヘルプの記述がないものがいくつかあります。今日はその中の一つであるNotesSessionクラスのCancelSendOnMissingKeyプロパティについて調べた結果を書いていきます。

1.構文

コードアシスタントを使うことでメソッドやプロパティの構文が表示されます。
コードアシスタントによる構文の確認
これによると、このプロパティの構文は次のようになりそうです。
データ型Boolean
取得する場合flag = notesDocument.CancelSendOnMissingKey
設定する場合notesDocument.CancelSendOnMissingKey = flag
有効な値True or False


2.デフォルト値

これはプロパティなので、デフォルト値があるはずです。
データ型は構文のところで説明したとおり、Boolean型ですから、デフォルト値はTrue もしくはFalseのどちらかになります。
また、NotesDocumentクラスのプロパティなので、Notes文書についても考慮する必要があります。
新規文書の場合と既存文書の場合です。
*厳密に言えば、既存文書の場合、色々なパターンが存在しますが、ここでは単にすでに作成してある文書とだけにしておきます。
それぞれのデフォルト値はどうなっているのかについて調べてみましょう。
次のようなコードを作成しました。
Sub Click( Source As Button )
  On Error GoTo ErrProc
  
  Dim session    As New NotesSession
  Dim dbCurrent  As     NotesDatabase
  Dim vwMailSend As     NotesView
  Dim docNew     As     NotesDocument
  Dim docExist   As     NotesDocument
  
  Set dbCurrent  = session.CurrentDatabase
  Set vwMailSend = dbCurrent.GetView( "your view name" )
  
  Set docNew = dbCurrent.CreateDocument
  MsgBox docNew.CancelSendOnMissingKey, 0 + 64, "Default value for new document"
  
  Set docExist = vwMailSend.GetFirstDocument()
  MsgBox docExist.CancelSendOnMissingKey, 0 + 64, "Default value for existing document"
  
  Exit Sub
  
ErrProc:
  MsgBox _
  "Error Line:    " & CStr(Erl) & Chr$(10) & _
  "Error Number : " & CStr(Err) & Chr$(10) & _
  "Error Content: " & Error, _
  0 + 16, "Mail send test"
  
  Exit Sub
End Sub


これを実行した結果は次の通りです。
新規文書の場合
既存文書の場合
どうやら、デフォルト値は常にFalseのようです。

3.サンプル

では、この値をTrueに変更したら何が起きるのでしょうか?
プロパティの名前から、メール送信に関するものではないかと推測しています。
そこで、以下のようなサンプルを作ってみました。
Sub subMailSendTest
  On Error GoTo ErrProc
  
  Dim session    As New NotesSession
  Dim dbCurrent  As     NotesDatabase
  Dim vwMailSend As     NotesView
  Dim docNew     As     NotesDocument
  
  Set dbCurrent  = session.CurrentDatabase
  Set vwMailSend = dbCurrent.GetView( "vwMailSend" )
  
  Set docNew = dbCurrent.CreateDocument
  
  Call docNew.ReplaceItemValue( "Form", "Memo" )
  Call docNew.ReplaceItemValue( "Subject", "Created by LotusScript " + CStr(Now) )
  Call docNew.ReplaceItemValue( "SendTo", "Masahiko Miyo/EFFECT-FORCE )
  
  docNew.CancelSendOnMissingKey = True
  
  Call docNew.Send( False )
  
  Exit Sub
  
ErrProc:
  MsgBox _
  "Error Line:    " & CStr(Erl) & Chr$(10) & _
  "Error Number : " & CStr(Err) & Chr$(10) & _
  "Error Content: " & Error, _
  0 + 16, "Mail send test"
  
  Exit Sub
End Sub


実行してみたら、こんなエラーが出ました。
エラーが発生…
どうやら、メールを送信できないようにするようです。

ちなみに、この後、プロパティをTrueにしてからNotes文書を保存するというサンプルを作成・実行してみましたが、正常に保存できました。


4.使い方

上のサンプルで見たように、Trueにしておくと、メール送信が失敗します。
これを利用して、画面の入力チェックやビジネスロジックのチェックに使うと良いのではないでしょうか?
ただ、エラー番号が4000という一般的なエラー番号になっているので、その他のエラーとの切り分けがしづらいところです。
できれば、他のエラー番号を割り当ててほしいですね。


5.まとめ

サンプルではメール送信時のエラー判定用として使えそうだという話をしましたが、プロパティの名前からすると、正しい使い方とは言えなさそうです。
どなたか、この機能について知っていたら、是非教えてください。


それでは今日はこの辺で…









Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
HCL Masterの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

コメント