SQL Server Compact Edition и отчеты. Можно ли использовать SSRS?

Мне нужно создать простое автономное приложение, которое позволит пользователям вводить некоторые данные, а затем распечатывать отчет. Я бы предпочел использовать SSRS в качестве механизма отчетов, но я также хочу, чтобы мое хранилище данных было очень простым.

У меня есть еще одно масштабное смарт-клиентское приложение, использующее SQL Server Express в качестве серверной части для пользователя. По опыту, SQL Server Express, безусловно, является вариантом, однако интеграция процесса создания и обслуживания базы данных - это своего рода кошмар из-за различных ограничений конечного пользователя.

SQL Server CE гораздо проще использовать для моих нужд, если это возможно. Могу ли я использовать SQL Server Compact Edition с SSRS?

Да, я знаю, что мне все равно потребуется установить SQL Server Express, если я хочу использовать SSRS. Меня устраивает это требование. Меня больше всего беспокоит то, что мне бы не пришлось автоматизировать процесс создания базы данных в SQL Server Express, что я должен делать с другим упомянутым мною приложением смарт-клиента.

Вместо этого я бы предпочел использовать локальный файл базы данных SQL Server CE, который я могу связать с моим приложением и подключиться к нему из SSRS. Можно ли это сделать?

Если это невозможно, существует ли какая-то другая простая альтернатива (за исключением использования Crystal Reports), которая позволила бы просто создавать отчеты и включать файл базы данных в установщик приложения?


person RLH    schedule 26.06.2013    source источник


Ответы (1)


Вы можете использовать автономный элемент управления Reporting Services ReportViewer с DataSet из файла базы данных SQL Server Compact, который работает полностью локально и не требует установки SQL Server.

Я делаю это в своем SQL Server Compact Toolbox с кодом, похожим на этот (полный исходный код доступен на http://sqlcetoolbox.codeplex.com):

public partial class ReportGrid : UserControl
{
    public ReportGrid()
    {
        InitializeComponent();
    }

    public DataSet DataSet { get; set; }

    public string TableName { get; set; }

    private void ReportGrid_Load(object sender, EventArgs e)
    {
        if (DataSet != null)
        {
            DataSet.DataSetName = TableName;

            Stream rdlc = RdlcHelper.BuildRDLCStream(
                DataSet, TableName);

            reportView.LocalReport.LoadReportDefinition(rdlc);
            reportView.LocalReport.DataSources.Clear();
            reportView.LocalReport.DataSources.Add(
                new ReportDataSource(DataSet.DataSetName, DataSet.Tables[0]));
            reportView.RefreshReport();
        }
    }

}
person ErikEJ    schedule 27.06.2013
comment
Отлично! К вашему сведению, панель инструментов выглядит потрясающе. Я обязательно им воспользуюсь! - person RLH; 27.06.2013