powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / настройка расположения udl файла в CR
25 сообщений из 30, страница 1 из 2
настройка расположения udl файла в CR
    #35611079
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый.
Разрабатываю приложение в Visual Studio 2008, содержащее отчеты на CR. Для CR использую OLE-источник (udl-файл). Подскажите, возможно ли, отчетам на CR как-то программно указать расположение udl-файла? Это нужно для тех случаев, если необходимо udl файл переместить в другую директорию. В настоящий момент при настройке соединения расположение udl-файла жестко фиксируется и если, я его перемещу в другую директорию, то соединение опять необходимо перенастраивать.
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35611658
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что код, приведенный ниже не срабатывает почему-то с суботчетами и естественно как выход вижу настройку пути к udl-файлу

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CrystalDecisions.Shared.ConnectionInfo ci = new CrystalDecisions.Shared.ConnectionInfo();
        CrystalDecisions.Shared.TableLogOnInfo Log = new CrystalDecisions.Shared.TableLogOnInfo();

        CrystalReportSource1.Report.FileName = ReportName;
        ci.ServerName = ServerName;
        ci.DatabaseName = DatabaseName;
        ci.IntegratedSecurity = true;

        CrystalDecisions.CrystalReports.Engine.Database myDatabase = CrystalReportSource1.ReportDocument.Database;
        CrystalDecisions.CrystalReports.Engine.Tables myTables;

        myTables = myDatabase.Tables;

        foreach (CrystalDecisions.CrystalReports.Engine.Table myTable in myTables)
        {
            Log = myTable.LogOnInfo;
            Log.ConnectionInfo = ci;
            myTable.ApplyLogOnInfo(Log);
        }
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35611829
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для сабрепортов нужно в каждом прописывать LogOnInfo

Шукай ReportObjects где Kind = crSubreportObject, и в каждом прописывай LogOnInfo
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35611925
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin PahanДля сабрепортов нужно в каждом прописывать LogOnInfo



Уточните, пожалуйста, что под этим имелось в виду?
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35612085
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
strintKruchinin PahanДля сабрепортов нужно в каждом прописывать LogOnInfo



Уточните, пожалуйста, что под этим имелось в виду?
Вообще, я работаю с RDC и маленько в другой среде. Так, навскидку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
	.SetParamDefaults(.oReport)
	FOR EACH Section IN .oReport.Sections
		FOR EACH Obj IN Section.ReportObjects
			IF Obj.Kind = crSubreportObject
				.SetParamDefaults(Obj)
			ENDIF
		ENDFOR
	ENDFOR
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35612470
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал следующий код:
Код: 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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
CrystalDecisions.CrystalReports.Engine.ReportDocument rd, rdsub;
        rd = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy);
        rd.Load("C:\\ReportForm1.rpt");
        CrystalDecisions.CrystalReports.Engine.Sections crSections;
        CrystalDecisions.CrystalReports.Engine.SubreportObject crSubreportObject;
        CrystalDecisions.CrystalReports.Engine.ReportObjects crReportObjects;
        CrystalDecisions.CrystalReports.Engine.Database crDatabase;
        CrystalDecisions.CrystalReports.Engine.Tables crTables;
        CrystalDecisions.Shared.TableLogOnInfo crTableLogOnInfo;

        crDatabase = rd.Database;
        crTables = crDatabase.Tables;

        CrystalDecisions.Shared.ConnectionInfo crConn = new CrystalDecisions.Shared.ConnectionInfo();

        crConn.ServerName = "ServerName";
        crConn.DatabaseName = "DatabaseName ";
        crConn.IntegratedSecurity = true;

        foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables)
        {
            crTableLogOnInfo = aTable.LogOnInfo;
            crTableLogOnInfo.ConnectionInfo = crConn;
            aTable.ApplyLogOnInfo(crTableLogOnInfo);
        }

        crSections = rd.ReportDefinition.Sections;
        foreach (CrystalDecisions.CrystalReports.Engine.Section crSection in crSections)
        {
            crReportObjects = crSection.ReportObjects;
            foreach (CrystalDecisions.CrystalReports.Engine.ReportObject crReportObject in crReportObjects)
            {
                if (crReportObject.Kind == CrystalDecisions.Shared.ReportObjectKind.SubreportObject)
                {
                    crSubreportObject = (CrystalDecisions.CrystalReports.Engine.SubreportObject)crReportObject;

                    rdsub = crSubreportObject.OpenSubreport(crSubreportObject.SubreportName);

                    crDatabase = rdsub.Database;
                    crTables = crDatabase.Tables;
                    foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables)
                    {
                        crTableLogOnInfo = aTable.LogOnInfo;
                        crTableLogOnInfo.ConnectionInfo = crConn;
                        aTable.ApplyLogOnInfo(crTableLogOnInfo);
                    }
                }
            }
        }

