
В компании, где я работаю, есть приложение, созданное в Delphi V с использованием Crystal Reports 8.
Мы все знаем, что Crystal & Delphi иногда бывают капризными, и самое худшее, что почти нет подробностей об ошибке. Также в сети очень мало документации по этому поводу. У многих людей похожая проблема, но нет решения.
Ошибка, о которой я говорю, в частности, показана на изображении ниже. Она возникает при попытке распечатать любой отчет Crystal Reports на экране.
Это иногда случалось на клиентском компьютере, и нам было трудно воспроизвести это в нашей среде. Поскольку это старая версия Crystal, очень трудно найти какую-либо полезную документацию, чтобы узнать точный источник проблемы.
решение1
Проблема в реестре, которая может быть вызвана двойной установкой BDE. Это может произойти по нескольким причинам:
- Переустановил приложение или Borland, не удаляя его перед этим
- Удаление не было полностью завершено.
- Установил второе приложение с помощью BDE
Чтобы проверить это, я зашел в реестр и нашел следующее:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Borland \ Database Engine] "DLLPath" = "C: \ \ Program Files \ \ Common Files \ \ Borland Shared \ \ BDE" в формате path1, path2.
Теперь, чтобы это исправить, вам нужно сделать следующее:
- Сделайте резервную копию ключа BDE на случай, если что-то пойдет не так.
- Закройте приложение.
- Откройте Regedit (Пуск> Выполнить> regedit.exe)
- Перейдите в раздел HKEY_LOCAL_MACHINE \ SOFTWARE \ Borland \ Database Engine
- Затем дважды щелкните на ключе DLLPath, редактируя один из двух путей (проверьте, какой из них правильный в соответствии с вашей установкой). У вас должно быть два пути, как на изображении ниже. Удалите один из них
Здесь должен быть только один путь, как на изображении ниже.
Закрыть RegEdit
Теперь вы можете снова открыть свое приложение и попробовать открыть любой отчет на экране. Если вы правильно выполнили простые шаги, вы не должны получить никаких ошибок и сможете увидеть отчеты на экране.
Это произошло, в частности, в моем приложении, но тот же процесс необходимо выполнить в приложениях, использующих Crystal Reports и BDE Admin.
решение2
Каждый раз, когда у меня возникала такая ошибка с Crystal 8.5, это было связано со смешанными версиями DLL-библиотек развертывания Crystal или их отсутствием. В моем случае с Crystal 6.0, который некоторые из наших клиентов все еще используют.
Самая скучная часть — найти все DLL и удалить их. Обычно они находятся на %systemroot%\system32 на x86 и на %systemroot%\syswow64 на x64 системах.
Что еще следует знать:
- Установите отправную точку, то есть здесь мы всегда проверяем, работает ли все на чистой машине.
- Несколько версий Crystal Reports на одной машине просто не работают, точка. Неважно, говорите ли вы о среде разработки или развертывания.
- Я обычно помещаю все DLL-файлы развертывания Crystal 8.5 в %systemroot%\crystal и добавляю их в системный PATH. Это решило для меня 95% наиболее распространенных проблем, связанных с развертыванием.
Я понимаю, что уже поздно отвечать, но это может помочь другим.