2013-01-22 2 views
1

먼저 Domino 애플리케이션을 개발하는 데있어서 초보자입니다. 그러므로 내 바보 같은 질문에 대답 할 때이 사실을 고려하십시오.LotusScript의 RunStkCoerceVal에서 유형이 일치하지 않습니다.

다음과 같은 문제가 있습니다 :
다음 코드를 실행하면 정상적으로 나타나는 첫 번째 MsgBox으로 실행됩니다. 그러나 두 번째로 실행되지 않습니다 MsgBox! 대신에 나는 다음과 같은 오류 메시지가 :

Dim session As NotesSession 
    Dim db As NotesDatabase 
    Dim ws As New NotesUIWorkspace 
    Dim thisDoc As notesUIDocument 
    Dim docSMBPrivateProfile As notesDocument 
    Dim test As Variant 

    Set session = New NotesSession 
    Set db = session.CurrentDatabase 
    Set thisDoc = ws.CurrentDocument 
    Set docSMBPrivateProfile = db.GetDocumentByUNID(thisDoc.FieldGetText("SMB_PRIVATE_PROFILE_DOCUMENT_ID")) 

    Msgbox("This message will appear") 
    Set test = docSMBPrivateProfile.FieldGetText("DOCUMENT_ID_TEST") 
    Msgbox("This message won't appear") 

전화 thisDoc.FieldGetText("SMB_PRIVATE_PROFILE_DOCUMENT_ID") 예상대로 정상 작동하는지 참고 : 여기에

Type mismatch in method RunStkCoerceVal in Lotusscript agent STRING found Null expected.

는 코드입니다.

유형 불일치 문제를 피하기 위해 test의 데이터 유형을 Variant으로 설정했습니다. 사실 나는 String을 기대합니다.

이 문제에 관해서 내가 발견 한 유일한 주제는 여기에 있습니다. http://www.secure-eserver.com/?p=3431 하지만 머리 나 꼬리를 만들 수 없습니다.

도와 주실 수 있습니까?

답변

2

docSMBPrivateProfileFieldGetText 방법이없는 NotesDocument 클래스를 기반으로합니다. 대신 test = docSMBPrivateProfile.GetItemValue("DOCUMENT_ID_TEST")(0)을 사용하십시오.

+0

찰흙을 (의 Panu에 의해 제안) 할 것입니다! 나는 그것을 놓쳤다! –

0

도구 -> 디버그 LotusScript 메뉴 옵션. 그런 다음 코드를 실행하십시오. 문제의 라인에서 정확히 무엇이 실패했는지 보려면 단계를 밟으십시오.

실제로 String이 필요합니다.

필드가 있다고 가정하면 문자열이 아닌 배열이 반환됩니다. 그래서 당신은 다음과 같은 것을 할 필요가있을 것입니다 (다시 한번 그것이 필드에서 하나의 문자열이라고 가정 함).

Set test = docSMBPrivateProfile.FieldGetText("DOCUMENT_ID_TEST") (0) 
4

docSMBPrivateProfile은 NotesDocument 개체이기 때문에. FieldGetText 메서드는 NotesDocument 클래스에 없습니다. 이 코드를 사용하여 필드 값을 얻을 수 있습니다 :

dim myStringVar as string 
myStringVar = docSMBPrivateProfile.DOCUMENT_ID_TEST(0) 
... 

당신은 이미 당신은 단지 때문에 해당 오류에 변형을 사용 말했듯이. 그러므로 위의 코드에서 문자열을 사용하는 것이 좋습니다. 형식이 일치하지 않아야합니다.

코드에 두 개의 문서가 약간 혼동스러워 보입니다. NotesDocument 객체이므로 두 번째 문서 "thisDoc"에 FieldGetText를 사용할 수 있습니다. 필드에 액세스하기위한 더 나은 방법은

docSMBPrivateProfile.GetItemValue("DOCUMENT_ID_TEST")(0) 
+0

고맙습니다. 그게 정확히 문제 였어! – Markus