Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Crystal Report 8.5, коннект к другому серверу через Print Engine API / 12 сообщений из 12, страница 1 из 1
07.07.2006, 13:10
    #33838159
LCD
LCD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
Всем привет!

Хотя мой вопрос больше по Crystal Report 8.5, но приложение, его используещее, написано на VB6, так что разместил вопрос здесь!

Возникла огромная проблема, перерыл в инете все, что нашел, решения нет, одни слова! Бесит то, что сама поддержка кристала не отвечает на кучу вопросов по своим багам!

Ну да ладно, будем переходить на Reporting Service, а пока ...!

Сделана куча отчетов в CR 8.5 SP3, приложение, их использующее - на VB6, сами отчеты - отдельные файлы. Сервер данных - MS SQL 2000. Коннект к серверу из отчета осуществляется через active data (ADO OLE DB). Соответственно используется DLL P2smon.dll. Печать отчетов через Crystal Report Print Engine API.

Поменялся сервер (читай - имя сервера), появились филиалы со своими серверами (другие имена и серверов и баз данных) и приплыли. Отчеты не идут на печать, вылетает ошибка 536: ошибка 536Error in File полный_путь_к_файлу_отчета.rpt
Unable to connect: incorrect log on parameters.
Код на VB (слегка упрощенный):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
'   Переменные на входе
'   ReportFullPath - полный путь к файлу отчета
'   M_DEF_CONNECT - строка подключения по OLE DB

    Dim LogOnInfo As PELogOnInfo

    Dim intReturn%
    Dim prnJob%

    intReturn = PEOpenEngine()
    If intReturn =  0  Then MsgBox "Не удалось инициализировать Crystal Report Engine!", vbExclamation, " Crystal Report Engine": Exit Function

    intReturn = PEOpenPrintJob(ReportFullPath)
    If intReturn =  0  Then
        MsgBox "Не удалось инициализировать задание печати!", vbExclamation, " Crystal Report Engine":
        intReturn = PECloseEngine: Exit Function
    End If

    prnJob = intReturn

    With LogOnInfo
    
        .StructSize = PE_SIZEOF_LOGON_INFO
        .ServerName = "имя_сервера" & Chr$( 0 )
        .DatabaseName = "имя_базы данных" & Chr$( 0 )
        .UserID = "имя_пользователя" & Chr$( 0 )
        .Password = "пароль_пользователя" & Chr$( 0 )

    End With

'   Call CrystalReportEngineErrorInfo - обработчик ошибок

    intReturn = PESetNthTableLogOnInfo(prnJob,  0 , LogOnInfo,  1 )
    If intReturn =  0  Then Call CrystalReportEngineErrorInfo(prnJob, "Не удалось соединиться с сервером данных!"): Exit Function

'   Здесь ошибка и возникает
'--------------------------------------------------------------------
    intReturn = PETestNthTableConnectivity(prnJob,  0 )
    If intReturn =  0  Then Call CrystalReportEngineErrorInfo(prnJob, "Не удалось соединиться с сервером данных!"): Exit Function
'--------------------------------------------------------------------
'   ну и т.д.

Если не делать проверку на коннект к таблице, ошибка (с номером 599) вылезает позже на PEStartPrintJob:
Код: plaintext
1.
2.
    intReturn = PEStartPrintJob(prnJob, True)
    If intReturn =  0  Then Call CrystalReportEngineErrorInfo(prnJob, "Не удалось запустить печать отчета!"): Exit Function
ошибка 599Cannot open SQL Server
Естественно все необходимые библиотеки есть и зарегистрированы, прописаны объявления переменных, констант и функций.
По поиску в инете можно судить, что такая проблема стоит перед многими и не только в кристале версии 8.5, но конкретного решения найти не удалось!

Ребята! Я знаю что CR 8.5 устарел! Но, к сожалению, нет времени на переделку всех отчетов, все должно работать к понедельнику!
Если у кого-нибудь есть решение, пожалуйста, поделитесь, буду весьма благодарен! Если нет желания отвечать здесь, киньте на мыло alex@artplast.ru!
...
Рейтинг: 0 / 0
07.07.2006, 13:16
    #33838188
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
Имя сервера нигде больше явно не прописано?
...
Рейтинг: 0 / 0
07.07.2006, 13:27
    #33838233
LCD
LCD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
Имя сервера и базы данных зашивает в отчет сам кристал. Через среду разработки кристала меняется достаточно легко, но это не дело (150 отчетов * 10 филиалов = 1500, я рехнусь).
...
Рейтинг: 0 / 0
07.07.2006, 13:29
    #33838240
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
MSDN
может чем то поможет

Distributed report using ODBC fails to run on a Windows NT/2000 computer
The information in the article refers to:
Seagate Crystal Reports 8

Applies to:

Reported version only
ODBC
Microsoft Windows 2000/NT
Registry permissions for ODBC subkeys

Synopsis

A custom application distributed to a Windows NT/2000 computer may fail when attempting to run a report.

