Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » .NET - Все статьи »

Обсудить на форуме Обсудить на форуме

C#/VB.NET(WindowsForms): CrystalReports (параметрический запрос, экспорт), шаг за шагом.


Написать данную статью меня побудило отрывочность и неполнота информации в литературе, технической документации и Internet-публикациях о том как пошагово с нуля сделать работоспособный отчет с использованием Crystal Reports.

Написать данную статью меня побудило отрывочность и неполнота информации в литературе, технической документации и Internet-публикациях о том как пошагово с нуля сделать работоспособный отчет с использованием Crystal Reports.

Программное обеспечение:
ОС: Windows 2003 Server
Средства разработки: Visual Studio.Net 2003 Enterprise Architecht
База данных: MS SQL Server 2000
Источник данных: Northwind

  1. Создаем проект: File/New/Project нажимаем Windows Application

  2. На Form1 переносим две кнопки:

    - на первой в Name пишем btnLoadReport, в Text - LoadReport
    - во второй в Name пишем btnExportCrystalReportViewer, в Text - ExportCrystalReportViewer



  3. Потом на форму переносим TextBox (в Name прописываем tbCustomerID) и Label (в Text прописываем SearchCustomerID)

  4. Переносим на форму CrystalReportViewer

  5. Добавляем в проект компонент CrystalReport

    - кликаем правой кнопкой мыши на названии проекта в SolutionExplorer (как показано на рисунке внизу)

    - нажимаем Add New Item, в открывшемся окне находим CrystalReport и нажимаем Open



  6. Теперь в окне выбираем "As a Blank Report" и нажимаем OK



  7. В открывшемся окне в Field Explorer нажимаем на Add/Remove Database, как показано ниже



  8. Кликаем на OLE DB(ADO)



  9. Выбираем Microsoft OLE DB Provider for SQL Server , потом на Next



  10. В поле Server пишите имя своего ПК, все остальное выбираете как показано на картинке, потом нажимаете Next, а в следующем окне - Finish

    Для успешности соединения с SQL Server проверьте его настройки безопасности по Authontefication (должны соответствовать рисунку ниже)



  11. В Database Expert выбираете таблицу Customers, потом OK



  12. В поле Details помещаем Text Object,



  13. Растягиваем этот Text Object, нажимаем Edit Text Object,

    потом помещаем туда шаблон какого-либо документа, например этот:

    **********************************************************************************
    					ДОГОВОР №______
    	на предоставление информационных услуг по трудоустройству кандидату  []
     
       г.[ ]                                             "____" ______________ 200_ г.
    
    
    ООО "Остап Бендер&Копыта Паниковского",  именуемое в дальнейшем АГЕНТ, в лице индивидуального 
    предпринимателя Бендера Остапа Ибрагимовича, действующей на основании свидетельства  
    № 4354545- ИП002519    от 17.08.2001 г.  и [ ],   именуемое в дальнейшем КАНДИДАТ,  
    заключили настоящий договор, о нижеследующем:
    
    I.	ПРЕДМЕТ ДОГОВОРА:
    	1.1.	АГЕНТ, за вознаграждение, оказывает информационные  услуги по трудоустройству 
    		КАНДИДАТУ, в соответствии с его специальностью, образования и др. требований.
    	1.2.	Условия работы кандидатов определяется в заявке, заполненной и подписанной 
    		между работодателем и АГЕНТОМ.
    	1.3.	КАНДИДАТ обязуется оплатить услуги по трудоустройству АГЕНТУ в сумме, оговоренной 
    		в данном договоре, в сроки установленные настоящем договором. 
    II.	ОБЯЗАТЕЛЬСТВА И ОТВЕТСТВЕННОСТЬ СТОРОН:
    	2.1.	АГЕНТ обязуется оказывать информационные услуги по трудоустройству КАНДИДАТА 
    		в соответствии с его ожиданиями, возможностями и навыками, оговоренными в 
    		анкете кандидата.
    	2.2.	КАНДИДАТ  обязуется предоставить полную и достоверную информацию о своем трудовом 
    		опыте, о личных и деловых качествах, согласно утвержденному перечню документов в 
    		установленном порядке.
    	
    
    КАНДИДАТ:__________________________          АГЕНТ:______________________________
    ______________________________________       ___________________________________________
    ______________________________________       ___________________________________________
    ______________________________________       ___________________________________________
    ______________________________________       ___________________________________________
    

    В отмеченные скобками "[]"места документа будут вноситься поля отчета.



  14. Переносим мышкой из Field Explorer(из Database Field /Customers) в текстовое поле CustomerID, CompanyName, City.



  15. Переходим на дизайнер формы (Form1.cs (или Form1.vb)

  16. Переносим на Form1 SqlDataAdapter, в Query Builder строим запрос

    Нажимаем Next

    Выбираем Customers и нажимаем Add, потом Close

    В Query Builder приводим к такому виду, далее - ОК

    Далее Next, а на след странице - Finish



  17. Нажимаем двойным кликом кнопку LoadReport

    С#-код

    После using System.Data; вставляем
    using CrystalDecisions.Shared;
    using CrystalDecisions.CrystalReports.Engine;
    

    а в обработчике нажатия кнопки btnLoadReport

    CrystalReport1 myReport = new CrystalReport1();
    DataSet myDataSet = new DataSet() ;
    sqlDataAdapter1.SelectCommand.Parameters["@CustomerID"].Value = tbCustomerID.Text;
    sqlDataAdapter1.Fill(myDataSet, "Customers");
    myReport.SetDataSource(myDataSet);
    crystalReportViewer1.ReportSource = myReport;
    

    VB.NET-код

    Над public class Form1 вставляем Imports CrystalDecisions.CrystalReports.Engine, а в обработчике нажатия кнопки btnLoadReport заносим

    Dim myReport As New CrystalReport1
            Dim myDataSet As New DataSet
            SqlDataAdapter1.SelectCommand.Parameters("@CustomerID").Value = tbCustomerID.Text
            SqlDataAdapter1.Fill(myDataSet, "Customers")
            myReport.SetDataSource(myDataSet)
            CrystalReportViewer1.ReportSource = myReport
    



  18. Для создания события экспорта, дважды кликаем по btnExportCrystalReportViewer, и вносим

    С#-код

    CrystalReport1 myReport = new CrystalReport1();
    DataSet myDataSet = new DataSet() ;
    sqlDataAdapter1.SelectCommand.Parameters["@CustomerID"].Value = tbCustomerID.Text;
    sqlDataAdapter1.Fill(myDataSet, "Customers");
    myReport.SetDataSource(myDataSet);
    crystalReportViewer1.ReportSource = myReport;
    ExportOptions exportOpts = new ExportOptions();
    DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions();
    exportOpts = myReport.ExportOptions;
    exportOpts.ExportFormatType = ExportFormatType.WordForWindows;
    exportOpts.ExportDestinationType = 	ExportDestinationType.DiskFile;
    diskOpts.DiskFileName = "C:/report.doc";
    exportOpts.DestinationOptions = diskOpts;
    myReport.Export();
    MessageBox.Show("Отчет был экспортирован");	
    

    VB.NET-код

    Dim myReport As New CrystalReport1
    Dim myDataSet As New DataSet
    SqlDataAdapter1.SelectCommand.Parameters("@CustomerID").Value = tbCustomerID.Text
    SqlDataAdapter1.Fill(myDataSet, "Customers")
    myReport.SetDataSource(myDataSet)
    CrystalReportViewer1.ReportSource = myReport
    Dim myExportOptions As New CrystalDecisions.Shared.ExportOptions
    Dim myDiskFileDestinationOptions As New CrystalDecisions.Shared.DiskFileDestinationOptions
    Dim myFormatTypeOptions As New CrystalDecisions.Shared.PdfRtfWordFormatOptions
    myDiskFileDestinationOptions.DiskFileName = "C:\report.doc"
    myExportOptions = myReport.ExportOptions
    With myExportOptions
        .ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile
        .ExportFormatType = CrystalDecisions.[Shared].ExportFormatType.WordForWindows
        .DestinationOptions = myDiskFileDestinationOptions
        .FormatOptions = myFormatTypeOptions
    End With
    myReport.Export()
    MsgBox("Отчет был экспортирован")
    


  19. Тестируем форму. Вводим в поле tbCustomerID значение из столбца CustomerID таблицы Customers. Например folig (или arout). Нажимаем LoadReport, а потом ExportCrystalReportViewer. И … отчет готов (по умолчанию он экспортируется на диск C:, в файл report.doc)

Может пригодится:


Автор: Топоровский Александр
Прочитано: 5864
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (0)

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру