Строка подключения Crystal Report из properties.settings winform c # - PullRequest
0 голосов
/ 23 ноября 2011

Можно ли установить строку подключения отчета Crystal из properties.settings winform в c #, как показано ниже?

это только мои предположения

rpt.connectionString = Properties.Settings.Default.ConnectionString

Ответы [ 2 ]

0 голосов
/ 31 июля 2012

Если у вас уже есть успешное соединение с SQL Server, вы можете использовать следующий статический метод, чтобы установить соединение с отчетом на основе вашего SqlConnection:

using System.Text;
using CrystalDecisions.Shared;
using System.Data.SqlClient;

namespace StackOverflow
{
    public class MyCrystalReports
    {

        // This method will allow you may easily set report datasource  based on your current SqlServerConnetion
        public static void SetSqlConnection(CrystalDecisions.CrystalReports.Engine.ReportClass MyReport, SqlConnection MySqlConnection)
        {

            // You may even test SqlConnection before using it.

            SqlConnectionStringBuilder SqlConnectionStringBuilder = new SqlConnectionStringBuilder(MySqlConnection.ConnectionString);

            string ServerName = SqlConnectionStringBuilder.DataSource;
            string DatabaseName = SqlConnectionStringBuilder.InitialCatalog;
            Boolean IntegratedSecurity = SqlConnectionStringBuilder.IntegratedSecurity;
            string UserID = SqlConnectionStringBuilder.UserID;
            string Password = SqlConnectionStringBuilder.Password;
            // Of course, you may add extra settings here :D

            // On Crystal Reports, connection must be set individually for each  table defined on the report document
            foreach (CrystalDecisions.CrystalReports.Engine.Table Table in MyReport.Database.Tables)
            {

                CrystalDecisions.Shared.TableLogOnInfo TableLogOnInfo = Table.LogOnInfo;

                TableLogOnInfo.ConnectionInfo.ServerName = ServerName;
                TableLogOnInfo.ConnectionInfo.DatabaseName = DatabaseName;
                TableLogOnInfo.ConnectionInfo.IntegratedSecurity = IntegratedSecurity;

                if (IntegratedSecurity != true)
                {
                    TableLogOnInfo.ConnectionInfo.UserID = UserID;
                    TableLogOnInfo.ConnectionInfo.Password = Password;
                }

                Table.ApplyLogOnInfo(TableLogOnInfo);

            }
        }

    }
}
0 голосов
/ 24 ноября 2011

Это мой код для управления логинами / строками соединений (dbLogin - это простой класс для хранения информации, вы можете заменить его строковыми значениями).

    //Somewhere in my code:
    foreach (CrystalDecisions.CrystalReports.Engine.Table tbCurrent in rdCurrent.Database.Tables)
        SetTableLogin(tbCurrent);


    //My set login method 
    private void SetTableLogin(CrystalDecisions.CrystalReports.Engine.Table table)
    {
        CrystalDecisions.Shared.TableLogOnInfo tliCurrent = table.LogOnInfo;

        tliCurrent.ConnectionInfo.UserID = dbLogin.Username;
        tliCurrent.ConnectionInfo.Password = dbLogin.Password;
        if(dbLogin.Database != null)
            tliCurrent.ConnectionInfo.DatabaseName = dbLogin.Database; //Database is not needed for Oracle & MS Access
        if(dbLogin.Server != null)
            tliCurrent.ConnectionInfo.ServerName = dbLogin.Server;
        table.ApplyLogOnInfo(tliCurrent);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...