A report connecting through ODBC fails when the Windows NT/2000 user who logs in does not have Administrative rights. The report fails with one or more of these symptoms/errors:

· Infinite logon to the database
· Error 20599 - "Cannot open SQL Server"
· Error 599


Solution

To resolve this issue, download an updated Crystal Reports ODBC database driver P2sodbc.dll (version 8.0.0.85). This updated P2sodbc.dll is available from the Crystal Decisions web site at:

http://support.businessobjects.com/search

Search for the filename:

P2sodbc8.zip

On your computer, search for the file P2sodbc.dll and rename all copies to P2sodbc.old. Copy the updated P2sodbc.dll to your %systemroot%\System32 folder (such as C:\WinNT\System32).


This is a known issue with P2sodbc.dll version 8.0.0.84. This version is unable to connect to a database using default Windows NT/2000 permissions on certain ODBC subkeys in the Windows registry.


Note===========

For more information on this issue, refer to kbase article c2007581 (Installing Crystal Reports 8.0 restricts access to ODBC data sources). This issue is resolved in Crystal Reports 8.5.

===============

http://support.crystaldecisions.net/library/kbase/articles/c2007612.asp
...
Рейтинг: 0 / 0
07.07.2006, 13:33
    #33838258
LCD
LCD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
Я коннекчусь не через ODBC, а через OLE DB (P2smon.dll), на кристале 8.5 стоит последний 3 сервиспак.
...
Рейтинг: 0 / 0
07.07.2006, 15:41
    #33838775
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
LCDСделана куча отчетов в CR 8.5 SP3, приложение, их использующее - на VB6, сами отчеты - отдельные файлы. Сервер данных - MS SQL 2000. Коннект к серверу из отчета осуществляется через active data (ADO OLE DB). Соответственно используется DLL P2smon.dll. Печать отчетов через Crystal Report Print Engine API.

Поменялся сервер (читай - имя сервера), появились филиалы со своими серверами (другие имена и серверов и баз данных) и приплыли. Отчеты не идут на печать, вылетает ошибка 536: ошибка 536Error in File полный_путь_к_файлу_отчета.rpt
Unable to connect: incorrect log on parameters.
Сочуствую ....
Столкнувшись с этим в свое время, мы поменяли всю схему получения данных отчетом. Перешли на TTX + внешние данные. Это позволило решить массу проблем (включая вашу) и вдобавок повысило производительность.

Увы, я не знаю простого пути решения вашей проблемы, т.к. действительно, имя сервера и базы данных зашивает в отчет сам кристал.
...
Рейтинг: 0 / 0
07.07.2006, 17:24
    #33839240
LCD
LCD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
ОК! Я все понял! Кристал потерял по крайней мере одного клиента! Будем переходить на репортинг сервис от майкрософт!

Пока просто обошол весь этот гемор. Не очень красиво, зато работает!

Всем спасибо!
...
Рейтинг: 0 / 0
07.07.2006, 17:35
    #33839293
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
Alexey Kudinov
Столкнувшись с этим в свое время, мы поменяли всю схему получения данных отчетом. Перешли на TTX + внешние данные. Это позволило решить массу проблем (включая вашу) и вдобавок повысило производительность.

Увы, я не знаю простого пути решения вашей проблемы, т.к. действительно, имя сервера и базы данных зашивает в отчет сам кристал.
+1
Мы сделали то же самое.
...
Рейтинг: 0 / 0
07.07.2006, 17:36
    #33839298
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
LCDОК! Я все понял! Кристал потерял по крайней мере одного клиента! Будем переходить на репортинг сервис от майкрософт! 8.5, IMO последняя человеческая версия CR. Начиная с 9-й они сгородили что-то уж совсем монструозное.

что касается репортинг сервиса (мы сейчас как раз на нем) - ему еще развиваться и развиваться, до того как станет нормальным продуктом.

Так что не ждите чудес.
...
Рейтинг: 0 / 0
07.07.2006, 17:54
    #33839383
LCD
LCD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
Согласен! Но майкрософт по крайне мере почти всегда реагирует на откровенные баги! А функционал они добавят достаточно быстро!
...
Рейтинг: 0 / 0
07.07.2006, 18:26
    #33839472
LCD
LCD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
Кстати!

Перевел один отчет для пробы на ttx, все прошло на ура! Спасибо за подсказку! Как-то не обращал на эту возможность внимания.

И все равно уйду от кристала!
...
Рейтинг: 0 / 0
08.09.2006, 16:11
    #33974725
Yuska12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Report 8.5, коннект к другому серверу через Print Engine API
Если пред сохранением убрать галочку Save Data with Report, то пр запуске программы из делфи выходит табличка Enter Parameter Values, а потом (после ввода параметра) сразу возникает ошибка:

Project Otchet.exe raised exeption class ECrpeError whith message 'Error:536 Error in File D:\Отчет.rpt: Unable to connect: incorrect log on parameters. Execute <PEStartPrintJob>'.

можно узнать что это за ошибка? просто тут такая же упоминалась?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Crystal Report 8.5, коннект к другому серверу через Print Engine API / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]