2009-07-08 4 views
0

메일 서버에 문제가있어 시스템의 약점을 강조하여 몇 년 전에 보고서 완성시 전자 메일 부서로 설정했습니다.VBA 내에서 Domino 서버 감지 및 전환

현재 메일 서버를 설정하는 코드가

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

우리가 가지고있는 문제를 04 서버에서 최고의 순간 색다른이며, 모든 사람이 중 하나를 통해 전달되고 있음을 그대로 하드 코드

복제 서버가 넘어 졌을 때. 데스크탑 Notes 클라이언트가이 문제를 처리 할 때 너무 많은 문제는 없지만 응용 프로그램은 단순히 메일을 가져 오지 못하고 실패 알림을 보내지 않고 그렇게합니다.

주 서버에서 사용 가능한 데이터베이스가 있는지 테스트 할 수있는 방법이 있습니까? 그렇지 않은 경우 복제 서버 중 하나를 사용하지 마십시오.

답변

3

NotesDatabase 객체에는 notesSession.getDatabase를 호출 한 후 데이터베이스가 성공적으로 열렸는지 확인하는 데 사용할 수있는 "IsOpen"- boolean 속성이 있습니다.

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

편집 : 그래서, 당신은 다음과 같은 일을 할 수있는 그냥 완성도를 위해 ... 또한 당신이 GetDatabase 방법에 전달할 수있는 선택적 세 번째 인수가 - 부울 - 유효한을 반환할지 여부를 지정합니다 데이터베이스 (또는 서 v)를 열 수 없거나 NOTHING 값을 리턴 할 때 오브젝트. 세 번째 인수를 FALSE로 지정하면 확인할 수있는 NOTHING이 반환됩니다. 결국 같은 결과가 나온다.

+0

Spot on, 건배. – Lunatik

1

당신은 아마이 같은 것을 사용할 : 데이터베이스가 특정 서버에 오픈하지만 서버가 클러스터에 속하는 할 수없는 경우

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

OpenWithFailover 자동으로 지정된 서버의 복제본을 찾습니다 동일한 클러스터에 있습니다. 메서드가 복제본을 찾으면 대신 해당 데이터베이스가 열리고 그에 따라 서버 속성이 조정됩니다.