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,037

HOME > .NET Framework > การสร้าง Crystal Report กับ DataSet หรือ DataTable (VB.NET,C#)




Clound SSD Virtual Server

การสร้าง Crystal Report กับ DataSet หรือ DataTable (VB.NET,C#)

 
  การสร้าง Crystal Report กับ DataSet หรือ DataTable (VB.NET,C#) บทความนี้ Advanced ขึ้นมาอีกนิดสำหรับการสร้าง Report ของ Crystal Report กับ DataSet หรือ DataTable ของ .NET Framework เพราะแทนที่เราจะใช้ Wizard Connection ของ Crystal Report ในการ Connect กับ Database แต่เราจะใช้วิธีการสร้าง DataSource ขึ้นมาเองบน .NET Framework ด้วยภาษา VB.NET หรือ C# ผ่าน DataSet และ DataTable วิธีนี้มีประโยชน์ตรงที่เราสามารถจัดการกับ DataSet หรือ DataSource ให้ได้ตรงกับความต้องการแล้ว ค่อยโยนค่าให้กับ DataSource ของ Crystal Report เพื่อทำการแสดงผล Report ออกมา เป็นวิธีหนึ่งที่ช่วยให้การจัดการรัน Result ได้ง่ายยิ่งขึ้น หรือถ้าใครถนัดกับการเขียนผ่าน Formula ของ Crystal Report ก็สามารถทำได้เช่นเดียวกัน

Basic สร้าง Crystal Report บน Visual Studio (VB.NET , C#) Step by Step


สำหรับตัวอย่างนี้จะใช้ Table 2 ตัว คือ
- customer (เป็นตารางเก็บข้อมูล)
- audit (เป้นตารางรายละเอียดลูกค้าใช้ยอดเงิน)

Crystal Report กับ DataSet หรือ DataTable


Crystal Report กับ DataSet หรือ DataTable


แต่หลัก ๆ จะใช้แค่ Table เดียวคือ audit เพื่อจะ Query ข้อมูลของลูกค้ามาโชว์ เหมือนในรูป

Crystal Report กับ DataSet หรือ DataTable

โครงสร้าง ตาราง และข้อมูล ของ SQL Server สำหรับทดสอบ

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









audit
USE [mydatabase]
GO
/****** Object:  Table [dbo].[audit]    Script Date: 03/13/2012 13:45:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[audit](
	[AuditID] [varchar](4) NOT NULL,
	[CustomerID] [varchar](4) NULL,
	[Date] [datetime] NULL,
	[Used] [float] NULL,
 CONSTRAINT [PK_audit] PRIMARY KEY CLUSTERED 
(
	[AuditID] 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 audit VALUES (1, 'C001', '2008-08-01', 100000);
INSERT INTO audit VALUES (2, 'C001', '2008-08-05', 200000);
INSERT INTO audit VALUES (3, 'C001', '2008-08-10', 300000);
INSERT INTO audit VALUES (4, 'C002', '2008-08-02', 400000);
INSERT INTO audit VALUES (5, 'C002', '2008-08-07', 100000);
INSERT INTO audit VALUES (6, 'C002', '2008-08-15', 300000);
INSERT INTO audit VALUES (7, 'C003', '2008-08-20', 400000);
INSERT INTO audit VALUES (8, 'C003', '2008-08-25', 200000);
INSERT INTO audit VALUES (9, 'C004', '2008-07-04', 100000);
INSERT INTO audit VALUES (10, 'C005', '2008-07-04', 200000);

GO
SET ANSI_PADDING OFF


นำ Query ไปรันหรือสร้าง Database ตามโครงสร้าง



มาเริ่มกันเลย

Crystal Report กับ DataSet หรือ DataTable

สร้าง Form ดังรูป ซึ่งประกอบด้วย Control ของ Textbox , Button และ CrystalReportViewer


Crystal Report กับ DataSet หรือ DataTable

ให้คลิกขวาที่ Project -> Add -> New Item


Crystal Report กับ DataSet หรือ DataTable

เลือกสร้าง DataSet


Crystal Report กับ DataSet หรือ DataTable

คลิกขวาที่ Form ของ DataSet -> Add -> DataTable


Crystal Report กับ DataSet หรือ DataTable

จะได้ DataTable ขึ้นมาตัวหนึ่ง ให้คลิกขวาที่ DataTable เลือก Add -> Column เหมือนในรูป

สำหรับ Report นี้เราจะดึงข้อมูลจากตาราง audit มาแสดง จะต้องสร้าง DataTable ฟิวด์รองรับจำนวน DataSource ที่จะสร้าง ซึ่งตอนนี้มีอยู่ 4 ฟิวด์ คือ
- AuditID
- CustomerID
- Date
- Used



Crystal Report กับ DataSet หรือ DataTable

กำหนดชื่อฟิวด์


Crystal Report กับ DataSet หรือ DataTable

สร้างให้ครบทุกฟิวด์ เหมือนในรูป


Crystal Report กับ DataSet หรือ DataTable

เปลี่ยนชื่อ DataTable ใหม่ให้เป็น myDataTable จะได้จดทำง่ายหน่อย ถ้าเรียบร้อยแล้วให้ปิดหน้าจอนี้ไปได้เลย (ตอนนี้ได้สร้าง DataSet และ DataTable ชื่อ myDataTable ไว้แล้ว)


Crystal Report กับ DataSet หรือ DataTable

กลับมาที่ Project ให้คลิกขวาที่ Project -> Add -> New Item


Crystal Report กับ DataSet หรือ DataTable

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


Crystal Report กับ DataSet หรือ DataTable

จะมีหน้าต่าง Pop ขึ้นให้เลือก Using the Report Wizard และ OK


Crystal Report กับ DataSet หรือ DataTable

อันนี้ให้เลือก Project Data-> ADO.NET DataSets -> myDataTable (ที่ได้สร้างไว้ในขั้นตอนการสร้าง DataSet และ DataTable)


Crystal Report กับ DataSet หรือ DataTable

เลือกฟิวด์ Fields ข้อมูลทีต้องการแสดงใน Report และคลิกที่ Finish เพื่อเสร็จสิ้นการออกแบบ แต่ถ้าหากต้องการกำหนดค่าอื่น ๆ ของ Report ลองคลิกที่ Next เพื่อปรับแต่ง Report


Crystal Report กับ DataSet หรือ DataTable

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


Crystal Report กับ DataSet หรือ DataTable

กลับมาที่หน้า Windows Form จากนั้นให้ Click ที่ Button เพื่อสร้าง Event ในการโหลด Report โดยใส่คำสั่งดังนี้

Code VB.NET
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.SqlClient
Public Class frmReport

    Private Sub btnReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReport.Click
        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 audit WHERE CustomerID = '" & Me.txtCustomerID.Text & "' "

        objConn.ConnectionString = strConnString
        With objCmd
            .Connection = objConn
            .CommandText = strSQL
            .CommandType = CommandType.Text
        End With
        dtAdapter.SelectCommand = objCmd

        dtAdapter.Fill(ds, "myDataTable")
        dt = ds.Tables(0)

        dtAdapter = Nothing
        objConn.Close()
        objConn = Nothing

        Dim rpt As New ReportDocument()
        Dim directory As String = My.Application.Info.DirectoryPath
        'rpt.Load(directory & "\myCrystalReport1.rpt")
        rpt.Load("C:\DemoCrystalReport2\DemoCrystalReport2\myCrystalReport1.rpt")
        rpt.SetDataSource(dt)
        Me.CrystalReportViewer1.ReportSource = rpt
        Me.CrystalReportViewer1.Refresh()

    End Sub

End Class


Code C#
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using CrystalDecisions.CrystalReports.Engine;
using System.Data.SqlClient;
public class frmReport
{

	private void btnReport_Click(System.Object sender, System.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 audit WHERE CustomerID = '" + this.txtCustomerID.Text + "' ";

		objConn.ConnectionString = strConnString;
		var _with1 = objCmd;
		_with1.Connection = objConn;
		_with1.CommandText = strSQL;
		_with1.CommandType = CommandType.Text;
		dtAdapter.SelectCommand = objCmd;

		dtAdapter.Fill(ds, "myDataTable");
		dt = ds.Tables[0];

		dtAdapter = null;
		objConn.Close();
		objConn = null;

		ReportDocument rpt = new ReportDocument();
		string directory = My.Application.Info.DirectoryPath;
		//rpt.Load(directory & "\\myCrystalReport1.rpt")
		rpt.Load("C:\\DemoCrystalReport2\\DemoCrystalReport2\\myCrystalReport1.rpt");
		rpt.SetDataSource(dt);
		this.CrystalReportViewer1.ReportSource = rpt;
		this.CrystalReportViewer1.Refresh();

	}

}


หลังจากวาง Code เรียบร้อยแล้ว ลองกดที่ Run เพื่อดูผลลัพธ์ของ Report

Crystal Report กับ DataSet หรือ DataTable

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

จากตัวอย่างจะเห็นว่ามีการใช้ ADO.NET ในการ Connect กับฐานข้อมูล SQL Server Database ผ่าน Connection String และมีการสร้าง DataSet ผ่าน Query

SELECT * FROM audit WHERE CustomerID = '" + this.txtCustomerID.Text + "'


เพื่อรับค่าจาก Textbox จากนั้นจะมีการ Fill ข้อมูลให้กับ DataTable ชื่อ myDataTable (ซึ่งเราได้สร้างไว้ในขั้นตอนการออกแบบ Crystal Report) ซึ่ง Data ที่เรา Query จะต้อง Map และพอดีกับจำนวนฟิวด์ที่ได้ออกแบบไว้ใน Crystal Report จากนั้นเมื่อได้ DataTable ก็จะโยนค่า DataSource ด้วยคำสั่ง rpt.SetDataSource(dt) และ Report ก็จะแสดงข้อมูลตามที่ได้ Query ไว้

Download Code!!








บทความอื่น ๆ ที่เกี่ยวข้อง
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-13 20:37:31
  Download : No files
     

Clound SSD Virtual Server
-->
Related Links
สร้าง Sub Report (Subreport) บน Crystal Report แบบ Step by Step (VB.NET /C#)
สร้าง Sub Report (Subreport) บน Crystal Report แบบ Step by Step (VB.NET /C#)
การสร้าง Sub Report บน Crystal Report และการ Link ข้อมูลระหว่าง Main Report กับ Sub Report รวมทั้งการ Set DataSource ให้กับ Sub Report
Rating :
Update :
2017-03-24 21:34:46 View : 54,929
.NET Console Application เขียนโปรแกรมบน Console Application ด้วย .NET Framework
.NET Console Application เขียนโปรแกรมบน Console Application ด้วย .NET Framework
.NET Console Application เขียนโปรแกรมบน Console Application ด้วย .NET Framework
Rating :
Update :
2017-03-24 21:19:30 View : 42,328
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,294
ASP.NET GridView and Checkbox Select All Row Using jQuery
ASP.NET GridView and Checkbox Select All Row Using jQuery
บทความ ASP.NET การใช้งาน jQuery เพื่อเลือกแถว Checkbox ใน GridView เลือกแถวทั้งหมด หรือไม่เลือกทั้งหมด
Rating :
Update :
2017-03-17 22:11:54 View : 17,232
การสร้าง Crystal Report กับการสร้าง Class และ DataSource (.NET)
การสร้าง Crystal Report กับการสร้าง Class และ DataSource (.NET)
ตัวอย่างการสร้าง class บน .net framework เพื่อสร้าง dataset และ datatable กำหนดค่า datasource ให้กับ crystal report
Rating :
Update :
2017-03-24 21:32:24 View : 22,341
.NET Parameterized Queries
.NET Parameterized Queries
.NET Parameterized Queries
Rating :
Update :
2017-03-24 21:20:12 View : 11,025
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 02
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