dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Konstantin Yushtin

  • Бесплатный отчетогенератор для Microsoft Visual C# 2005 Express Edition


    Итак, стоит задача, можно ли создавать отчеты типа Crystal Reports с использованием только бесплатных продуктов. Как известно Crystal Report не входит в поставку Microsoft Visual C# 2005 Express Edition. Какие есть бесплатные средства для создания отчетов ?!

    Итак, знакомимся ReportViewer от Microsoft. Сначала устанавливаем Microsoft Visual C# 2005 Express Edition, а потом Visual Web Developer 2005 Express Edition.

    Затем скачиваем Reporting Add-In for  Visual Web Developer  для визуального редактирования источников данных с сайта Microsoft  http://download.microsoft.com/download/4/4/D/44DBDE61-B385-4FC2-A67D-48053B8F9FAD/SQLServer2005_ReportAddin.msi.

    Затем можно вытянуться на вебстраницу компоненту ReportViewer, которая назодится в разделе Data. Нажам на треугольник в верхнем правом углу можно выбрать опцию «Design a new report». Откроется редактор отчетов.

    В тулбоксе у него две вкладки, на самом деле данный редактор много функциональный, более того, ему посвящен целый сайт http://www.gotreportviewer.com/ . Ничего сложного нет, можно задать компоненту, источник данных.  Далее создайем источник данных. Это стандартная процедура. В данном примере, я использовал простейший запрос “select * from products” и отображал его в виде таблицы.

    Итак, после того как был сгенерирован файл отчета, необходимо сохранить его под другим вторым именем и желательно в каталоге, где находится проект разрабатываемый в Visual C# Express 2005. Далее, необходимо добавить в ToolBox Microsoft Visual C# 2005 Express Edition с помощью пункта контекстного меню «Choose Items …» компоненту ReportViewer (в данном случае как раз нужно будет выбрать из пространства имен Microsoft.Reporting.WinForns  и  пперетащить ее потом на форму. Как говорят, французы , вуаля ...

    Но, тут есть одна сложность – Microsoft Visual C# 2005 Express Edition не содержит визарда для установления соединения с базой данных, поэтому придется немного попрограммировать, но предварительно узнав имена источников из базы данных:

                SqlConnection sq = new SqlConnection(
                    "Initial Catalog=Northwind; Data Source=.\\SQLEXPRESS; Integrated Security=true"
                    );

                DataSet ds = new DataSet();

                SqlDataAdapter adapter = new SqlDataAdapter(
                    "select * from products", sq);

                adapter.Fill(ds);
                ReportDataSource source = new ReportDataSource();

                // Имя источника должно совпадать с тем, который сгенерировал Visual Web Developer
                source.Name = "DataSet1_Products";
                source.Value = ds.Tables[0];

                this.reportViewer1.LocalReport.DataSources.Add(source);

                // пространство имен проекта TestWindows
                //  файл отчета Report1.rdlc
                this.reportViewer1.LocalReport.ReportEmbeddedResource = "TestWindows.Report1.rdlc";

                this.reportViewer1.RefreshReport();


    Особо обращаю внимание на то, что имя источника данных для отчета должны совпадать с тем, которое было создано в Visual Web Developer 2005 Express Edition иначе будет сгенерирована ошибка внутри вида «A data source instance has not been supplied for the data source DataSet1_Products»

    Резюмируя, можно сказать, что существует разумная альтернатива Crystal Reports, поскольку

    Компонента бесплатная и поддерживает экспорт в PDF и Excel.
    Формат файла представляет собой XML на который присутствует описание, то есть данный файл можно динамически генерировать средствами Visual Studio, чему есть приведены примеры.
    Ну и источниками данных могут быть не только DataTable, но и List-ы объектов.
     Еще раз укажу название сайта, на котором есть документация, скришоты приложений и примеры, доступные для скачивания http://www.gotreportviewer.com/.

    К сожалению, я не нашел бесплатных компонент для Microsoft Visual C# 2005 Express Edition чтобы генерировать файлы отчетов Crystal Reports, хотя получить просмотрщик можно, установив Crystal Reports for .NET Framework 2.0 Redistributable Package, но компоненты дизайнера отчетов по-моему там нет.

  • С# это все-таки не C++

    Почему-то я уверен, что мой пост будет первым в наступающем году.

    Итак, начну с того, что многие думают, что порядок разбора выражений в C# идентичен С++. На самом деле, дело тут обстоит не совсем так. Мои слушатели обратили на данный факт мое внимание. Итак пусть есть два простых фрагмента кода на C#



    static void Main(string[] args)

            {

                int f = 1;

                f +=f++;

                Console.WriteLine(f);           

            }

    а это соответствующий фрагмент на С++ (тега почему-то нет в тулбаре)



    void main()

    {

        int f = 1;

        f += f++;

        cout<<f;

     }

    Можете проверить, что результат будет разный, и интуитивно (как для меня) прогнозируемый результат получается именно в случае С++. Весь фокус в том, что строка разбирается слева направо в C# и справа налево в С++, то есть строка в C# трансфорируется в

     f = f + f++;

     в тоже время переставленный операнд

     f = f++ + f;

    дает аналогичный результат как и в C++. Возможно, неточность в компиляторе или это тот самый случай когда от перемены мест слагаемых меняется сумма :)  или это связано с особенностями ValueType когда первая переменная копируется в отдельную область памяти и там инкрементируется отдельно от своего источника.

    P.S. Согласен, что данный кусок кода может представлять собой плохо написанный фрагмент, но факт остается фактом - парсинг идет разный и это стоит учитывать. Хотя желающим я могу посоветовать писать правильно f += ++f, что работает одинаково на обоих языках.

    P.P.S. Да, кстати, поздравляю всех с наступившим Новым 2008-м годом !

     

  • Первый пост - он трудный самый :)

    Трудно писать первый пост, особенно когда роится столько мыслей ...

    Данный блог предназначен для того, чтобы я мог отвечать на вопросы, которые мне хотели задать на осенних Днях разработчика. После каждого доклада подходили люди и задавали вопросы. на которые я обещал ответить если они мне напишут е-мейл и оставлял им свою визитку. К сожалению, кроме коллеги из Львова мне никто так и не написал, но у как раз с ним мы все вопросы и порешали по почте. Также я планирую  писать основные понравившиеся мне моменты, связанные с C# 3.5, Silverlight  2.0 и SQL Server 2008, а также просто интересные с моей точки зрения вещи.

    Кратко опишу свои впечатления от аудиторий в разных городах. Мне лично понравились все города - но аудитория в каждом городе своеобразна. Например, в Симферополе мне было труднее всего (поезд приехал в 4 утра), но зал был переполнен и заразил меня своей энергией и такое впечатление, что половина зала была тестеры и мы почти покрыли полностью тестами класс. В общем большое спасибо всем пришедним и напоминаю, что у кого были вопросы , но потеряли мою визитку, то можно писать сюда. Надеюсь, что первый пост по технологиям будет в течение 1-2 дней, ну или по вопросам.