Существует ли бесплатный инструмент для создания строго типизированной схемы набора данных из Crystal Report? - PullRequest
0 голосов
/ 19 марта 2012

Я импортирую предварительно созданные Crystal Reports в проект отчета и хочу заполнить данные из вызова базы данных, чтобы я мог программно изменять источники данных.

Здесь много полей, но во многих таблицах. Я не хочу создавать эти наборы данных вручную, если мне не нужно. Существует ли инструмент, который будет проверять метаданные Crystal Reports и генерировать из него строго типизированный набор данных ADO.NET? Это сэкономило бы мне много времени.

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Вы можете изменить источник данных, на который указывает отчет, программным способом - вам не нужно использовать промежуточный набор данных. Вы просто просматриваете каждую таблицу в отчете и обновляете источник данных.

См. Ниже код:

using System;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ReportDocument cryRpt = new ReportDocument();
            TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
            TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
            ConnectionInfo crConnectionInfo = new ConnectionInfo();
            Tables CrTables ;

            cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt");

            crConnectionInfo.ServerName = "YOUR SERVER NAME";
            crConnectionInfo.DatabaseName = "YOUR DATABASE NAME";
            crConnectionInfo.UserID = "YOUR DATABASE USERNAME";
            crConnectionInfo.Password = "YOUR DATABASE PASSWORD";

            CrTables = cryRpt.Database.Tables ;
            foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
            {
                crtableLogoninfo = CrTable.LogOnInfo;
                crtableLogoninfo.ConnectionInfo = crConnectionInfo;
                CrTable.ApplyLogOnInfo(crtableLogoninfo);
            }

            crystalReportViewer1.ReportSource = cryRpt;
            crystalReportViewer1.Refresh(); 
        }
    }
}

Взято из: http://csharp.net -informations.com / crystal-reports / csharp-crystal-reports-dynamic-login.htm

0 голосов
/ 30 марта 2012

Не похоже, что есть механизм, как я хочу.

...