Но всё равно не работает...
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35613631
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поэтому, для того чтобы не разбираться в коде, как выход вижу как раз настройку пути к udl-файлу..
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35613712
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
перефразируя вопрос, мне нужно перенести приложение, содержащее отчеты на CR, на другую машину, но при этом не знаю как мне настроить на новое подключение все отчеты. Пробую программно и через udl-файл, пока ничего не получается. Подскажите...
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35614093
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
strintПопробовал следующий код:
Но всё равно не работает...
Я не так маленько делаю:
aTable.SetLogonInfo(lcSource, lcDtBase, .cUserName, .cUserPassWord)

Уже не помню, почему я именно так делаю.

И, кстати, я через ODBC цепляюсь, может именно поэтому.


А про udl я ничего не скажу, ни разу не пробовал.
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35614333
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin PahanstrintПопробовал следующий код:
Но всё равно не работает...
Я не так маленько делаю:
aTable.SetLogonInfo(lcSource, lcDtBase, .cUserName, .cUserPassWord)

Уже не помню, почему я именно так делаю.

И, кстати, я через ODBC цепляюсь, может именно поэтому.


А про udl я ничего не скажу, ни разу не пробовал.

Вы, видимо пишете на другом языке. На с# такого, к сожалению нет, а есть именно: aTable.ApplyLogOnInfo(crTableLogOnInfo);
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35614674
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
strint
Вы, видимо пишете на другом языке. На с# такого, к сожалению нет, а есть именно: aTable.ApplyLogOnInfo(crTableLogOnInfo);
Я не только пишу на другом языке, я еще и привязываюсь через COM, а вы через .Net.
Подсказать прямо я вам не могу, поэтому пытаюсь навести на мысль.
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35617504
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, помогите с решением проблемы...Уже больше недели никак решить не могу...
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35618245
Alexander Bor.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал минимальный пример для этого:

public partial class Form1 : Form
{
ReportDocument rep;
ADODB.Recordset adoRs; //assembly adodb.dll

public Form1()
{
InitializeComponent();
rep = new ReportDocument();
rep.Load(@"D:\Alexander\UDL-connection.rpt");

adoRs = new ADODB.RecordsetClass();
adoRs.CursorLocation = ADODB.CursorLocationEnum.adUseClient;
adoRs.Open("SELECT * FROM Customer", @"File Name=D:\Alexander\test.udl", ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockBatchOptimistic, -1);
}

private void button1_Click(object sender, EventArgs e)
{
rep.SetDataSource(adoRs);

rep.Refresh();

crystalReportViewer1.ReportSource = rep;
crystalReportViewer1.Show();
}
}

Однако лучше бы было загружать параметры не из udl, а из config/xml файла. Но смысл тот же.

А вообще есть 2 подхода к изменению источника данных:
1. Используя метод SetDataSource для отчета/подотчетов
2. Изменяя свойства ServerName, DatabaseName, UserID и др. класса ConnectionInfo для каждой таблицы отчета.
Подробнее см. примеры и справку для CR.NET соотв. версии CR (и VS).
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35618465
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Bor.
Однако лучше бы было загружать параметры не из udl, а из config/xml файла. Но смысл тот же.

А вообще есть 2 подхода к изменению источника данных:
1. Используя метод SetDataSource для отчета/подотчетов
2. Изменяя свойства ServerName, DatabaseName, UserID и др. класса ConnectionInfo для каждой таблицы отчета.
Подробнее см. примеры и справку для CR.NET соотв. версии CR (и VS).

Чуть выше привел код, использующий второй подход. Но почему-то всё равно при коннекте спрашивает логин и пароль...В чем ошибка понять не могу..
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35619604
Alexander Bor.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверьте, что:
1. на MS SQL Server разрешена серверная аутентификация
2. для моего примера в ufl-файле сохранен пароль
3. для примера с ConnectionInfo явно укажите имя и пароль пользователя.

Иначе, если используется windows-аутентификация, то нужно проверить, что всё и все в домене windows, что пользователь имеет права доступа на сервер, и что приложение, выполняющее отчеты десктопное, а не серверное (не ASP.NET).
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35619651
Alexander Bor.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, и не забыть, что для windows-аутентификации обязательно д.б. установлен параметр: Integrated Security=SSPI
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35619987
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Bor.Проверьте, что:
1. на MS SQL Server разрешена серверная аутентификация
2. для моего примера в ufl-файле сохранен пароль
3. для примера с ConnectionInfo явно укажите имя и пароль пользователя.

Иначе, если используется windows-аутентификация, то нужно проверить, что всё и все в домене windows, что пользователь имеет права доступа на сервер, и что приложение, выполняющее отчеты десктопное, а не серверное (не ASP.NET).

