2009-07-08 9 views
0

メールサーバーに問題があり、2,3年前にレポートの完了時に電子メール部門に設定したシステムの弱点が強調されています。VBA内からDominoサーバーを検出して切り替える

現在のメールサーバーが

Set objNotesMailFile = objNotesSession.GETDATABASE("XXX-BASE-MAIL-04/CompanyName", dbString) 

私たちが抱えている問題は、04サーバは、現時点で最高の状態でフレーク状であることで、誰もがのうちの1つを介してルーティングされているようにハードコードされてセットアップするコードレプリケーションサーバーが転倒したときに発生します。デスクトップのNotesクライアントがこれを処理する際に問題になることはあまりありませんが、アプリケーションは単にメールを受け取ることができず、失敗通知も出さずにそうしています。

メインサーバーで使用可能なデータベースが存在するかどうかをテストする方法はありますか?そうでない場合は、レプリケーションサーバーの1つにフォールバックしますか?

答えて

3

NotesDatabaseオブジェクトには、NotesSession.getDatabaseの呼び出し後にデータベースが正常にオープンされたかどうかをチェックするために使用できる "IsOpen" - ブール値のプロパティがあります。ブール - - 有効を返すかどうかを指定するだけ完全を期すために...あなたはGetDatabaseメソッドに渡すことができるオプションの第三引数もあります:

Set objNotesMailFile = objNotesSession.GETDATABASE("XXX-BASE-MAIL-04/CompanyName", dbString) 
if not (objNotesMailFile.IsOpen) then 
    ' try next server 
    ... 
end if 

EDIT:だから、あなたは以下のような何かを行うことができますデータベース(またはサーバー)を開くことができないとき、またはNOTHINGの値を返すときのオブジェクト。 3番目の引数をFALSEに指定すると、何も確認できないNOTHINGが返されます。結局、同じ結果になります。

+0

Spot on、cheers。 – Lunatik

1

あなたは、おそらくこのようなものを使用したい:データベースは、特定のサーバー上で開くことができませんが、サーバーがクラスタに属し、OpenWithFailoverが自動的に指定されたサーバのレプリカを探している場合

Dim db As New NotesDatabase("", "") 
Call db.OpenWithFailover("XXX-BASE-MAIL-04/CompanyName", dbString) 

を同じクラスタ上にある。メソッドがレプリカを検出した場合は、代わりにそのデータベースが開き、それに応じてサーバープロパティが調整されます。