ตัวอย่างนี้ใช้การเชื่อมต่อกับฐานข้อมูล SQL Server ตารางชื่อ customer
customer
USE [mydatabase]
GO
/****** Object: Table [dbo].[customer] Script Date: 03/13/2012 13:42:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[customer](
[CustomerID] [varchar](4) NOT NULL,
[Name] [varchar](50) NULL,
[Email] [varchar](50) NULL,
[CountryCode] [varchar](2) NULL,
[Budget] [float] NULL,
[Used] [float] NULL,
CONSTRAINT [PK_customer] PRIMARY KEY CLUSTERED
(
[CustomerID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
INSERT INTO customer VALUES ('C001', 'Win Weerachai', '[email protected]', 'TH', 1000000, 600000);
INSERT INTO customer VALUES ('C002', 'John Smith', '[email protected]', 'EN', 2000000, 800000);
INSERT INTO customer VALUES ('C003', 'Jame Born', '[email protected]', 'US', 3000000, 600000);
INSERT INTO customer VALUES ('C004', 'Chalee Angel', '[email protected]', 'US', 4000000, 100000);
GO
SET ANSI_PADDING OFF
นำ Query ไปรันเพื่อสร้าง table
เริ่มต้นด้วยการสร้าง Project เป็น ASP.NET Application หรือ ASP.NET WebSite
เลือกหน้าจอดังรูป
ขั้นตอนแรกให้สร้าง Class ขึ้นมาตัวหนึ่ง
กลับมาที่ Project ให้คลิกขวาที่ Project -> Add -> New Item เพื่อสร้างรายการใหม่
เลือกเป็น Class ตั้ชื่อเป็น myClass.vb (สำหรับ VB.NET) หรือ myClass.cs (สำหรับ C#)
ใส่คำสั่งดังต่อไปนี้
สำหรับ VB.NET
Public Class myReport
Public Property CustomerID() As Integer
Get
Return sCustomerID
End Get
Set(ByVal value As Integer)
sCustomerID = value
End Set
End Property
Public Property Name() As Integer
Get
Return sName
End Get
Set(ByVal value As Integer)
sName = value
End Set
End Property
Public Property Email() As Integer
Get
Return sEmail
End Get
Set(ByVal value As Integer)
sEmail = value
End Set
End Property
Public Property CountryCode() As Integer
Get
Return sCountryCode
End Get
Set(ByVal value As Integer)
sCountryCode = value
End Set
End Property
Public Property Budget() As Integer
Get
Return sBudget
End Get
Set(ByVal value As Integer)
sBudget = value
End Set
End Property
Public Property Used() As Integer
Get
Return sUsed
End Get
Set(ByVal value As Integer)
sUsed = value
End Set
End Property
Public sCustomerID As String
Public sName As String
Public sEmail As String
Public sCountryCode As String
Public sBudget As String
Public sUsed As String
End Class
สำหรับ C#
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
public class myReport
{
public string CustomerID
{
get;
set;
}
public string Name
{
get;
set;
}
public string Email
{
get;
set;
}
public string CountryCode
{
get;
set;
}
public int Budget
{
get;
set;
}
public int Used
{
get;
set;
}
}
กลับมาที่หน้า Web Form (.aspx) จากนั้นให้ลาก Control ชื่อ CrystalReportViewer มาใส่ใน WebForm จากนั้นให้สร้าง Event ของ Page_Load() ใส่ code ดังต่อไปนี้
Code VB.NET
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data
Imports System.Data.SqlClient
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim objConn As New SqlConnection
Dim objCmd As New SqlCommand
Dim dtAdapter As New SqlDataAdapter
Dim ds As New DataSet
Dim dt As DataTable
Dim strConnString, strSQL As String
strConnString = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase;Max Pool Size=400;Connect Timeout=600;"
strSQL = "SELECT * FROM customer ORDER BY CustomerID ASC "
objConn.ConnectionString = strConnString
With objCmd
.Connection = objConn
.CommandText = strSQL
.CommandType = CommandType.Text
End With
dtAdapter.SelectCommand = objCmd
dtAdapter.Fill(ds, "myReport")
dt = ds.Tables(0)
dtAdapter = Nothing
objConn.Close()
objConn = Nothing
Dim rpt As New ReportDocument()
rpt.Load(Server.MapPath("CrystalReport1.rpt"))
rpt.SetDataSource(dt)
Me.CrystalReportViewer1.ReportSource = rpt
End Sub
End Class
Code C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CrystalDecisions.CrystalReports.Engine;
using System.Data;
using System.Data.SqlClient;
namespace CrystalReportClassCS
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection objConn = new SqlConnection();
SqlCommand objCmd = new SqlCommand();
SqlDataAdapter dtAdapter = new SqlDataAdapter();
DataSet ds = new DataSet();
DataTable dt = null;
string strConnString = null;
string strSQL = null;
strConnString = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase;Max Pool Size=400;Connect Timeout=600;";
strSQL = "SELECT * FROM customer ORDER BY CustomerID ASC ";
objConn.ConnectionString = strConnString;
var _with1 = objCmd;
_with1.Connection = objConn;
_with1.CommandText = strSQL;
_with1.CommandType = CommandType.Text;
dtAdapter.SelectCommand = objCmd;
dtAdapter.Fill(ds, "myReport");
dt = ds.Tables[0];
dtAdapter = null;
objConn.Close();
objConn = null;
ReportDocument rpt = new ReportDocument();
rpt.Load(Server.MapPath("CrystalReport1.rpt"));
rpt.SetDataSource(dt);
this.CrystalReportViewer1.ReportSource = rpt;
}
}
}
หลังจากวาง Code เรียบร้อยแล้ว ลองกดที่ Run เพื่อดูผลลัพธ์ของ Report
ทดสอบการรัน Report ผ่านหน้า Web จะได้ผลเหมือนในรูป