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:
    eport.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)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*