почему этот код сломался? - PullRequest
1 голос
/ 23 мая 2011

У меня есть локальная машина (т. Е. Разработка) и виртуальная машина (т. Е. Производство). Между двумя я занимаюсь разработкой и ведением нескольких автоматизированных отчетов с использованием Access, Excel и Lotus Notes.

Недавно мне поручили новый отчет, который был очень похож на существующий. Итак, я просто скопировал соответствующий файл Access из Production обратно в Development, чтобы переработать его. И это не удалось. С некоторыми пробами и ошибками я сократил этот фрагмент до следующего:

Option Compare Database
Option Explicit
Global NtSession As lotus.NotesSession
Sub Main()
    Set NtSession = CreateObject("Notes.NotesSession")
    ...
End Sub

Опять же, этот код отлично работает в Production, но теперь он ломается, когда я пытаюсь запустить мою разработку (я получаю ошибку «Несоответствие типов» в CreateObject). Самый простой способ обойти это состоит в том, чтобы просто разработать мой отчет в Production, но такой подход не имеет смысла, не говоря уже о странности, с которой он раньше работал на моей локальной машине, а сейчас - нет. Итак, почему это вызывает ошибку на моей локальной машине (т.е. Dev), а не на виртуальной (то есть производственной)?

Ответы [ 3 ]

2 голосов
/ 23 мая 2011

Lotus.NotesSession отличается от Notes.NotesSession .Возможно, вам просто нужно изменить строку CreateObject на:

Set NtSession = CreateObject("Lotus.NotesSession")
1 голос
/ 23 мая 2011

Исходя из ответа Кена, я предлагаю вам решить, хотите ли вы позднее или раннее связывание.

Global NtSession As Object
Set NtSession = CreateObject("Lotus.NotesSession")

или

Global NtSession As lotus.NotesSession
Set NtSession = New Lotus.NotesSession

Я просто не вижу смысла смешивать их, как в

Global NtSession As lotus.NotesSession
Set NtSession = CreateObject("Lotus.NotesSession")
0 голосов
/ 14 ноября 2011

Убедитесь, что COM-объект nlsxbe.dll установлен и правильно зарегистрирован на вашем компьютере разработчика. Может быть, отмените регистрацию и перерегистрацию просто для уверенности. Выполните в Google поиск по запросу «nlsxbe.dll register», чтобы получить дополнительные советы о проблемах, связанных с этим модулем, который следует установить (но, возможно, не зарегистрировать) в процессе установки клиента Notes.

...