ส่งค่าของ Form ไปให้ Crystalreport

ปกติเคยส่งแต่ค่าเดียวไป ไม่เคยส่งหลายค่า โดยการใช้ ตัว crystal wizard ช่วย
ต่อไปนี้เป็นการส่งค่าตัวแปร ตั้งแต่ 2 ค่าขึ้นไป ให้แสดงหรือนำค่าที่ได้ไปเป็นเงื่อนไขในการ query ข้อมูล

  • 1.Add new Item ลงไปในโปรเจคของเราโดยเลือกเป็นแบบ report แล้วเลือก crystalreport. ตั้งชื่อตามใจชอบ
  • 2.เลือกการเชื่อมต่อกับฐานข้อมูล ตามแต่ละคนจะใช้งาน
  • 3.เลือกฐานข้อมูลที่ที่จะเชื่อมต่อ และเลือกตารางที่จะแสดงรายงาน
  • 4.ออกแบบหน้ารายงานตามปกติ
  • 5.สร้างฟอร์มวินโดวส์ฟอร์มตามปกติ โดยออกแบบหน้าฟอร์มตามใจชอบ อย่างของผมก็ตามรูป มีช่อง textbox 2 ตัว และ ปุ่มดึงข้อมูลอีก 1 ปุ่ม

  • 6.จากนั้นเพิ่ม crystalReportviewer ลงไปในฟอร์มในข้อ 5
  • 7.dbclick ที่ปุ่ม ดึงข้อมูล เพื่อเพิ่ม event ลงไป

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;//เพิ่มบรรทัดนี้ลงไป
using CrystalDecisions.Shared;//เพิ่มบรรทัดนี้ลงไป

namespace AppSharp
{
public partial class FormManual : Form
{
public FormManual()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
rptManual rpt = new rptManual();//rptManual คือชื่อที่ผมตั้งให้กับ crystalreport ตามข้อ 1

crystalReportViewer1.ReportSource = null;//ตั้งค่าให้มันว่างๆ ไว้ก่อน

crystalReportViewer1.SelectionFormula = “{customers.CustomerID} in ” + textBox1.Text + ” to ” + textBox2.Text;//บรรทัดนี้สำคัญมาก SelectionFormula ทำงานคล้าย sql command คือ เงื่อนไขในการแสดงค่า (คล้ายๆ where clause ใน sql) ตัวอย่าง customers.CustomerID คือ ชื่อตาราง.ชื่อฟิลด์ ที่เราจะใช้เป็นเงื่อนไข in ค่าเริ่มต้น to ค่าสิ้นสุด

ตัวอย่างคือ ผมจะแสดงข้อมูลของ customers(เงื่อนไขคือค่าในฟิลด์ CustomerID ) โดยกำหนดจำนวนการแสดงได้ว่าจะแสดงครั้งล่ะ กี่คน textBox1 คือค่าเริ่มต้น textBox2 คือค่าสิ้นสุด
crystalReportViewer1.ReportSource = rpt;//สั่งแสดงผล
crystalReportViewer1.Refresh();//สั่งให้รีเฟรช
}
}
}

Don't be shellfish...Share on FacebookTweet about this on TwitterShare on Google+Digg thisPin on PinterestShare on Reddit

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *