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

HOME > .NET Framework > Forum > search ก่อน แล้วโชว์ใน crystal report ถามนิดนึงครับคือผมมีการ search ข้อมูล แล้วก็ เก็บเป็น Session["OrderID"] ไว้



 

search ก่อน แล้วโชว์ใน crystal report ถามนิดนึงครับคือผมมีการ search ข้อมูล แล้วก็ เก็บเป็น Session["OrderID"] ไว้

 



Topic : 024658



โพสกระทู้ ( 219 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook



ถามนิดนึงครับ
คือผมมีการ search ข้อมูล
แล้วก็ เก็บเป็น Session["OrderID"] ไว้
หลังจาก search ก็จะโชว์เป็น กริดวิว
แล้วก็มีปุ่ม View ต่อท้าย
ซึ่งพอกดปุ่ม View ก็จะส่ง เซสชั่นไป หน้า crystal report
แล้วผมจะใช้ เซสชั่น นี้
ในการดึงข้อมูลจาก ฐานข้อมูล ในหน้า crystal report

ผมจะออกแบบประมาณไหนดีอะครับ
คือไม่เคยเล่น crystal report เลย
แล้วเราจะดึงข้อมูลจากฐานข้อมูล
ที่เกี่ยวกับ เซสชั่นนั้น ได้มั๊ย
ทำยังไงอะครับ ต้องใช้ field อะไร เวลาสร้าง

คือจะดึงประมาณว่า orderID นี้ มี product ไรบ้าง
กี่ชิ้น รวมทั้งหมดเป็นเท่าไหร่ ตอนนี้ order status เป็นไง
ซึ่งมัน join ประมาณ 3 เทเบิล ใน ฐานข้อมูลอะครับ
ผมมี คิวรี เรียบร้อยแล้วอะครับ

แล้วจะเอามันไปโชว์ได้ยังไงใน crystal report

string orderID = Session["ordID"].ToString();

string sqlOrder = "select tranOrder.Order_ID as orderID, ";
sqlOrder += "tranOrder.Order_Date as orderDate, ";
sqlOrder += "tranOrder.Order_Time as orderTime, ";
sqlOrder += "(masStaff.Staff_FName + ' ' + masStaff.Staff_LName) as StaffName, ";
sqlOrder += "(masCustomer.Cust_FName + ' ' + masCustomer.Cust_LName) as CustName, ";
sqlOrder += "tranOrder.Order_TotalPrice as orderPrice, ";
sqlOrder += "(tranOrder.Receiver_FName + ' ' + tranOrder.Receiver_LName) as RecvName, ";
sqlOrder += "tranOrder.Receiver_Address as RecvAddress, ";
sqlOrder += "tranOrder.Receiver_Telephone as RecvTelephone, ";
sqlOrder += "tranOrder.Order_Complete as orderStatus ";
sqlOrder += "from masStaff, masCustomer, tranOrder ";
sqlOrder += "where tranOrder.Staff_ID = masStaff.Staff_ID ";
sqlOrder += "and tranOrder.Cust_ID = masCustomer.Cust_ID ";
sqlOrder += "and tranOrder.Order_ID = " + Session["ordID"].ToString();

string sqlOrderDetail = "SELECT DISTINCT Prod_Barcode as Barcode, ";
sqlOrderDetail += "PO_ProdQty as Qty, ";
sqlOrderDetail += "Order_Item_TotalPrice as ItemPrice, ";
sqlOrderDetail += "Prod_Complete as Status ";
sqlOrderDetail += "FROM tranProductOrder ";
sqlOrderDetail += "WHERE Order_ID = " + Session["ordID"].ToString();

string sqlCustomer = "select distinct (masCustomer.Cust_FName + ' ' + masCustomer.Cust_LName) as CustName, ";
sqlCustomer += "masCustomer.Cust_Address as CustAddress, ";
sqlCustomer += "masCustomer.Cust_Tel as CustTelephone ";
sqlCustomer += "from masCustomer, tranOrder ";
sqlCustomer += "where masCustomer.Cust_ID = tranOrder.Cust_ID ";
sqlCustomer += "and tranOrder.Order_ID = " + Session["ordID"].ToString();

SqlDataAdapter da1 = new SqlDataAdapter(sqlOrder, Conn);
DataSet ds1 = new DataSet();
da1.Fill(ds1, "Order");

SqlDataAdapter da2 = new SqlDataAdapter(sqlOrderDetail, Conn);
DataSet ds2 = new DataSet();
da2.Fill(ds2, "OrderDetail");

SqlDataAdapter da3 = new SqlDataAdapter(sqlCustomer, Conn);
DataSet ds3 = new DataSet();
da3.Fill(ds3, "Customer");

Session["dsOrder"] = ds1;
Session["dsOrderDetail"] = ds2;
Session["dsCustomer"] = ds1;


พอดี ในรีพอร์ต ผม แบ่งออกเป็นสามส่วนหลักๆ อะครับ
เลยเก็บไว้คนละ dataset
ถ้ามีไรดีดีแนะนำหน่อยนะครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-02-10 22:28:38 By : mixarstudio View : 4048 Reply : 9
 

 

No. 1



โพสกระทู้ ( 89 )
บทความ ( 0 )



สถานะออฟไลน์


Crystal Report มันมี Parameter field ให้นะครับ ก็ทำ Field สำหรับใส่ orderID แล้วส่งค่าไป

แต่ก่อนอื่นขอถามหน่อย ที่ว่าเพิ่งใช้ Crystal Report นี่ทำ Parameter Fild เป็นรึยังครับ






Date : 2009-02-11 06:34:40 By : Zeve
 


 

No. 2



โพสกระทู้ ( 219 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

สอนด้วยจะดีมากมากเลยครับ
ขอบพระคุณอย่างสูงงงง
Date : 2009-02-11 14:08:47 By : mixarstudio
 

 

No. 3



โพสกระทู้ ( 89 )
บทความ ( 0 )



สถานะออฟไลน์


กำ ก่อนอื่นต้องรู้จักใช้ Parameter Field ของ crystal report และใช้ให้เป็นก่อนนะครับ

หน้าที่ของมันคือทำให้เราเลือกข้อมูลได้ว่าอยากได้ข้อมูลตรงไหน เหมือนใช้ where ของ sql

ต้องหาหนังสืออ่านเอานะครับ มันยาว

พอใช้เป็นแล้ว เดี๋ยวเอาโค้ด ASP.NET C# ติดต่อ Crystal Report ให้
Date : 2009-02-13 01:35:20 By : Zeve
 


 

No. 4



โพสกระทู้ ( 89 )
บทความ ( 0 )



สถานะออฟไลน์


ก่อนอื่นสร้างไฟล์ asp.net C# 1 หน้านะครับ

ลาก Crystal Report Viewer Control มาแปะหน้าจอ น่าจะได้ตัว CrystalReportViewer1 มาโดยอัตโนมัติ ไม่ต้องไปตั้งค่าอะไร

จากนั้น ไปที่หน้า Code Behind ใส่โค้ดประมาณนี้ ดูรายละเอียดที่ผม Comment ไว้นะ



Code Behind (ASP.NET)
using CrystalDecisions.CrystalReports.Engine; //เรียกใช้ 2 แพกเกจนี้ด้วย
using CrystalDecisions.Shared;


public partial class Reciept : System.Web.UI.Page
{
private Tools tool;
protected String result1;
private CrystalDecisions.CrystalReports.Engine.ReportDocument oRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
private CrystalDecisions.CrystalReports.Engine.Tables crTables;
private CrystalDecisions.Shared.TableLogOnInfo crTableLogOnInfo;
private CrystalDecisions.Shared.ConnectionInfo crConnectionInfo = new CrystalDecisions.Shared.ConnectionInfo();
private CrystalDecisions.Shared.ParameterValues crParameterValues;
private CrystalDecisions.Shared.ParameterDiscreteValue crParameterDiscreteValue;
private CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions crParameterFieldDefinitions;
private CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition crParameterFieldDefinition;
protected System.Web.UI.WebControls.Label lblError;

protected void Page_Load(object sender, EventArgs e)
{
int bill_id = 33;
printReport(bill_id);
}

private void printReport(int bill_id)
{
try
{
oRpt.Load(Server.MapPath("Reciept1.rpt")); //<< ใส่ชื่อไฟล์ของ Crystal. และต้องอยู่ Directory เดียวกับไฟล์ aspx ด้วย

// เริ่มกระบวนการ Connect ใส่ข้อมูลสำหรับติดต่อ Database
crConnectionInfo.DatabaseName = "dbname";
crConnectionInfo.ServerName = "(local)";
crConnectionInfo.UserID = "sa";
crConnectionInfo.Password = "password";
crTables = oRpt.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
{
crTableLogOnInfo = crTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
crTable.ApplyLogOnInfo(crTableLogOnInfo);
}
// จบกระบวนการ Connect

crParameterFieldDefinitions = oRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["bill_id"];
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterDiscreteValue = new ParameterDiscreteValue();
crParameterDiscreteValue.Value = bill_id; // ส่งตัวแปรจาก C# ไปให้ Crystal. ตรงนี้ไง
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);

//CrystalReportViewer1.SelectionFormula = "cstr({straff} = 'Woottipong'";
this.CrystalReportViewer1.ReportSource = oRpt;

PageMargins margins;
// Get the PageMargins structure and set the
// margins for the report. เกี่ยวกับช่องว่างกระดาษตอน Print ไม่ต้องเปลี่ยน
margins = oRpt.PrintOptions.PageMargins;
margins.bottomMargin = 350;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 350;

// Apply the page margins.
oRpt.PrintOptions.ApplyPageMargins(margins);

// ใส่ชื่อเครื่อง Print ดูได้จาก Start >> Printer and Faxs
oRpt.PrintOptions.PrinterName = "Epson LX-300+";

// Print the report. Set the startPageN and endPageN
// parameters to 0 to print all pages.

// ถ้าอยาก Print ได้ให้เอา Comment บรรทัดล่างนี้ออก
//oRpt.PrintToPrinter(1, false, 0, 0);
}
catch { }
}
}

Date : 2009-02-13 01:59:48 By : Zeve
 


 

No. 5



โพสกระทู้ ( 89 )
บทความ ( 0 )



สถานะออฟไลน์


private Tools tool;
protected String result1;

^
^
ลืมไปครับ 2 ตัวนี้ไม่ต้องใส่นะ ผมลืมเอาออก(ไม่เอาออก Error แน่ๆ หุหุ) และมีอีกอย่างที่จะบอกถ้ามี Parameter Field หลายตัว ให้ก๊อบโค้ดชุดนี้

Code (C#)
crParameterFieldDefinitions = oRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["bill_id"]; // เปลี่ยนชื่อฟิวตรงนี้
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterDiscreteValue = new ParameterDiscreteValue();
crParameterDiscreteValue.Value = bill_id; // เปลี่ยนค่าตรงนี้
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);



แล้วเปลี่ยนแค่ parameter name ครับ กับ ค่า ครับ ตัวอย่าง ผมจะเพิ่มอีก 2 field

Code (C#)
// จบกระบวนการ Connect

crParameterFieldDefinitions = oRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["bill_id"];
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterDiscreteValue = new ParameterDiscreteValue();
crParameterDiscreteValue.Value = bill_id; // ส่งตัวแปรจาก C# ไปให้ Crystal. ตรงนี้ไง
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);

crParameterFieldDefinitions = oRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["bill_name"]; //เปลี่ยนชือฟิวส์
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterDiscreteValue = new ParameterDiscreteValue();
crParameterDiscreteValue.Value = "Normal Bill"; // เปลี่ยนค่า
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);

