 |
|
บันทึกข้อมูลแล้วให้พริ้นออกทางเครื่องพิมพ์เลยโดยไม่ต้อง preview และกำหนดขนาดกระดาษและเครื่องพิมพ์ได้ไหมครับ |
|
 |
|
|
 |
 |
|
ตอนนี้ทำผมรายงานโดยสร้าง dataset แล้วเขียน sql ส่งค่าไปยัง crystal report ก่อนออกรายงานตามตัวอย่างนี้(อธิบายถูกไหมหว่า)
https://www.thaicreate.com/dotnet/crystal-report-dataset-datatable.html
อันนี้คือต้องมี textbox ส่งค่าไปแล้วออกรายงาน อันนี้เป็นโค้ดที่ำตามตัวอย่างครับ
Code (C#)
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 System.IO;
using MySql.Data.MySqlClient;
using System.Diagnostics;
using CrystalDecisions.CrystalReports.Engine;
using Microsoft.VisualBasic;
namespace student
{
public partial class UserReport : Form
{
ClassConnectDB Connect = new ClassConnectDB();
public UserReport()
{
InitializeComponent();
}
private void btnReport_Click(object sender, EventArgs e)
{
Connect.ConnectDB();//ติดต่ฐานข้อมูล
String strSQL;
DataTable dt = null;
strSQL = "SELECT user_id,user_name,user_address,user_province";
strSQL += ",user_zipcode,user_mail,user_phone FROM user where user_id like '%" + txtId.Text + "%' ";
MySqlDataAdapter adapter;
MySqlCommand objCmd;
objCmd = new MySqlCommand(strSQL, Connect.objConn);//ประมวลผล
adapter = new MySqlDataAdapter(objCmd);//เก็บข้อมูลไว้ที่ data adapter
DataSet data = new DataSet();//สร้าง data set
adapter.Fill(data, "user");//เก็บข้อมูลไว้ใน data set
dt = data.Tables[0];
adapter = null;
Connect.DisConnectDB();//ปิดฐานข้อมูล
Connect.objConn = null;//กำหนดค่าว่างให้ตัวแปร objConn
ReportDocument rpt = new ReportDocument();
string directory = AppDomain.CurrentDomain.BaseDirectory;
//use using System.IO;
//string directory = Path.GetDirectoryName(Application.ExecutablePath);
rpt.Load(directory +"..\\..\\UserCrystalReport.rpt");
// rpt.Load("E:\\BCShop\\student\\Project\\student\\UserCrystalReport.rpt");
rpt.SetDataSource(dt);
this.crystalReportViewer1.ReportSource = rpt;
this.crystalReportViewer1.Refresh();
}
}
}
ถ้าต้องการบันทึกข้อมูล เสร็จแล้วนำข้อมูลนั้นมาพิมพ์รายงานออกทางเครื่องพิมพ์เลยต้องทำอย่างไรครับ
แล้วจะกำหนดขนาดกระดาษของรายงานได้ไหมครับที่ไม่ใช่ A4
Tag : .NET, MySQL, Crystal Report, Win (Windows App), C#, VS 2008 (.NET 3.x)
|
ประวัติการแก้ไข 2012-05-30 20:06:25
|
 |
 |
 |
 |
Date :
2012-05-30 20:02:33 |
By :
narubet |
View :
2507 |
Reply :
3 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมลาก ReportDocument มาวางบนฟร์อมทีมี ที่มี reportviewer อยู่ แล้วผมเขียนโค้ดดังนี้
เมื่อผมใส่รหัสที่ต้องการ แล้วกดปุ่ม btnReport_Click มันก็จะทำงานที่ printDocument1_PrintPage มันก็พิมพ์กระดาษออกมาได้ครับ แต่ไม่มีข้อมูล ผมต้องเอาข้อมูลมาผูกยังไงกับเครื่องพิมครับ
Code (C#)
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 System.IO;
using MySql.Data.MySqlClient;
using System.Diagnostics;
using CrystalDecisions.CrystalReports.Engine;
using Microsoft.VisualBasic;
using CrystalDecisions.Shared;
using System.Drawing.Printing;
namespace student
{
public partial class UserReport : Form
{
ClassConnectDB Connect = new ClassConnectDB();
public UserReport()
{
InitializeComponent();
}
private void btnReport_Click(object sender, EventArgs e)
{
printDocument1.Print();
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Connect.ConnectDB();//ติดต่ฐานข้อมูล
String strSQL;
DataTable dt = null;
strSQL = "SELECT user_id,user_name,user_address,user_province";
strSQL += ",user_zipcode,user_mail,user_phone FROM user where user_id like '%" + txtId.Text + "%' ";
MySqlDataAdapter adapter;
MySqlCommand objCmd;
objCmd = new MySqlCommand(strSQL, Connect.objConn);//ประมวลผล
adapter = new MySqlDataAdapter(objCmd);//เก็บข้อมูลไว้ที่ data adapter
DataSet data = new DataSet();//สร้าง data set
adapter.Fill(data, "user");//เก็บข้อมูลไว้ใน data set
dt = data.Tables[0];
adapter = null;
Connect.DisConnectDB();//ปิดฐานข้อมูล
Connect.objConn = null;//กำหนดค่าว่างให้ตัวแปร objConn
ReportDocument rpt = new ReportDocument();
string directory = AppDomain.CurrentDomain.BaseDirectory;
rpt.Load(directory + "..\\..\\UserCrystalReport.rpt");
rpt.SetDataSource(dt);
}
}
}
|
ประวัติการแก้ไข 2012-05-31 14:22:03
 |
 |
 |
 |
Date :
2012-05-31 14:20:20 |
By :
narubet |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2012-05-31 06:06:05
รายละเอียดของการตอบ ::
ถ้าผมทำตามคำแนะนำด้านมันเออเรอว่า The RPC server is unavailable ผมลองไปค้นหาเค้าบอกว่าให้ไป start service RPC แต่ก็ยังไม่ได้ครับ
Code (C#)
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 System.IO;
using MySql.Data.MySqlClient;
using System.Diagnostics;
using CrystalDecisions.CrystalReports.Engine;
using Microsoft.VisualBasic;
using CrystalDecisions.Shared;
using System.Drawing.Printing;
namespace student
{
public partial class UserReport : Form
{
ClassConnectDB Connect = new ClassConnectDB();
public UserReport()
{
InitializeComponent();
}
private void btnReport_Click(object sender, EventArgs e)
{
Connect.ConnectDB();//ติดต่ฐานข้อมูล
String strSQL;
DataTable dt = null;
strSQL = "SELECT user_id,user_name,user_address,user_province";
strSQL += ",user_zipcode,user_mail,user_phone FROM user where user_id like '%" + txtId.Text + "%' ";
MySqlDataAdapter adapter;
MySqlCommand objCmd;
objCmd = new MySqlCommand(strSQL, Connect.objConn);//ประมวลผล
adapter = new MySqlDataAdapter(objCmd);//เก็บข้อมูลไว้ที่ data adapter
DataSet data = new DataSet();//สร้าง data set
adapter.Fill(data, "user");//เก็บข้อมูลไว้ใน data set
dt = data.Tables[0];
adapter = null;
Connect.DisConnectDB();//ปิดฐานข้อมูล
Connect.objConn = null;//กำหนดค่าว่างให้ตัวแปร objConn
ReportDocument rpt = new ReportDocument();
string directory = AppDomain.CurrentDomain.BaseDirectory;
rpt.Load(directory + "..\\..\\UserCrystalReport.rpt");
rpt.SetDataSource(dt);
rpt.PrintToPrinter(1, false, 0, 0);
}
}
}
|
 |
 |
 |
 |
Date :
2012-05-31 14:34:27 |
By :
narubet |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|