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

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

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

CrystalReports (web services), шаг за шагом

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

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

1. Создаем новый проект (File/New/ASP.NET Web Service), с именем WebServiceCRVB1

2. Добавляем в проект компонент CrystalReport1.rpt (при создании выбираете As Blank Report)

3. Подключаетесь к базе данных Northwind

Выбрав провайдер Microsoft OLE DB Provider for SQL Server, далее - Next

Заполняете информацию по подключению (в Server - имя вашего ПК, где размещена база данных Northwind)

Нажимаете Next, потом Finish

Переносите таблицу Orders и нажимаете OK

4. Методом drag-and-drop переносите из FieldExplorer в поле Details объекты OrderID, CustomerID, ShipCity и ShipCountry

5. Публикуем CrystalReport1.rpt (в результате в проекте появляется файл CrystalReport1Service.asmx)

6. Создаем приложение Win-клиент путем добавления в Solution WebServiceCRSh (для VB.Net - "WebServiceCRVB1") новый проект WinClientCRSh (для VB.Net "WinClientWebServiceCRVB") (из Windows Application)

7. В проекте WinClientCRSh (для VB.Net - "WinClientWebServiceCRVB") переносим на дизайнер форм Form1.cs (для VB.Net - Form1.vb) компоненты CrystalReportViewer1 и кнопку (называем её btnLoadReport)

8. Добавляем Web Reference на CrystalReport1Service.asmx

Нажимаем Add Reference

8. Дважды кликаем по кнопке btnLoadReport и в обработчик события вписываем следующий код:

С#-код:

private void btnLoadReport_Click(object sender, System.EventArgs e)
{
wscr.CrystalReport1Service wscr = new WinClientCRSh.wscr.CrystalReport1Service();
crystalReportViewer1.ReportSource = new wscr.CrystalReport1Service();
}
 
(После using System.Data; вставляем 
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
)

VB.NET-код

Dim wscr As WinClientCRVB1.wscr.CrystalReport1Service
wscr = New WinClientCRVB1.wscr.CrystalReport1Service
CrystalReportViewer1.ReportSource = New wscr.CrystalReport1Service
 

(предварительно перед Public Class Form1 вставляем Imports CrystalDecisions.CrystalReports.Engine)

9. Ставим проектом по умолчанию WinClientCRSh (для VB.Net - "WinClientWebServiceCRVB")

10. Компилируем проект и запускаем.

11. Теперь перейдем к добавлению к web-сервису логики работы с параметрическими запросами.

12. Переходим на проект WebServiceCRSh (для VB.Net - "WebServiceCRVB1"), открываем дизайнер (Service1.asmx) переносим на него SqlDataAdapter1, конструируем запрос: SELECT * FROM Orders WHERE (ShipCountry = @ShipCountry) (см рисунок)

13. После двойного клика на Service1.cs (Service1.vb), в области кода вписываем метод Web service-а (см рисунок)

С#-код:

[WebMethod]
public DataSet LoadReport(string ShipCountry)
{
DataSet ds;
ds = new DataSet();
sqlDataAdapter1.SelectCommand.Parameters["@ShipCountry"].Value = ShipCountry;
sqlDataAdapter1.Fill(ds);
return ds;
   }
}

VB-код:

<WebMethod()> Public Function LoadReport(ByVal ShipCountry As String) As DataSet
Dim ds As New DataSet
SqlDataAdapter1.SelectCommand.Parameters("@ShipCountry").Value = ShipCountry
SqlDataAdapter1.Fill(ds)
Return ds
End Function

14. Тестируем web-service (запускаем на выполнение, при выполнении функции LoadReport вводим в поле ShipCountry значение USA (или Germany) и нажимаем Invoke)

15. После этого переходим в Win-клиент, где добавляем кнопку btnParameterLoadReport и элемент управления Textbox (переименовываем в tbShipCountry)

16. В корневую папку исполняемого файла win-клиента (WinClientCRSh (для VB.Net - "WinClientWebServiceCRVB"); имя файла WinClientCRSh.exe (для VB.Net WinClientWebServiceCRVB.exe)) переносим CrystalReport1.rpt (WebServiceCRSh (для VB.Net - "WebServiceCRVB1")).

17. Двойным кликом по кнопке btnParameterLoadReport создаем обработчик события нажатия кнопки, куда и вписываем следующий код:

С#-код:

private void btnParameterLoadReport_Click(object sender, System.EventArgs e)
              {
              ws.Service1 ws = new WinClientCRSh.ws.Service1();
        DataSet myDataSet = new DataSet();
              ReportDocument myReport = new ReportDocument();
        string ShipCountry;
        ShipCountry = tbShipCountry.Text;
        myDataSet.Merge(ws.LoadReport(ShipCountry));
        myReport.Load("CrystalReport1.rpt");
        myReport.SetDataSource(myDataSet);
        crystalReportViewer1.ReportSource = myReport;
}

VB-код:

Private Sub btnParameterLoadReport_Click(ByVal 
			sender As System.Object, ByVal e As 
			System.EventArgs) Handles btnParameterLoadReport.Click
        Dim ws As WinClientWebServiceCRVB.ws.Service1
        ws = New WinClientWebServiceCRVB.ws.Service1
        Dim myDataSet As New DataSet
        Dim ShipCountry As String
        ShipCountry = tbShipCountry.Text
        myDataSet.Merge(ws.LoadReport(ShipCountry))
        Dim myReport As New ReportDocument
        myReport.Load("CrystalReport1.rpt")
        myReport.SetDataSource(myDataSet)
        CrystalReportViewer1.ReportSource = myReport
    End Sub
 

18. Нажимаем F5 и тестируем web-сервис.


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


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

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

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

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