Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,025

HOME > .NET Framework > การสร้าง Crystal Report กับการสร้าง Class และ DataSource (.NET)




Clound SSD Virtual Server

การสร้าง Crystal Report กับการสร้าง Class และ DataSource (.NET)

 
  การสร้าง Crystal Report กับการสร้าง Class และ DataSource (.NET) บทความก่อน ๆ เกี่ยวกับ Crystal Report จะเป็นการใช้ผ่าน Wizard หรือการเขียน DataSource บน Crystal Report แต่วิธีนี้จะใช้การสร้าง Class ใน .NET Framework เพื่อรองรับค่าที่จะสร้างจาก DataSet และ DataTable โดยการสร้าง Class ที่มี Property ที่จะรองรับ Column ที่สามารถนำไปใช้บน Crystal Report ผ่านการกำหนดค่าหรือสร้างค่าจาก Database ในรูปแบบของ DataSet/DataTable หรือจะเป็นค่าอื่น ๆ จาก List หรือ Array List ก็สามารถทำได้เช่นเดียวกัน สำหรับตัวอย่างนี้จะใช้การอ่านค่าจาก Database ในรูปแบบของ DataSet และ DataTable


โครงสร้าง Database

Crystal Report Class .NET

ตัวอย่างนี้ใช้การเชื่อมต่อกับฐานข้อมูล 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

Crystal Report Class .NET

เลือกหน้าจอดังรูป


ขั้นตอนแรกให้สร้าง Class ขึ้นมาตัวหนึ่ง

Crystal Report Class .NET

กลับมาที่ Project ให้คลิกขวาที่ Project -> Add -> New Item เพื่อสร้างรายการใหม่


Crystal Report Class .NET

เลือกเป็น 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;
    }
}


จากนั้นให้ทำการ Build Project ให้เรียบร้อย

เพิ่มเติม
จะเห็นว่าใน myClass มีการสร้าง Property ที่มีชื่อเดียวกับใน Table customer ทั้งนี้เพื่อไว้รองรับค่า DataSet และ DataTable ซึ่งจะประกอบด้วย

- CustomerID
- Name
- Email
- CountryCode
- Budget
- Used









สร้าง Report

Crystal Report Class .NET

กลับมาที่ Project ให้คลิกขวาที่ Project -> Add -> New Item เพื่อสร้างรายการใหม่


Crystal Report Class .NET

เลือก Crystal Report และกำหนดชื่อให้เรียบร้อย


Crystal Report Class .NET

จะมีหน้าต่าง Pop ให้เลือกแบบ Wizard ของ Crystal Report และให้เลือก Using the Report Wizard และ OK เพื่อข้ามไปขั้นตอนถัดไป


Crystal Report Class .NET

ในส่วนนี้ให้เลือกที่ Project Data -> .NET Project เลือก Class ที่ชื่อว่า myReport หรือ NameSpace ตามด้วย ชื่อ Class ดังรูป


Crystal Report Class .NET)

จะเห็นว่าจะมีชื่อ Column ที่เราได้สร้างรองรับจากการสร้าง Class ให้เลือกทั้งหมด หรือจะเลือกเฉพาะ Column ที่ต้องการก็ได้ และคลิกที่ Finish เพื่อเสร็จสิ้นการออกแบบ แต่ถ้าหากต้องการกำหนดค่าอื่น ๆ ของ Report ลองคลิกที่ Next เพื่อปรับแต่ง Report ในรูปแบบต่าง ๆ ในมุมมองของ Wizard


Crystal Report Class .NET

หน้าตา Design Report ที่สามารถปรับแต่งรายละเอียดอื่น ๆ ได้ตามความต้องการ


Crystal Report Class .NET

กลับมาที่หน้า 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

Crystal Report Class .NET

ทดสอบการรัน Report ผ่านหน้า Web จะได้ผลเหมือนในรูป

จากตัวอย่างจะเห็นว่ามีการเลือกข้อมูลจาก table ชื่อ customer ใช้ ADO.NET อ่านข้อมูลในรูปแบบของ DataSet และการกำหนดค่าให้กับ dtAdapter.Fill(ds, "myReport") ซึ่งเป็นชื่อเดียวกับ Class ที่ใช้กำหนด Column ของข้อมูลใน Crystal Report สำหรับวิธีนี้มี

