|
|
|
อยากทราบวิธีส่งค่าของ label ตรงๆ ไปยัง report ครับ |
|
|
|
|
|
|
|
ผมใช้ asp.net โดยเขียนด้วย C# น่ะครับ แล้วก็ใช้ crystal report ในการทำ report น่ะครับ
|
|
|
|
|
Date :
2010-12-01 22:21:33 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่งเป็น parameter ไปตอนเรียก report อะครับ ไปหาดูและกันมันมีให้ดู
|
|
|
|
|
Date :
2010-12-01 23:12:16 |
By :
ninggg |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมหาเจอแต่ ติดต่อไปฐานข้อมูลก่อนน่ะครับ
ช่วยแนะนำหน่อยได้ไหมครับ ว่าทำยังไง ถึงส่งไปได้เลย โดยไม่ต้องติดต่อฐานข้อมูล
|
|
|
|
|
Date :
2010-12-01 23:26:19 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
Report rpt = new Report();
string reportPath = Server.MapPath("Report.rpt");
rpt.Load(reportPath);
CrystalDecisions.Shared.ParameterFields ParameterFields;
CrystalDecisions.Shared.ParameterField ParameterField;
CrystalDecisions.Shared.ParameterDiscreteValue ParameterDiscreteValue;
ParameterFields = new CrystalDecisions.Shared.ParameterFields();
ParameterField = new CrystalDecisions.Shared.ParameterField();
ParameterField.ParameterFieldName = "Year0";
ParameterDiscreteValue = new CrystalDecisions.Shared.ParameterDiscreteValue();
ParameterDiscreteValue.Value = "2004";
ParameterField.CurrentValues.Add(ParameterDiscreteValue);
rpt.ParameterFields.Add(ParameterField);
CrystalReportViewer1.ReportSource = rpt;
คือผมพยายามจะส่ง parameter ไปยัง report ตรง ๆ น่ะครับ เลยลองหา code แล้วก็ได้เขียนตามนี้ แต่ยัง error อยู่อีก รบกวนผู้รู้ช่วยแก้ให้หน่อยน่ะครับ
|
|
|
|
|
Date :
2010-12-02 01:14:56 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ประกาศแบบนี้ใน Code.cs
rpt.SetParameterValue("@OrdYear", "1996");
ใน .rpt สร้าง Parameter ที่ชื่อเดียวกับ
|
|
|
|
|
Date :
2010-12-02 08:22:43 |
By :
superpheak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เขียน code ตามที่คุณ pheak บอกแล้วครับ แต่มัน error แบบนี้ครับ
จะแก้ไขยังไงดีครับ
ภาพerror
code ที่เขียน
Code (C#)
Report rpt = new Report();
string reportPath = Server.MapPath("Report.rpt");
rpt.Load(reportPath);
rpt.SetParameterValue("@Year", lb_display.Text);
CrystalReportViewer1.ReportSource = rpt;
|
|
|
|
|
Date :
2010-12-02 11:22:14 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใน .rpt สร้าง parameter ชื่อ @Year แล้วเหรอ
|
|
|
|
|
Date :
2010-12-02 16:04:57 |
By :
superpheak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเขียนโปรแกรม เพื่อ Display Parameter Name ที่มีทั้งหมดใน Report ดูไหม
เผื่อว่าชื่อ Parameter ไม่ตรงกัน
|
|
|
|
|
Date :
2010-12-02 16:14:19 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
นี้คือ reportของผมครับ ประกาศ @Year แล้วน่ะครับ แต่ไม่เห็นจะได้เลยครับ
|
|
|
|
|
Date :
2010-12-02 16:48:05 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมกลัวว่า เวลาเรียกผ่านทาง Code อ่านต้องผ่านด้วย Year
เลยให้ลองเขียนโปรแกรมอ่านชื่อ Parameter ดูว่ามันขึ้นชื่อว่า Year หรือ @Year
|
|
|
|
|
Date :
2010-12-02 17:04:39 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rpt.SetParameterValue()
method นี้เวลาใช้ผมจะใช้ว่่า
rpt.SetParameterValue("Year", lb_display.Text);
เลยได้ไหมครับ ผมเห็นมันฟ้อง Invalid index
คือ ผมสามารถใส่ชื่อ parameter ( ชื่อ Year )กับ ค่าของมัน ที่เป็น string เลยได้ไหมครับ
|
|
|
|
|
Date :
2010-12-02 17:14:42 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หุหุ จริงๆ ผมก็ไม่เคยใช้ Parameter นะ
แต่จากแหล่งข้อมูลที่น่าเชื่อถือ มันบอกว่าได้
ว่าแต่ Parameter มันมีชนิดไหมว่า เป็น Number, Text,...
http://msdn.microsoft.com/en-us/library/ms226143(VS.80).aspx
|
|
|
|
|
Date :
2010-12-02 17:20:23 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รู้สึกว่า Parameter ก็มี DataType เหมือนกันนะ
งั้นลอง Test แบบนี้ไปก่อนล่ะกัน
ถ้า Year เป็น Number
Code (C#)
rpt.SetParameterValue("Year", 2010);
|
ประวัติการแก้ไข 2010-12-02 17:25:01
|
|
|
|
Date :
2010-12-02 17:24:17 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rpt.SetParameterValue("Year", 2010);
ลองแบบนี้แล้วเหมือนกันครับ ไม่ได้อ่ะครับ error เหมือนเดิมเลยครับ
|
|
|
|
|
Date :
2010-12-02 17:38:54 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เออ มิทราบว่า ถ้าสร้าง Report เปล่าๆ แล้วไม่ต้องใส่ parameter ใดๆ เลย
มัน Error ไหมครับ
รู้สึก Case นี้ยากจัง เผ่นล่ะ
เผชิญชะตากรรมตามลำพังล่ะกันนะ
หรือไม่ถ้ายังมีบุญอยู่ เดี๋ยวฟ้าคงประทานเทพมาช่วย
|
|
|
|
|
Date :
2010-12-02 17:46:34 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ว่า rpt ควรเป็น Instance ของ Class CrystalDecisions.CrystalReports.Engine.ReportDocument นี้รึเปล่า
เพิ่งเห็นว่าคุณใช้ Report rpt = new Report();
http://msdn.microsoft.com/en-US/library/ms226072(v=VS.80).aspx
|
|
|
|
|
Date :
2010-12-02 17:54:27 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองปรับเป็นประกาศแบบ
CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new ReportDocument();
แต่ก็ยังไม่ได้น่ะครับ ทำไงดีครับ ทดลองจน งง หมดแล้วครับ
|
|
|
|
|
Date :
2010-12-02 18:17:11 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมทำแบบ parameter ได้แล้ว ขอบคุณทุกคนมากครับ
แต่มีคำถามเพิ่ม
ว่าพอจะมีวิธีจะส่ง Dataset เข้าไปใน report ไหมครับ
|
|
|
|
|
Date :
2010-12-02 23:23:07 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมจะทำให้มันไม่ใส่ค่าพวกนี้ยังไงครับ
คือผมไม่อยากจะติดต่อกับฐานข้อมูลน่ะครับ
|
|
|
|
|
Date :
2010-12-03 00:15:54 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Concept คร่าวๆ ครับ
1. สร้าง DataSet ขึ้นมา โดยไปที่ project >> Add new Item >> Dataset
2. ในหน้า Dataset เลือก Server Explorer เลือก Connect Database จากนั้นก็ เลือก database
Step มันก็คล้าย ตอน config SqlDatasource (เช่นผมเลือก Table Employees ใน Northwind)
3.กลับมาที่ Report ไปที่ Crystal Report >> Database >> Database Expert จะมี Dialog มา
ให้เลือก ไปที่ ProjectData>> ADO.Net Datasets เลือก Dataset ที่สร้างใว้
4. ทีนี้ Report ก็จะเห็น Fileds ต่างๆ ใน Dataset ก็ออกแบบไป
ต่อมา มา Coding
string sql = "select * from Employees";
da.Fill(ds,"tblEmployees"); //สมมุตได้ประมาณนี้
ReportDocument rpt = new ReportDocument();
rpt.Load(Server.MapPath("Employee.rpt"));
rpt.SetDatabaseLogon(userid,password,hostName,databaseName);
rpt.SetDataSource(dsEmp.Tables[0].DefaultView); // อย่าลืม .DefaultView
CrystalReportViewer1.ReportSource = rpt;
ติดตรงไหนอีก -*-
|
|
|
|
|
Date :
2010-12-03 08:42:26 |
By :
superpheak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับได้แล้วล่ะครับ ขอบคุณทุกคนมากเลยน่ะครับ
แต่ขอถามต่อหน่อยน่ะครับ
คือว่า ผม มี table 2 อัน แล้วมีข้อความ a อยู่ 1 ข้อความ
แล้วผมต้องการแสดง report ดังนี้
1. แสดงข้อมูลใน table1 ทั้งหมด ก่อน
2. แสดงข้อความ a 1 ครั้งเท่านั้น
3. แสดงข้อมูลทั้งหมดใน table2 ตามหลัง
ผมจะแบ่ง section ยังไงดีครับ
เพราะว่ามันมี detail แค่อันเดียว
รบกวนผู้รู้ช่วยตอบหน่อยน่ะครับ พอดีเพิ่งหัดเขียน เลยอาจมีคำถามมากหน่อย ขอโทษด้วยน่ะครับ
|
|
|
|
|
Date :
2010-12-03 15:27:05 |
By :
supertwo3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเข้าไปอ่าน Blog ของพี่คนนี้ก่อน เขาเขียนใว้เยอะอยู่
http://janawat.wordpress.com/category/crystal-reports/
|
|
|
|
|
Date :
2010-12-03 15:39:53 |
By :
superpheak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|