crParameterFieldDefinitions = oRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["bill_stat"]; //เปลี่ยนชื่อฟิวส์
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterDiscreteValue = new ParameterDiscreteValue();
crParameterDiscreteValue.Value = "active"; // เปลี่ยนค่า
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);


//CrystalReportViewer1.SelectionFormula = "cstr({straff} = 'Woottipong'";
this.CrystalReportViewer1.ReportSource = oRpt;

Date : 2009-02-13 02:13:28 By : Zeve
 


 

No. 6



โพสกระทู้ ( 219 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ขอบคุณครับ ผมพอรู้จัก parameter field อยู่บ้าง
แต่พวกหนังสือ ก็ไม่ได้สอนอะไรลึกขนาดนี้

ยังไงผมจะลองดูนะครับ ขอบคุณมากครับที่ให้คำแนะนำมากมายขนาดนี้
Date : 2009-02-13 21:30:54 By : mixarstudio
 


 

No. 7

Guest


แล้วถ้าผมใช้ Windows Authentication ล่ะครับ
ไม่ได้ใช้ sa ในการ login ผมจะ connect ยังไงครับ
Date : 2009-02-18 14:13:32 By : mixarstudio
 


 

No. 8



โพสกระทู้ ( 219 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

crParameterDiscreteValue.Value = bill_id; // ส่งตัวแปรจาก C# ไปให้ Crystal. ตรงนี้ไง

อย่างบรรทัดนี้ ก็คือ ส่งค่า bill_id มาจาก C# ใช่ปะ

คือผมมี แค่ orderID อะ ที่ส่งค่ามาหน้านี้
แล้วก็มี คิวรี่ แบบที่ให้ดูข้างบน
เพื่อดึงข้อมูล ใน ออร์เดอร์มาโชว์อะครับ

คือผมจะดึงข้อมูล ที่ relate กับ orderID ที่ส่งเข้ามา
มาโชว์อะ อย่างเช่น

Order ID : 123456789744223
Staff : Mr. A BACUS
Customer : Makro Store
--------------------------------------------------------------------------------------------------------------------------
Barcode Name Qty Price Status
--------------------------------------------------------------------------------------------------------------------------
8456974569745 Bowl 20 200.00 Shipped
8456974569772 Tray 24 10 560.00 Shipped
8456974569788 Cup A45 10 500.00 Unshipped
--------------------------------------------------------------------------------------------------------------------------
Receiver Name : Mr. A BACUS
Receiver Address : Bangkok 10600
Receiver Telephone : 024654444

คือผมเก็บ Session มาแค่ OrderID
แล้วตัวที่เหลือล่ะครับ จิงจิงผม ดึงข้อมูลมาจาก select statement
แล้วผมจะเอาข้อมูลตรงนั้นมาโชว์ได้มั๊ย
หรือว่าต้องเขียน connect database ใน crystal report
แล้วจะดึงข้อมูลมาโชว์ยังไงครับ
ผมใช้ 3 tables ใน database อย่างที่ โพสไว้อันแรกอะครับ

รบกวนอีกนิดนึงครับ
เพราะผมยังมีอีกหลายเพจเลย ที่เป็น style นี้อะ
Date : 2009-02-18 14:28:35 By : mixarstudio
 


 

No. 9



โพสกระทู้ ( 1 )
บทความ ( 0 )



สถานะออฟไลน์


ช่วยแปลงเป็น VB ได้ป่าวครับ ผมถนัด VB8iy[
Date : 2009-03-03 00:23:03 By : tanasorn
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : search ก่อน แล้วโชว์ใน crystal report ถามนิดนึงครับคือผมมีการ search ข้อมูล แล้วก็ เก็บเป็น Session["OrderID"] ไว้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
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 อัตราราคา คลิกที่นี่