Несоответствие типов - Lotusscript - PullRequest
0 голосов
/ 10 марта 2020

Я не знаю, где я ошибаюсь, но я продолжал получать ошибку "Несоответствие типов"

Вот исходный код

    Dim policy As New Policy
    Dim policyDocument As NotesDocument

    Set policyDocument = p_baseManager.base_policyDocument
    policy.formName = policyDocument.Getitemvalue("Form")(0)    //Had type mismatch error on this line
    policy.universalId = policyDocument.Universalid
    policy.formX = policyDocument.Getitemvalue("FormX")(0)

Я попытался немного его изменить для отображения некоторых значений

    Dim policy As New Policy
    Dim policyDocument As NotesDocument

    Set policyDocument = p_baseManager.base_policyDocument
    Print "universal id = " + policyDocument.Universalid
    Print "FORM NAME = " + policy.formName
    policy.formName = "FormName"
    Print "FORM NAME = " + policy.formName
    policy.formName = policyDocument.Getitemvalue("Form")(0)     // still getting type mismatch
    policy.universalId = policyDocument.Universalid
    policy.formX = policyDocument.Getitemvalue("FormX")(0)

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Хорошо, давайте проанализируем это, используя ваш код "DEBUG". У нас есть два пользовательских класса, о которых мы ничего не знаем:

Имя класса: Экземпляр политики: policy

и Имя класса: ??? Экземпляр: p_baseManager

Тогда у нас есть строка, которая выдает ошибку:

policy.formName = policyDocument.Getitemvalue("Form")(0)

Из вашей тестовой строки

policy.formName = "FormName"

мы знаем, что policy.formName принимает Строка в качестве входных данных, и что левая сторона нашей ошибочной строки сама по себе выдает ошибку.

Теперь, если у нас есть «Несоответствие типов», это означает, что наша правая часть назначения не возвращает string.

Если бы p_baseManager.base_policyDocument не вернул действительный NotesDocument, мы получили бы Object variable not set в этой строке -> Мы можем заключить, что policyDocument является допустимым NotesDocument, а не Nothing.

Теперь давайте посмотрим на GetItemValue("Form"): он возвращает пустую строку, если документ не содержит элемент с именем «Форма»: пустая строка все еще является строкой -> в этом случае несоответствие типов.

Единственная возможность, что policyDocument.Getitemvalue("Form")(0) не возвращает строку, - это если элемент присутствует, но содержит число или значение даты ...

Итак: Что делать сейчас ?

Прежде всего: Уверены ли вы, что ошибка находится в этой строке (вы использовали отладчик)?
Во-вторых: Используйте отладчик, чтобы узнать значение элемента Form вашего PolicyDocument
В-третьих: Как упоминал Пол Стивен Уизерс: Используйте обработку ошибок, чтобы ТОЧНО идентифицировать строку ошибки, код ошибки и ошибку.

0 голосов
/ 10 марта 2020

Добавление обработки ошибок - лучший способ выяснить, где происходит ошибка. Несоответствие типов будет зависеть от данных c, поэтому будет сложно устранить неполадки без доступа к среде. Несомненно, лучшая библиотека для обработки ошибок в LotusScript OpenLog .

...