powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Crystal Report и проблема со строками коннекта
3 сообщений из 3, страница 1 из 1
Crystal Report и проблема со строками коннекта
    #36834559
icom2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день Господа!


Необходимо в процесе выполненния программы подменить ConnectionString для существующего отчета.
Новая строка коннекта выглядит примерно вот так:
Data Source = dataSourceSql2;Initial Catalog=Customer2;Integrated Security=Yes
И форумы читал и гуглил ничего не выходит :(

Делаю так:

private class DbSettings
{
public string Server { get; set; }
public string DataBase { get; set; }
public bool IntegratedSecurity { get; set; }
}

private void SetConnectionString(ReportDocument reportDocument)
{
var dbSettings = new DbSettings
{
DataBase = "Customer2",
Server = "dataSourceSql2",
IntegratedSecurity = true,
};

DataSourceConnections theConnections = reportDocument.DataSourceConnections;

for (int i = 0; i < theConnections.Count; i++)
{
theConnections[i].SetConnection(dbSettings.Server, dbSettings.DataBase, dbSettings.IntegratedSecurity);
theConnections[i].Attributes.Collection.Add(new NameValuePair2("Initial Catalog", dbSettings.DataBase));
theConnections[i].Attributes.Collection.Add(new NameValuePair2("Data Source", dbSettings.Server));
theConnections[i].Attributes.Collection.Add(new NameValuePair2("Local Identifier", "2057"));
theConnections[i].Attributes.Collection.Add(new NameValuePair2("Provider", dbSettings.IntegratedSecurity));
theConnections[i].Attributes.Collection.Add(new NameValuePair2("OLE DB Services", "-5"));
theConnections[i].Attributes.Collection.Add(new NameValuePair2("Tag with column collation when possible", "0"));
theConnections[i].Attributes.Collection.Add(new NameValuePair2("Use DSN Default Properties", "False"));
theConnections[i].Attributes.Collection.Add(new NameValuePair2("Use Encryption for Data", "0"));
}
}

И вот когда я делаю эксопрт

reportDocument.Export();

данные беруться из базы которая была забита в отчете а не подменяются на новую.
Как можно решить данную проблему ?
SqlConnection юзать не хочеться т.к все ходит через nHibernate.
Буду благодарен за пример.
Спасибо!
...
Рейтинг: 0 / 0
Crystal Report и проблема со строками коннекта
    #36835608
icom2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну раз ответов нету, то поделитесь пожалуйста опытом как вы делаете подмену конектов в своем приложении.
...
Рейтинг: 0 / 0
Crystal Report и проблема со строками коннекта
    #36836135
icom2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем как и предполагал вся загвоздка была в маленькой и очень незначительной детали: после манипуляций над репортом необходимо вызвать метод Refresh(). Ибо если вы забыли вызвать этот волшебный метод данные будут тянуться из источника который проприсан по умолчанию в отчете.
Ниже привиду готовый пример. Всем спасибо!

public partial class Form1 : Form
{
private ReportDocument report;

public Form1()
{
InitializeComponent();
}

private void ConfigureCrystalReports()
{
report = new ReportDocument();
string reportPath = Application.StartupPath + "\\" + "CRReport.rpt";
try
{
report.Load(reportPath);
}
catch (Exception е)
{
Console.WriteLine(е);
}

ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = "your_server_name";
connectionInfo.DatabaseName = "your_data_base";
//connectionInfo.UserID = "sa";
//connectionInfo.Password = "SQLExpress";
connectionInfo.IntegratedSecurity = true;
SetDBLogonForReport(connectionInfo, report);
report.VerifyDatabase();
// BLACK MAGIC AND HIGHT TECHNOLOGY
report.Refresh();

crystalReportViewer.ReportSource = report;
}



private void Form1_Load(object sender, EventArgs e)
{
ConfigureCrystalReports();
}

private void crystalReportViewer_Load(object sender, EventArgs e)
{

}

private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
table.LogOnInfo.ConnectionInfo.AllowCustomConnection = true;
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);

Debug.Write(String.Format("IsConnect = {0}", table.TestConnectivity()));
}
}
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Crystal Report и проблема со строками коннекта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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