Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Crystal Reports метод SetSQLCommandTable / 4 сообщений из 4, страница 1 из 1
30.05.2017, 16:57
    #39462534
Jafa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports метод SetSQLCommandTable
Всем привет,
подскажите, как в отчете Crystal Reports изменить SQL-скрипт с параметрами для CommandTable:
я пробую такой вариант, но он заканчивается ошибкой:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
            CrystalDecisions.CrystalReports.Engine.ReportDocument doc;
            doc = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
            doc.Load("D:\\Temp_02\\Report1_Test.rpt");

            CrystalDecisions.Shared.ConnectionInfo connectionInfo;
            connectionInfo = (CrystalDecisions.Shared.ConnectionInfo)doc.Database.Tables[0].LogOnInfo.ConnectionInfo.Clone();
            connectionInfo.Password = "password";

            CrystalDecisions.Shared.ParameterValues ThisPV = new CrystalDecisions.Shared.ParameterValues();
            ThisPV.AddValue(3);
            doc.DataDefinition.ParameterFields[0].ApplyCurrentValues(ThisPV);
            try
            {
                doc.SetSQLCommandTable(connectionInfo, doc.Database.Tables[0].Name, "SELECT * FROM sys.all_objects WHERE schema_id = {?CR ParSchemaId}");
            }
            catch (Exception ex)
            {
                doc.Close();
            }



если использовать SQL без параметров, то этот вариант работает. Но мне нужно изменить существующий скрипт. который уже содержит параметры. Как это можно сделать?
...
Рейтинг: 0 / 0
30.05.2017, 17:27
    #39462568
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports метод SetSQLCommandTable
а) какой ошибкой?
б) что вы конктретно меняете?
...
Рейтинг: 0 / 0
30.05.2017, 17:45
    #39462587
Jafa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports метод SetSQLCommandTable
Roman Mejtes,
ошибка: System.Runtime.InteropServices.COMException (0x8000044E): Failed to create command table.
В данном тестовом варианте, например, я пытаюсь изменить SQL:
Код: sql
1.
SELECT * FROM sys.all_objects WHERE schema_id = {?CR ParSchemaId}


на
Код: sql
1.
SELECT TOP(3) * FROM sys.all_objects WHERE schema_id = {?CR ParSchemaId}


ну или наоборот
...
Рейтинг: 0 / 0
31.05.2017, 18:40
    #39463319
Jafa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports метод SetSQLCommandTable
вообщем, решение нашел сам, вопрос закрыт.
Код: c#
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.
private void button_Test_Click(object sender, EventArgs e)
{
    ReportDocument doc = new ReportDocument();

    doc.Load("D:\\Temp_01\\Report1_Test.rpt");

    ISCDReportClientDocument rcd = doc.ReportClientDocument as ISCDReportClientDocument;

    CommandTable rcdTable_Old;

    CommandTable rcdTable_New;

    try
    {
        rcdTable_Old = rcd.Database.Tables[0] as CommandTable;

        rcdTable_New = rcd.Database.Tables[0].Clone(true) as CommandTable;

        rcdTable_New.CommandText = "SELECT TOP(1000) * FROM sys.all_objects WHERE name = {?CR ParSchemaId}";

        rcd.DatabaseController.LogonEx("ServerName", "DataBaseName", "UserId", "Password");

        rcd.VerifyDatabase();

        rcd.SaveAs(rcd.DisplayName, "D:\\Temp_02\\", 1);

        rcd.Close();
    }
    catch (Exception ex)
    {
        rcd.Close();

        MessageBox.Show(ex.Message);
    }
}
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Crystal Reports метод SetSQLCommandTable / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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