1.на MS SQL Server серверная аутентификация разрешена (опять же отчеты без суботчетов работают нормально)
2. Да, действительно приложение ASP.NET, но если отчет не содержит суботчеты, то всё работает нормально, с суботчетами требует пароля и логина.
3. Не понял как для объекта ConnectionInfo установить свойство IntegratedSecurity в SSPI, если оно boolean...
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35620101
Alexander Bor.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
strint
1.на MS SQL Server серверная аутентификация разрешена (опять же отчеты без суботчетов работают нормально)
2. Да, действительно приложение ASP.NET, но если отчет не содержит суботчеты, то всё работает нормально, с суботчетами требует пароля и логина.
3. Не понял как для объекта ConnectionInfo установить свойство IntegratedSecurity в SSPI, если оно boolean...

Поставьте на мониторинг запросы в MSSS и посмотрите, от имени кого пытаются выполниться запросы от подотчетов. Наверняка от имени какого-нибудь IUSR_IISSERVER.

Проще всего было бы явно указать логин/пароль для отчета и подотчетов, отменив IntegratedSecurity.

Да, для ConnectionInfo IntegratedSecurity - булевское. Это я указал значение для url.
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35620506
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заменил участок кода
Код: plaintext
1.
2.
crConn.ServerName = "ServerName";
        crConn.DatabaseName = "DatabaseName ";
        crConn.IntegratedSecurity = true;

На

Код: plaintext
1.
2.
3.
4.
crConn.ServerName = "ServerName"";
                    crConn.DatabaseName = "DatabaseName";
                    crConn.Password = "Password ";
                    crConn.UserID = "UserID";
                    crConn.IntegratedSecurity = false;

Но всё равно, запрашивает пароль и логин при коннекте отчета с суботчетами
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35620594
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть ошибка в коде?
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35620874
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или дело в том, что приложение asp.net?
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35620961
Alexander Bor.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В приведенных кодах да, есть ошибки. Но, наверное, из-за копирования: "ServerName"".
В остальном все так, специально проверил код - все работает. Запрашивается, если только некорректный логин. А что показал мониторинг MSSS?
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35621013
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Bor.В приведенных кодах да, есть ошибки. Но, наверное, из-за копирования: "ServerName"".
В остальном все так, специально проверил код - все работает. Запрашивается, если только некорректный логин. А что показал мониторинг MSSS?
MSSS - это встроенное средство? Где можно посмотреть?
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35621110
strint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз решил написать код, который использую для коннекта (может сейчас, кто увидит, в чем ошибка). Но он по какой-то причине не работает. Всё равно спрашивается логин и пароль притом вне зависимости от того содержит отчет суботчеты или нет. Хотя, при коннекте ввожу тот же логин и пароль, что и в коде и всё коннектится…
Код: 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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
CrystalDecisions.CrystalReports.Engine.ReportDocument rd, rdsub;
        rd = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

        rd.Load(Server.MapPath("Report1.rpt"));
        CrystalDecisions.CrystalReports.Engine.Sections crSections;
        CrystalDecisions.CrystalReports.Engine.SubreportObject crSubreportObject;
        CrystalDecisions.CrystalReports.Engine.ReportObjects crReportObjects;
        CrystalDecisions.CrystalReports.Engine.Database crDatabase;
        CrystalDecisions.CrystalReports.Engine.Tables crTables;
        CrystalDecisions.Shared.TableLogOnInfo crTableLogOnInfo;

        crDatabase = rd.Database;
        crTables = crDatabase.Tables;

        CrystalDecisions.Shared.ConnectionInfo crConn = new CrystalDecisions.Shared.ConnectionInfo();

       crConn.ServerName = "ServerName";
        crConn.DatabaseName = "DatabaseName";
        crConn.UserID = "UserID";
        crConn.Password = "Password";
        crConn.IntegratedSecurity = false;
        foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables)
        {
            crTableLogOnInfo = aTable.LogOnInfo;
            crTableLogOnInfo.ConnectionInfo = crConn;
            aTable.ApplyLogOnInfo(crTableLogOnInfo);
        }

        crSections = rd.ReportDefinition.Sections;
        foreach (CrystalDecisions.CrystalReports.Engine.Section crSection in crSections)
        {
            crReportObjects = crSection.ReportObjects;
            foreach (CrystalDecisions.CrystalReports.Engine.ReportObject crReportObject in crReportObjects)
            {
                if (crReportObject.Kind == CrystalDecisions.Shared.ReportObjectKind.SubreportObject)
                {
                    crSubreportObject = (CrystalDecisions.CrystalReports.Engine.SubreportObject)crReportObject;

                    rdsub = crSubreportObject.OpenSubreport(crSubreportObject.SubreportName);

                    crDatabase = rdsub.Database;
                    crTables = crDatabase.Tables;

                    foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables)
                    {
                        crTableLogOnInfo = aTable.LogOnInfo;
                        crTableLogOnInfo.ConnectionInfo = crConn;
                        aTable.ApplyLogOnInfo(crTableLogOnInfo);
                    }
                }
            }
        }
...
Рейтинг: 0 / 0
настройка расположения udl файла в CR
    #35621209
Alexander Bor.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
strintMSSS - это встроенное средство? Где можно посмотреть?
Это я MS SQL Server так сократил.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / настройка расположения udl файла в CR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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