Crystal Reports / Windows 7: Crystal Reports запрашивает почтовый клиент по умолчанию и выдает ошибку - PullRequest
6 голосов
/ 21 сентября 2010

Crystal Reports 11 (craxdrt.dll 11.5.7.1048) Windows 7

Я использую Crystal Reports для экспорта в PDF-документ , используя CRYSTALCRAXDRT :: IReport :: Export,и я получаю сообщение об ошибке, только Windows 7.

"Нет программы электронной почты, связанной с выполнением запрошенного действия. Установите программу электронной почты или, если она уже установлена, создайте ассоциацию вПанель управления программами по умолчанию. "

Опять же, я не пытаюсь отправить электронное письмо, просто создаю документ.

Я приложил немного усилий для отладки этого, иКажется, что происходит вот что:

  1. Я вызываю craxdrt.dll через интерфейс IReport, функцию Export (...), а затем, отслеживая с помощью procmon, обнаруживаю, что их несколько сотен.запросы реестра для почтовой программы по умолчанию, контактов и т. д.
  2. Казалось бы, craxdrt.dll строит структуру данных большого размера перед задачей с любой информацией, которая может потребоваться для семейства функций.
  3. Отправляется сообщение об ошибке, когда программа не может найти почтовый клиент по умолчанию

Проблемы с этим:

  1. Windows 7 не поставляется по умолчаниюпочтовый клиент, и раннее расследование, по-видимому, указывает на то, что его установка не обязательно устраняет проблему.В любом случае я не ожидаю, что у всех наших клиентов будет установлен один, и при этом наши клиенты не ожидают, чтобы он был установлен нами.
  2. Отсутствует фактическая потребность в почтовом клиенте (т. Е. В вышеупомянутом случае), мы все еще получаем всплывающее сообщение об ошибке.

Примечание. Интересно, что на самом деле это не мешает пользователю снова нажать кнопку экспорта иФакт, что если пользователь делает это, ошибка не отображается, так как запросы реестра, по-видимому, выполняются только один раз за загрузку или использование craxdrt.dll.

1 Ответ

1 голос
/ 03 ноября 2010

Я думаю, вам не хватает установки ExportOptions перед экспортом:

Dim crxReport As Report
Set crxReport = Prepare()

crxReport.ExportOptions.FormatType = crEFTPortableDocFormat
crxReport.ExportOptions.DestinationType = crEDTDiskFile
crxReport.ExportOptions.DiskFileName = "C:\temp\Report.PDF"

crxReport.Export (False)
...