Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / настройка расположения udl файла в CR / 25 сообщений из 30, страница 1 из 2
23.10.2008, 11:16
    #35611079
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
День добрый.
Разрабатываю приложение в Visual Studio 2008, содержащее отчеты на CR. Для CR использую OLE-источник (udl-файл). Подскажите, возможно ли, отчетам на CR как-то программно указать расположение udl-файла? Это нужно для тех случаев, если необходимо udl файл переместить в другую директорию. В настоящий момент при настройке соединения расположение udl-файла жестко фиксируется и если, я его перемещу в другую директорию, то соединение опять необходимо перенастраивать.
...
Рейтинг: 0 / 0
23.10.2008, 13:26
    #35611658
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Дело в том, что код, приведенный ниже не срабатывает почему-то с суботчетами и естественно как выход вижу настройку пути к 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
23.10.2008, 14:02
    #35611829
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Для сабрепортов нужно в каждом прописывать LogOnInfo

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



Уточните, пожалуйста, что под этим имелось в виду?
...
Рейтинг: 0 / 0
23.10.2008, 15:00
    #35612085
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
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
23.10.2008, 16:20
    #35612470
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Попробовал следующий код:
Код: 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
24.10.2008, 09:14
    #35613631
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Поэтому, для того чтобы не разбираться в коде, как выход вижу как раз настройку пути к udl-файлу..
...
Рейтинг: 0 / 0
24.10.2008, 09:56
    #35613712
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
перефразируя вопрос, мне нужно перенести приложение, содержащее отчеты на CR, на другую машину, но при этом не знаю как мне настроить на новое подключение все отчеты. Пробую программно и через udl-файл, пока ничего не получается. Подскажите...
...
Рейтинг: 0 / 0
24.10.2008, 11:59
    #35614093
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
strintПопробовал следующий код:
Но всё равно не работает...
Я не так маленько делаю:
aTable.SetLogonInfo(lcSource, lcDtBase, .cUserName, .cUserPassWord)

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

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


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

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

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


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

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

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
27.10.2008, 16:57
    #35618465
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Alexander Bor.
Однако лучше бы было загружать параметры не из udl, а из config/xml файла. Но смысл тот же.

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

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

Иначе, если используется windows-аутентификация, то нужно проверить, что всё и все в домене windows, что пользователь имеет права доступа на сервер, и что приложение, выполняющее отчеты десктопное, а не серверное (не ASP.NET).
...
Рейтинг: 0 / 0
28.10.2008, 10:27
    #35619651
Alexander Bor.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Да, и не забыть, что для windows-аутентификации обязательно д.б. установлен параметр: Integrated Security=SSPI
...
Рейтинг: 0 / 0
28.10.2008, 12:00
    #35619987
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
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
28.10.2008, 12:35
    #35620101
Alexander Bor.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
strint
1.на MS SQL Server серверная аутентификация разрешена (опять же отчеты без суботчетов работают нормально)
2. Да, действительно приложение ASP.NET, но если отчет не содержит суботчеты, то всё работает нормально, с суботчетами требует пароля и логина.
3. Не понял как для объекта ConnectionInfo установить свойство IntegratedSecurity в SSPI, если оно boolean...

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

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

Да, для ConnectionInfo IntegratedSecurity - булевское. Это я указал значение для url.
...
Рейтинг: 0 / 0
28.10.2008, 14:37
    #35620506
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Заменил участок кода
Код: 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
28.10.2008, 15:03
    #35620594
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Может быть ошибка в коде?
...
Рейтинг: 0 / 0
28.10.2008, 16:08
    #35620874
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Или дело в том, что приложение asp.net?
...
Рейтинг: 0 / 0
28.10.2008, 16:31
    #35620961
Alexander Bor.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
В приведенных кодах да, есть ошибки. Но, наверное, из-за копирования: "ServerName"".
В остальном все так, специально проверил код - все работает. Запрашивается, если только некорректный логин. А что показал мониторинг MSSS?
...
Рейтинг: 0 / 0
28.10.2008, 16:45
    #35621013
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Alexander Bor.В приведенных кодах да, есть ошибки. Но, наверное, из-за копирования: "ServerName"".
В остальном все так, специально проверил код - все работает. Запрашивается, если только некорректный логин. А что показал мониторинг MSSS?
MSSS - это встроенное средство? Где можно посмотреть?
...
Рейтинг: 0 / 0
28.10.2008, 17:10
    #35621110
strint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
Еще раз решил написать код, который использую для коннекта (может сейчас, кто увидит, в чем ошибка). Но он по какой-то причине не работает. Всё равно спрашивается логин и пароль притом вне зависимости от того содержит отчет суботчеты или нет. Хотя, при коннекте ввожу тот же логин и пароль, что и в коде и всё коннектится…
Код: 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
28.10.2008, 17:31
    #35621209
Alexander Bor.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настройка расположения udl файла в CR
strintMSSS - это встроенное средство? Где можно посмотреть?
Это я MS SQL Server так сократил.
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / настройка расположения udl файла в CR / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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