ประโยชน์ที่ไม่ต้องเขียน Query หรือสร้าง DataSource บน Crystal Report แต่เราสามารถจัดการกับข้อมูลต่าง ๆ ที่อยู่ในโปรแกรมให้เสร็จเรียบร้อย และนำค่าที่ได้โยนให้กับ DataSource ของ Crystal Report ทีเดียว ซึ่งจะช่วยให้การเขียนรายงานนั้นมีความง่าย และ ได้ผลลัพธ์ ตามต้องการ แทนการใช้ Formula หรือจัดการ Data บน Crystal Report

สำหรับตัวย่างนี้ใช้ได้ทั้ง Windows Application และ Web Application (ASP.NET) ซึ่งการใช้งานแทบจะไม่ต่างกันเลย หรือลองอ่านบทความที่เกี่ยวข้อง ซึ่งมีตัวอย่างทั้ง Win App และ Web App และตัรอวย่างในบทความเลือกใช้ทั้งภาษา VB.NET และ C#


Download Code!!









สำหรับบทความอื่น ๆ อยากให้ลองอ่านดูเพราะมีประโยชน์มาก ๆ
Go to : สุดยอดบทความ Crystal Report กับ .NET Framework (VB.NET , C#)


Go to : สร้าง Crystal Report บน Visual Studio (VB.NET , C#) Step by Step
Go to : สร้าง Parameter และ Formula Fields บน Crystal Reports (VB.NET,C#)
Go to : ASP.NET ReportViewer - rsweb:ReportViewer
Go to : ASP.NET and CrystalReportViewer
Go to : ASP.NET แสดงรูปภาพ Image บน Crystal Report แบบ Step by Step (VB.NET / C#)
Go to : การสร้าง Sub Report (Subreport) บน Crystal Report แบบ Step by Step (VB.NET /C#)


       
Bookmark.   
       

 

  By : TC Admin
  Score Rating : -
  Create Date : 2012-03-30 10:11:54
  Download : No files
     

Clound SSD Virtual Server
-->
Related Links
ADO.NET and Oracle  (VB.NET/C#) เขียนโปรแกรมติดต่อกับฐานข้อมูล Oracle Database
ADO.NET and Oracle (VB.NET/C#) เขียนโปรแกรมติดต่อกับฐานข้อมูล Oracle Database
ADO.NETกับฐานข้อมูล Oracle การสร้าง Connection String และการเชื่อมต่อผ่าน TNS Name
Rating :
Update :
2017-03-24 21:28:07 View : 22,062
C# .NET Create Word Document (Windows 7 and Office 2003 , Office Word 2007)
C# .NET Create Word Document (Windows 7 and Office 2003 , Office Word 2007)
ตัวอย่างการใช้ C# ในการสร้างเอกสาร Word (.doc) โดยใช้ Class Library ของ Microsoft.Office.Interop.Word
Rating :
Update :
2017-03-17 22:12:40 View : 11,184
การสร้างฟอร์มด้วย DataGridView เบื้องต้นแบบ Step by Step [ VB.NET (Windows App+SQL Server) ]
การสร้างฟอร์มด้วย DataGridView เบื้องต้นแบบ Step by Step [ VB.NET (Windows App+SQL Server) ]
การสร้างฟอร์มด้วย DataGridView เบื้องต้นแบบ Step by Step Development Tool: Visual Studio 2010 Express Database Engine: MS SQL Server 2005 Express
Rating :
Update :
2011-07-24 19:33:14 View : 19,630
.NET Parameterized Queries
.NET Parameterized Queries
.NET Parameterized Queries
Rating :
Update :
2017-03-24 21:20:12 View : 10,714
ASP.NET กับแนวคิดการออกแบบ WebPage การวาง Layout ของหน้าเว็บและการเปลี่ยน URL
ASP.NET กับแนวคิดการออกแบบ WebPage การวาง Layout ของหน้าเว็บและการเปลี่ยน URL
บทความนี้เป็นเทคนิคและแนวคิดการวาง Layout โครงสร้างหน้า Webpage บน Web Form ของ ASP.NET ผ่าน Web User Control
Rating :
Update :
2017-03-24 21:15:24 View : 35,420
GridView Ajax and jQuery การสร้าง GridView  บน ASP.NET เพื่อเรียกใช้งาน Ajax กับ jQuery
GridView Ajax and jQuery การสร้าง GridView บน ASP.NET เพื่อเรียกใช้งาน Ajax กับ jQuery
ASP.NET ตัวอย่างการสร้าง GridView และการเรียกใช้งาน Ajax ด้วย jQuery เพื่อเรียกข้อมูลในแต่ละแถวของ GridView แบบง่าย ๆ
Rating :
Update :
2017-03-24 21:30:30 View : 16,595
ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่

Inline