เนื้อหาต่อไปนี้เป็นรหัสโปรแกรม:
ก่อนที่เราจะศึกษา Crystal Reports ใน VS.Net ฉันและเพื่อนอยากรู้มากเกี่ยวกับวิธีการเพิ่มสิ่งที่ซับซ้อนนี้ลงในเว็บแอปพลิเคชันของเรา หนึ่งสัปดาห์ต่อมา หลังจากอ่านเอกสาร "HOWTO" เป็นจำนวนมาก เราก็เพิ่มรายงานง่ายๆ ลงในโปรแกรม Asp.net ของเราได้สำเร็จ และได้รับเคล็ดลับบางประการ
บทความนี้จะสอนวิธีใช้ Crystal Reports ในแอปพลิเคชันเว็บ .Net และยังช่วยให้คุณหลีกเลี่ยงการออกนอกเส้นทางในกระบวนการเรียนรู้อีกด้วย เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ผู้อ่านควรมีความรู้พื้นฐานเกี่ยวกับการเข้าถึงฐานข้อมูล Asp.Net และประสบการณ์การพัฒนาโดยใช้ VS.Net
การแนะนำ
Crystal Reports สามารถรับได้หลายวิธี หนึ่งในนั้นคือการใช้ VS.Net เพื่อสร้างมัน ซึ่งมีโมเดลที่สมบูรณ์มากซึ่งช่วยให้เราสามารถดำเนินการคุณสมบัติและวิธีการต่างๆ ในขณะรันไทม์ได้ หากคุณใช้ VS.Net เพื่อพัฒนาโปรแกรม .Net คุณไม่จำเป็นต้องติดตั้งซอฟต์แวร์อื่น เนื่องจากซอฟต์แวร์ดังกล่าวฝังอยู่ใน VS.Net แล้ว
ข้อได้เปรียบ:
VS.Net Crystal Reports มีข้อดีหลักๆ ดังต่อไปนี้:
การพัฒนารายงานอย่างรวดเร็ว
ความสามารถในการส่งออกไปยังแผนภูมิเชิงโต้ตอบที่ซับซ้อน
สามารถใช้ใน WebForm พร้อมการควบคุมอื่นๆ
สามารถส่งออกรายงานแบบไดนามิกเป็น .pdf, .doc, xls, html, rtf และรูปแบบอื่น ๆ
โครงสร้าง:
ส่วนประกอบบางอย่างประกอบขึ้นเป็นโครงสร้างสองชั้นของ Crystal Reports เว็บแอปพลิเคชันที่จำเป็น ได้แก่:
ลูกค้า:
ไคลเอนต์ต้องการเพียงเบราว์เซอร์ที่สามารถเข้าถึงรายงานที่ฝังอยู่ในหน้า aspx
เซิร์ฟเวอร์:
- โปรแกรม Crystal Report (CREngine.dll)
สามารถทำงานบางอย่างให้เสร็จสิ้นได้ เช่น การรวมข้อมูลในไฟล์รายงาน การแปลงรายงานเป็นรูปแบบอื่น เป็นต้น เป็นเพราะกลไกการรายงานที่ทำให้ Crystal Reports ใน Asp.Net สามารถแปลงเป็นรูปแบบ HTML ธรรมดาได้
- โปรแกรมออกแบบรายงานคริสตัล (CRDesigner.dll)
Crystal Reports ถูกสร้างขึ้นในตัวออกแบบ ซึ่งคุณสามารถออกแบบชื่อเรื่อง แทรกข้อมูล สูตร แผนภูมิ รายงานย่อย ฯลฯ
- ไฟล์รายงาน .rpt
ขั้นตอนแรกในการดำเนินการรายงานคือการสร้างรายงานนี้ในอินเทอร์เฟซ Crystal Report Designer Microsoft ได้จัดเตรียมตัวอย่าง .rpt สำเร็จรูปบางส่วนไว้ในการติดตั้งเริ่มต้น
- แหล่งข้อมูล
วิธีการรับฐานข้อมูลจากไฟล์ .rpt ขึ้นอยู่กับวิธีการที่คุณเลือก คุณสามารถเลือกให้ Crystal Reports เลือกข้อมูลเองได้โดยไม่ต้องใช้รหัสใดๆ หรือคุณสามารถเลือกที่จะประกอบชุดข้อมูลด้วยตนเองแล้วโอนไปยังไฟล์รายงาน .
- การควบคุมเว็บฟอร์ม Crystal Report Viewer (CRWebFormViewer.dll)
Crystal Report View Control เป็นตัวควบคุม WebForm ซึ่งถือได้ว่าเป็นคอนเทนเนอร์ที่เก็บรายงานในหน้า .aspx หมายเหตุ: ในการดำเนินการที่ซับซ้อนบางอย่าง เซิร์ฟเวอร์รายงานและเว็บเซิร์ฟเวอร์อาจไม่อยู่บนโฮสต์จริงเดียวกัน และเว็บเซิร์ฟเวอร์จะส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์รายงาน Crystal Reports สามารถดำเนินการเป็น WebService ได้เช่นกัน
การดึงข้อมูลจาก Crystal Reports ในโหมดการดำเนินการสามารถทำได้โดยใช้วิธีการต่อไปนี้:
- โหมดดึง:
เมื่อมีการร้องขอ Crystal Reports จะเชื่อมต่อโดยตรงกับฐานข้อมูลตามไดรเวอร์ที่ระบุและรวบรวมข้อมูล
- โหมดกด:
ในเวลานี้ตารางการพัฒนาจะต้องเขียนโค้ดของตัวเองเพื่อเชื่อมต่อข้อมูลและประกอบชุดข้อมูลแล้วโอนไปยังรายงานพร้อมกัน ในกรณีเหล่านี้ คุณสามารถเพิ่มประสิทธิภาพรายงานให้สูงสุดได้โดยใช้การแชร์การเชื่อมต่อและจำกัดขนาดของการรวบรวมเรกคอร์ด
ประเภทรายงาน:
Crystal Report Designer สามารถรวมรายงานลงในโปรเจ็กต์โดยตรงหรือใช้ออบเจ็กต์รายงานอิสระ
- รายงานที่พิมพ์ชัดเจน:
เมื่อคุณเพิ่มไฟล์รายงานลงในโปรเจ็กต์ ไฟล์นั้นจะกลายเป็นรายงานที่ "พิมพ์อย่างแน่นหนา" ในกรณีเหล่านี้ คุณจะมีอำนาจในการสร้างออบเจ็กต์รายงานได้โดยตรง ซึ่งจะลดโค้ดบางส่วนและสามารถให้ประสิทธิภาพบางอย่างได้
- รายงานที่ไม่ได้พิมพ์:
รายงานที่นี่ไม่ได้รวมไว้ในโปรเจ็กต์โดยตรง ดังนั้นจึงเรียกว่ารายงาน 'un-typed' ในกรณีนี้ คุณต้องสร้างอินสแตนซ์โดยใช้ออบเจ็กต์ "ReportDocuemt" ของ Crystal Reports และใช้รายงาน "ด้วยตนเอง"
สิ่งอื่น ๆ ที่ควรทราบ
- แม้ว่า Crystal Report Viewer จะมีคุณสมบัติเจ๋ง ๆ เช่น การซูม การนำทางหน้า ฯลฯ แต่ไม่มีฟังก์ชันการพิมพ์ คุณต้องเรียกใช้ฟังก์ชันการพิมพ์ของเบราว์เซอร์
- หากไม่ได้ลงทะเบียน Crystal Report ใน VS.Net จะสามารถใช้งานได้เพียง 30 ครั้ง หลังจากครบ 30 ครั้ง ฟังก์ชัน "บันทึก" จะไม่สามารถใช้งานได้อีกต่อไป เพื่อหลีกเลี่ยงปัญหานี้ คุณไม่ควรลงทะเบียนผลิตภัณฑ์นี้ที่นี่ที่ http://www.crystaldecisions.com/ (ดูเหมือนจะไม่เป็นเช่นนั้น ดูเหมือนว่าจะสามารถใช้งานได้นานโดยไม่ต้องลงทะเบียน แต่ไม่สามารถให้การสนับสนุนได้)
- การติดตั้งเริ่มต้นของ Crystal Reports สามารถรองรับผู้ใช้ได้ 5 คนเท่านั้น เพื่อที่จะรองรับผู้ใช้ได้มากขึ้น คุณต้องซื้อใบอนุญาตที่ http://www.crystaldecisions.com/
มาสัมผัสกัน - การใช้ไฟล์ Crystal Report สำเร็จรูปใน Asp.net 1) ลากตัวควบคุม Crystal Report Viewer (Crystal Report Viewer) จากแถบเครื่องมือ WebForm ไปยังหน้า .aspx
2) เรียกหน้าต่างคุณสมบัติของตัวควบคุม Crystal Report Viewer
3) คลิกปุ่ม [...] เพื่อดูคุณสมบัติ "Data Binding" และหน้าต่าง DataBinding จะปรากฏขึ้น
4) เลือก "แหล่งที่มาของรายงาน" จากพื้นที่ "คุณสมบัติที่เชื่อมโยงได้" ทางด้านซ้าย
5) เลือกปุ่มตัวเลือก "Custom Binding Expression" และระบุชื่อไฟล์และเส้นทางของไฟล์ .rpt ในหน้าต่างด้านล่างทางด้านขวา เช่น "C:\Program Files\Microsoft Visual Studio.NET\ Crystal Reports\Samples\Reports\General Business\World Sales Report.rpt" จากนั้น "ตกลง"
หมายเหตุ: ไฟล์ "World Sales Report.rpt" ถูกสร้างขึ้นระหว่างการติดตั้ง VS.Net หากคุณระบุไดเรกทอรีอื่นในระหว่างขั้นตอนการติดตั้ง คุณควรยืนยันความถูกต้องของเส้นทางในขณะนี้
ขั้นตอนข้างต้นจริง ๆ แล้วแทรกรหัสต่อไปนี้ลงในไฟล์ Asp.Net:
เช่นเดียวกับ:
id = "CrystalReportViewer1"
runat = "เซิร์ฟเวอร์" ความกว้าง = "350px" ความสูง = "50px"
แหล่งรายงาน=''>
หมายเหตุ: สไตล์ที่สร้างโดย ReportSource ในโค้ดที่สร้างขึ้นโดยอัตโนมัติในเวอร์ชันทางการ VS.Net ของฉันไม่เป็นเช่นนั้น มันคือ:
แหล่งรายงาน = ""
นี่เป็นสิ่งที่ผิดและข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น มีข้อผิดพลาดสองประการ:
จะต้องแก้ไขด้วยตนเองตามรูปแบบที่แนะนำในบทความนี้ ซึ่งถือได้ว่าเป็นข้อบกพร่องของ VS.Net
6) เรียกวิธี DataBind ในวิธี Page_Load (โค้ดคือ VB.Net)
Page_Load ย่อยส่วนตัว (ผู้ส่ง ByVal As System.Object, ByVal e As System.EventArgs)
DataBind()
จบหมวดย่อย
7) บันทึกและรวบรวมเพจของคุณ ตอนนี้คุณมีเพจ WebForm ที่มี Crystal Reports ฝังอยู่ข้างในแล้ว
หมายเหตุ: ในการพัฒนาจริง จะมีข้อผิดพลาดที่ไม่สามารถเข้าถึงไดเร็กทอรี inetsrv ได้ในตอนเริ่มต้น วิธีแก้ไขคือเปลี่ยนคุณลักษณะความปลอดภัยของไดเร็กทอรีเพื่อให้ผู้ใช้มีสิทธิ์ในการเขียนได้ Flying Knife ฉันพบว่าโซลูชันที่ระบบ .Net มอบให้นั้นไร้ประโยชน์ และอาจเป็นเพราะฉันใช้ระบบปฏิบัติการ Windows.Net
การใช้ Crystal Reports ใน Asp.Net (ตอนที่ 2)
www.dotnet8.com 2002-9-6 DotNet Bar
เนื้อหาต่อไปนี้คือโค้ดโปรแกรม:
การใช้โหมด Pull เราจะใช้ขั้นตอนต่อไปนี้เพื่อรัน Crystal Reports ผ่านโหมด Pull
1. ขั้นแรกให้สร้างไฟล์ rpt และใช้อินเทอร์เฟซการออกแบบ Crystal Report เพื่อตั้งค่าการเชื่อมต่อข้อมูลที่จำเป็น
2. ลากและวางตัวควบคุม CrystalReportViewer ไปยังหน้า aspx ตั้งค่าคุณสมบัติเพื่อระบุไฟล์ .rpt ที่เราสร้างในขั้นตอนก่อนหน้า
3. เรียกเมธอด DataBind ในโค้ด
สร้างไฟล์ .rpt:
1) คลิกขวาที่ "Solution Browser" และเลือก "Add"--"Add New Item"-->"Crystal Report" ในเมนูป๊อปอัป
2) เลือกปุ่มตัวเลือก "As Blank Report" ใน "Crystal Report Library" และสุดท้ายคลิก "OK"
3) Crystal Report Designer จะปรากฏขึ้นที่นี่
4) คลิกขวาที่ "พื้นที่รายละเอียด" ในรายงานและเลือก "ฐานข้อมูล" -> "เพิ่ม/ลบฐานข้อมูล..."
5) ในป๊อปอัป "Database Expert" ให้ขยายตัวเลือก "OLE DB(ADO)" และหน้าต่าง "OLE DB(ADO)" อีกหน้าต่างหนึ่งจะปรากฏขึ้น
6) ในหน้าต่างป๊อปอัป "OLE DB (ADO)" ให้เลือก "Microsoft OLE DB Provider สำหรับ SQL Server" จากนั้นเลือก "ถัดไป"
7) ระบุเซิร์ฟเวอร์ข้อมูลที่จะเชื่อมต่อ: ASPCN (เขียนชื่อเครื่องของคุณ)
รหัสผู้ใช้: sa
รหัสผ่าน:
ฐานข้อมูล: ผับ
8) คลิก "ถัดไป" และสุดท้ายคลิกปุ่ม "เสร็จสิ้น"
9) ในขณะนี้ คุณสามารถดูฐานข้อมูลที่เราเลือกได้ในหน้าต่าง "Database Expert"
10) ขยายฐานข้อมูล "Pubs" ขยาย "Table" เลือกตาราง "Stores" และเพิ่มลงในพื้นที่ "Selected Tables" คลิกปุ่ม "OK"
11) ตอนนี้ใน "Field Resource Browser" ตารางที่คุณเลือกและฟิลด์ในตารางจะแสดงในพื้นที่ "Database Field" ทางด้านซ้าย
12) ลากและวางช่องที่ต้องกรอกลงในพื้นที่ "รายละเอียด" ของรายงาน ชื่อฟิลด์จะปรากฏในพื้นที่ "ส่วนหัว" โดยอัตโนมัติ หากคุณต้องการแก้ไขข้อความส่วนหัว คุณสามารถคลิกขวาที่ข้อความในพื้นที่ "ส่วนหัว" เลือกตัวเลือก "แก้ไขวัตถุข้อความ" แล้วแก้ไข
13) บันทึกเพื่อให้เรามีไฟล์ Crystal Report
สร้างตัวควบคุม CrystalReportViewer
14) กลับไปที่ WebForm ก่อนหน้า ลากและวางตัวควบคุม Crystal Report Viewer ลงบนเพจ
15) เรียกหน้าต่างคุณสมบัติของตัวควบคุม Crystal Report Viewer เลือกพื้นที่ "DataBindings" แล้วคลิก [...]
16) ใน "Crystal Report Viewer Data Binding Window" เลือก "ReportSource" ใน "Bindable Properties" ทางด้านขวา และเลือก "Custom Binding Expression" ที่มุมขวาล่างเพื่อระบุพาธของไฟล์ .rpt
17) ณ จุดนี้ คุณสามารถดูตัวอย่างไฟล์รายงานที่ประกอบด้วยข้อมูลเสมือนบางส่วนจากตัวควบคุม Crystal Report Viewer
หมายเหตุ: ในตัวอย่างข้างต้น CrystalReportViewer สามารถเรียกข้อมูลจริงได้โดยตรง ณ เวลาออกแบบ เนื่องจากข้อมูลได้รับการบันทึกแล้วในขณะนี้ ในกรณีนี้ เมื่อข้อมูลไม่ได้รับการบันทึก ณ เวลาออกแบบ ก็ไม่สามารถแสดงข้อมูลได้ แต่จะมีการแสดงข้อมูลจำลองบางส่วนแทน และข้อมูลจริงจะถูกเลือกในเวลาดำเนินการเท่านั้น
รหัสเบื้องหลังการเขียนโปรแกรม
18) เรียกวิธี DataBind ในวิธี Page_Load
รันโปรแกรมของคุณ
19) สร้างและรันโปรแกรมของคุณ!
ตอนนี้คุณสามารถใช้ฟังก์ชันในตัวของ Crystal Reports ได้โดยตรงบนหน้าเว็บ เช่น การนำทางหน้า การซูม ฯลฯ
การใช้ Crystal Reports ใน Asp.Net (ตอนที่ 2)
www.dotnet8.com 2002-9-6 DotNet
[HTML] เราใช้ขั้นตอนต่อไปนี้เพื่อรัน Crystal Reports โดยใช้โหมด Push:
1. ออกแบบชุดข้อมูล
2. สร้างไฟล์ .rpt และกำหนดให้กับชุดข้อมูลที่สร้างในขั้นตอนก่อนหน้า
3. ลากและวางตัวควบคุม CrystalReportViewer ในหน้า aspx และเชื่อมต่อกับไฟล์ rpt ก่อนหน้า
4. เข้าถึงฐานข้อมูลด้วยรหัสและจัดเก็บข้อมูลในชุดข้อมูล
5. เรียกวิธีDataBind
ออกแบบชุดข้อมูล
1) คลิกขวาที่ "Solution Browser" และเลือก "Add" -- "Add New Item" --> "Dataset"
2) ลากและวางตาราง "Stores" (อยู่ในฐานข้อมูล PUBS) จาก "SQL Server" ใน "Server Explorer"
3) ในเวลานี้จะมีแผนภาพโครงสร้างของตาราง Stores ในชุดข้อมูล
- ไฟล์ .xsd มีเพียงไดอะแกรมโครงสร้างเท่านั้น แต่จะไม่มีข้อมูลอยู่ในนั้น
สร้างไฟล์ .rpt:
4) สร้างไฟล์นี้โดยใช้วิธีที่แนะนำข้างต้น ข้อแตกต่างเพียงอย่างเดียวคือการใช้ชุดข้อมูลแทนข้อมูลการเชื่อมต่อโดยตรงก่อนหน้า
5) หลังจากสร้างไฟล์ .rpt แล้ว ให้คลิกขวาที่ "รายละเอียด" --> "เพิ่ม/ลบฐานข้อมูล"
6) ในหน้าต่าง "Database Expert" ให้ขยาย "Project Data" (แทนที่ OleDb ก่อนหน้า) ขยาย "ADO.Net Data Set" -- "DataSet1" และเลือกตาราง "Stores"
7) เพิ่มตาราง "ร้านค้า" ลงใน "ตารางที่เลือก" แล้วคลิก "ตกลง"
8) ใช้วิธีการในโหมด PULL เพื่อสร้าง WebForm
สร้างตัวควบคุม Crystal Report Viewer
9) สร้างตัวควบคุม Crystal Report Viewer และตั้งค่าคุณสมบัติซึ่งสอดคล้องกับโหมด PULL
รหัสเบื้องหลังรหัส:
10) ใช้ฟังก์ชันย่อยต่อไปนี้ในวิธี Page_Load:
รหัส VB.Net:
รายงาน SubBind()
หรี่ myConnection เป็น SqlClient.SqlConnection ใหม่ ()
myConnection.ConnectionString= "เซิร์ฟเวอร์= (ท้องถิ่น)NetSDK;database=pubs;Trusted_Connection=yes"
Dim MyCommand เป็น SqlClient.SqlCommand() ใหม่
MyCommand.Connection = myConnection
MyCommand.CommandText = "เลือก * จากร้านค้า"
MyCommand.CommandType = CommandType.Text
Dim MyDA เป็น SqlClient.SqlDataAdapter() ใหม่
MyDA.SelectCommand = คำสั่งของฉัน
หรี่ myDS เป็นชุดข้อมูลใหม่ 1()
'นี่คือชุดข้อมูลที่เราใช้ในโหมดการออกแบบ
MyDA.Fill(myDS, "ร้านค้า")
'คุณต้องใช้ชื่อเดียวกันกับชุดข้อมูลก่อนหน้าของคุณ
Dim oRpt เป็น CrystalReport1 ใหม่ ()
'การผูกรายงานคริสตัล
oRpt.SetDataSource(myDS)
'ตั้งค่า ReportSource ของ Crystal Report
CrystalReportViewer1.ReportSource = oRpt
จบหมวดย่อย
รหัส C#:
BindReport เป็นโมฆะส่วนตัว ()
-
string strProvider = "เซิร์ฟเวอร์=(ท้องถิ่น);DataBase=pubs;UID=sa;PWD=";
CrystalReport1 oCR = CrystalReport1 ใหม่();
ชุดข้อมูล1 ds = ชุดข้อมูลใหม่1();
SqlConnection MyConn = SqlConnection ใหม่ (strProvider);
MyConn.Open();
string strSel = "เลือก * จากร้านค้า";
SqlDataAdapter MyAdapter = SqlDataAdapter ใหม่ (strSel, MyConn);
MyAdapter.Fill(ds,"ร้านค้า");
oCR.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource = oCR;
-
หมายเหตุ: ในโค้ดข้างต้น คุณต้องทราบว่า oRpt เป็นไฟล์รายงาน "ชนิดเข้มงวด" หากคุณต้องการใช้รายงาน "UnTyped" คุณต้องใช้วัตถุ ReportDocument แล้วเรียกไฟล์รายงาน
เรียกใช้โปรแกรมของคุณ
11) เรียกใช้โปรแกรมของคุณ
ส่งออกไฟล์รายงานเป็นรูปแบบอื่น
คุณสามารถส่งออกไฟล์รายงานเป็นรูปแบบต่อไปนี้:
1. PDF (รูปแบบเอกสารพกพา)
1. 2. DOC (เอกสาร MS Word)
2. 3. XLS (สเปรดชีต MS Excel)
3. 4. HTML (Hyper Text Markup Language – เป็นไปตามมาตรฐาน 3.2 หรือ 4.0)
4. 5. RTF (Rich Text Format)
ใช้โหมด Pull เพื่อส่งออกรายงาน เมื่อส่งออกไฟล์ที่สร้างโดยใช้โหมด Pull, Crystal Reports จะเปิดข้อมูลที่ต้องการอย่างถูกต้อง ต่อไปนี้เป็นโค้ดสำหรับดำเนินการฟังก์ชันการส่งออก:
รหัส C#:
รหัส VB.Net:
Private Sub Button1_Click (ผู้ส่ง ByVal As System.Object, ByVal e As System.EventArgs) จัดการ Button1.Click
หรี่ myReport As CrystalReport1 = CrystalReport1() ใหม่
'หมายเหตุ: ที่นี่เราสร้างอินสแตนซ์ Crystal Report ที่เน้นความแข็งแกร่ง
Dim DiskOpts เป็น CrystalDecisions.Shared.DiskFileDestinationOptions = CrystalDecisions.Shared.DiskFileDestinationOptions() ใหม่
myReport.ExportOptions.ExportDestinationType = CrystalDecisions.[แชร์].ExportDestinationType.DiskFile
' ตัวเลือกนี้ยังจำเป็นเมื่อส่งออกไปยังไฟล์อื่น
' เช่น Microsoft Exchange, MAPI เป็นต้น
myReport.ExportOptions.ExportFormatType = CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat
'ที่นี่เราส่งออกเป็นไฟล์รูปแบบ .pdf คุณสามารถเลือกไฟล์ประเภทอื่นที่ด้านบนได้
DiskOpts.DiskFileName = "c:Output.pdf"
'ถ้าคุณไม่ระบุไดเร็กทอรีที่แน่นอน ไฟล์จะถูกบันทึกในไดเร็กทอรี [Windows]System32
myReport.ExportOptions.DestinationOptions = DiskOpts
'ไฟล์ Crystal Report ไม่มีคุณสมบัติ FileName โดยตรง ดังนั้นคุณจึงไม่สามารถระบุชื่อไฟล์ที่บันทึกไว้ได้โดยตรง
'ดังนั้นคุณต้องใช้วัตถุ DiskFileDestinationOptions และตั้งค่าคุณสมบัติ DiskFileName
'สำหรับเส้นทางที่คุณต้องการ ในที่สุดให้ระบุคุณสมบัติ DestinationsOptions ของ Crystal Reports เป็น DiskFileDestinationOption ด้านบน
myReport.ส่งออก()
'โค้ดด้านบนจะทำงานการส่งออก
จบหมวดย่อย
ส่งออกรายงาน Crystal โดยใช้โหมด PUSH เมื่อสร้างรายงานที่ส่งออกโดยโหมด PUSH ขั้นตอนแรกคือการสร้างการเชื่อมต่อและประกอบชุดข้อมูลผ่านการเขียนโปรแกรม และตั้งค่าคุณสมบัติ SetDataSource ของรายงาน ขั้นตอนต่อไปนี้จะเหมือนกับในโหมดดึง
[/HTML]
สรุปการใช้ Crystal Reports ในสภาพแวดล้อม
.NET Crystal Reports เป็นเครื่องมือพัฒนารายงานที่ยอดเยี่ยม ตอนที่ฉันพัฒนาระบบการจัดการทั่วไป รายงานทั้งหมดใช้ Crystal Reports ความเรียบง่าย ใช้งานง่าย และทรงพลังทำให้ฉันชอบมัน เพิ่มเติม ตอนนี้ฉันจะนำเสนอ Crystal Reports แก่ทุกคนโดยใช้บันทึกย่อ
1. เมื่อใช้ Crystal Report ในตัว โปรดลงทะเบียน ไม่เช่นนั้น คุณจะสามารถใช้ได้เพียง
30 ครั้งเท่านั้น หมายเลขลงทะเบียน: 6707437608
รหัสผ่าน:AAP5GKS0000GDE100DS
2. ใช้ CrystalReportViewer เพื่อดูตัวอย่าง
ตัวควบคุม CrystalReportViewer ช่วยให้คุณสามารถดู Crystal Report ในแอปพลิเคชันได้ คุณสมบัติ ReportSource กำหนดว่าจะดูรายงานใด หลังจากตั้งค่าคุณสมบัตินี้แล้ว รายงานจะแสดงในวิวเวอร์ แหล่งที่มาของรายงานอาจเป็น ReportDocument เส้นทางของไฟล์รายงาน หรือรายงานที่พิมพ์อย่างยิ่ง
1. เปิด "กล่องเครื่องมือ" แล้วลาก CrystalReportViewer ไปยังแบบฟอร์ม ซึ่งเราตั้งชื่อว่า rptVew
2. ใช้การลากและวางเพื่อปรับขนาด Windows Forms Viewer ให้ได้ขนาดที่ต้องการและย้ายไปยังตำแหน่งที่ต้องการ
3. เมื่อคุณเรียกใช้แอปพลิเคชัน รายงานจะแสดงในวิวเวอร์
3. สร้างรายงานใหม่
1. ชี้ไปที่ "เพิ่ม" และคลิก "เพิ่มรายการใหม่"
2. ในกล่องโต้ตอบ "เพิ่มรายการใหม่" ให้เลือก Crystal Report จากพื้นที่ "เทมเพลต" ตั้งชื่อรายงาน rptClient และคลิก "เปิด"
3. ในแกลเลอรี Crystal Report ให้เลือกหนึ่งในตัวเลือกต่อไปนี้:
· ใช้ Report Expert—แนะนำคุณตลอดกระบวนการสร้างรายงานและเพิ่มการเลือกของคุณไปยัง Crystal Report Designer
· เป็นรายงานเปล่า—เปิด Crystal Report Designer
· จากรายงานที่มีอยู่—สร้างรายงานใหม่ที่มีการออกแบบเหมือนกับรายงานอื่นที่คุณระบุ
หมายเหตุ ไลบรารี Crystal Report ประกอบด้วยผู้เชี่ยวชาญที่สามารถแนะนำคุณตลอดการสร้างรายงานเฉพาะหลายประเภท คุณอาจต้องการใช้ผู้เชี่ยวชาญเพื่อสร้างรายงานเบื้องต้นเพื่อพิจารณาว่าวิธีสร้างรายงานแบบใดที่เหมาะกับความต้องการของคุณ
4. คลิกปุ่มตกลง
หากคุณเลือกใช้รายงานผู้เชี่ยวชาญ กล่องโต้ตอบรายงานผู้เชี่ยวชาญจะปรากฏขึ้นพร้อมกับ Data Explorer เลือกข้อมูลที่จำเป็นสำหรับแต่ละโฟลเดอร์ ดำเนินการบนอินเทอร์เฟซแท็บ Report Expert จากนั้นคลิก Finish เพื่อเข้าถึง Crystal Report Designer และรายงานของคุณ
4. คุณจำเป็นต้องตั้งค่าแหล่งข้อมูลแบบไดนามิกหรือไม่?
Crystal Reports เชื่อมต่อกับฐานข้อมูลผ่านไดรเวอร์ฐานข้อมูล ไดรเวอร์แต่ละตัวถูกเขียนขึ้นเพื่อจัดการกับประเภทฐานข้อมูลเฉพาะหรือเทคโนโลยีการเข้าถึงฐานข้อมูล
โมเดลแบบดึงและพุช เพื่อให้นักพัฒนามีวิธีการเข้าถึงข้อมูลที่ยืดหยุ่นที่สุด ไดรเวอร์ฐานข้อมูล Crystal Reports ได้รับการออกแบบมาเพื่อให้มีการเข้าถึงข้อมูลทั้งแบบดึงและแบบพุช
ดึงรุ่น
ในโมเดลการดึง ไดรเวอร์จะเชื่อมต่อกับฐานข้อมูลและ "ดึง" ข้อมูลเข้ามาตามต้องการ เมื่อใช้โมเดลนี้ ทั้งการเชื่อมต่อกับฐานข้อมูลและคำสั่ง SQL ที่ดำเนินการเพื่อให้ได้ข้อมูลจะได้รับการจัดการโดย Crystal Reports เอง โดยที่นักพัฒนาไม่จำเป็นต้องเขียนโค้ด ใช้โมเดลการดึงหากคุณไม่จำเป็นต้องเขียนโค้ดพิเศษใดๆ ขณะรันไทม์
ดันโมเดล
ในทางตรงกันข้าม โมเดลพุชต้องการให้นักพัฒนาเขียนโค้ดเพื่อเชื่อมต่อกับฐานข้อมูล รันคำสั่ง SQL เพื่อสร้างชุดบันทึกหรือชุดข้อมูลที่ตรงกับฟิลด์ในรายงาน และส่งออบเจ็กต์ไปยังรายงาน วิธีการนี้ช่วยให้คุณสามารถใส่การแชร์การเชื่อมต่อลงในแอปพลิเคชันของคุณและกรองข้อมูลก่อนที่ Crystal Reports จะได้รับ
4. สร้างรายงานจากชุดข้อมูล ADO.NET และ
สร้างออบเจ็กต์ชุดข้อมูลจากฐานข้อมูล
1. สร้างไฟล์สคีมาใหม่ในโปรเจ็กต์:
ก. ในตัวสำรวจโซลูชัน คลิกขวาที่ชื่อโปรเจ็กต์ ชี้ไปที่ "เพิ่ม" และ จากนั้นคลิก " เพิ่มรายการใหม่".
ข. ในพื้นที่หมวดหมู่ของกล่องโต้ตอบเพิ่มรายการใหม่ ให้ขยายโฟลเดอร์ จากนั้นเลือกข้อมูล
c. เลือกชุดข้อมูลในพื้นที่เทมเพลต
d. ยอมรับชื่อเริ่มต้น Dataset1.xsd
ซึ่งจะสร้างไฟล์สคีมาใหม่ (Dataset1.xsd) ที่จะใช้ในภายหลังเพื่อสร้างชุดข้อมูลที่พิมพ์อย่างยิ่ง ไฟล์สคีมาจะปรากฏในตัวออกแบบชุดข้อมูล ADO.NET
2. ระบุตำแหน่งฐานข้อมูล:
ก. ใน Server Explorer คลิกขวาที่การเชื่อมต่อข้อมูลและเลือกเพิ่มการเชื่อมต่อ
b. ในกล่องโต้ตอบคุณสมบัติการเชื่อมโยงข้อมูล คลิกแท็บผู้ให้บริการ จากนั้นเลือกผู้ให้บริการ (เช่น Microsoft OLE DB Provider for SQL Server)
c. คลิกแท็บการเชื่อมต่อและระบุตำแหน่งของฐานข้อมูลของคุณ ป้อนข้อมูลเซิร์ฟเวอร์และข้อมูลการเข้าสู่ระบบของคุณตามที่จำเป็น
ง. คลิกปุ่มตกลง
ขณะนี้ฐานข้อมูล ตาราง และฟิลด์ของคุณปรากฏใน Server Explorer ภายใต้โหนดการเชื่อมต่อข้อมูล
3. ใน Solution Explorer คลิกสองครั้งที่ Dataset1.xsd (หากไม่ใช่มุมมองที่ใช้งานอยู่)
Dataset1.xsd ควรปรากฏในแท็บชุดข้อมูล
4. หากต้องการจัดรูปแบบชุดข้อมูล ให้ลากตารางที่ต้องการจาก Server Explorer ไปยังแท็บชุดข้อมูลของ Dataset1.xsd
5. คลิก บันทึก Dataset1.xsd เพื่อบันทึกไฟล์ Dataset1.xsd
6. บนเมนูสร้าง คลิกสร้างเพื่อสร้างออบเจ็กต์ชุดข้อมูลสำหรับโปรเจ็กต์
วัตถุ ADO.NET DataSet ให้คำอธิบายของข้อมูลที่สามารถเพิ่มตารางลงในรายงาน Crystal ได้ ใช้ Database Expert ใน Crystal Report Designer เพื่อเพิ่มตารางจากออบเจ็กต์ชุดข้อมูล ADO.NET
โปรดโทรหาผู้เชี่ยวชาญด้านฐานข้อมูลเมื่อคุณใช้ Report Expert เพื่อสร้างรายงานใหม่ หรือหากต้องการเข้าถึง Database Expert จากรายงานที่สร้างขึ้นโดยใช้ ADO.NET ให้คลิกขวาใน Report Designer ชี้ไปที่ Databases แล้วคลิก Add/Remove Database
เชื่อมต่อรายงานกับวัตถุชุดข้อมูล ADO.NET
1 ในฐานข้อมูลผู้เชี่ยวชาญ ขยายโฟลเดอร์ข้อมูลโครงการ
2. ขยายโฟลเดอร์ "ชุดข้อมูล ADO.NET"
3. เลือกออบเจ็กต์ชุดข้อมูลที่ต้องการ
ตัวอย่างเช่น หากคุณใช้อ็อบเจ็กต์ชุดข้อมูลที่สร้างจากไฟล์สคีมา "Dataset1.xsd" ของโปรเจ็กต์ "WindowsApplication1" คุณควรเลือก "WindowsApplication1.Dataset1"
4. เลือกตารางที่จะเพิ่มลงในรายงาน เช่นเดียวกับที่คุณทำกับแหล่งข้อมูลอื่นๆ
5. รหัสสำหรับการเปลี่ยนแปลงแหล่งข้อมูลแบบไดนามิก
Dim dsdataSet As New DataSet()
Dim oRpt As New rptClient() 'รายงานที่สร้างขึ้น rptClient
ต้องการให้ผู้อ่านกรอกข้อมูลในชุดข้อมูล dsdataSet ด้วยตัวเอง
'ใช้โมเดลออบเจ็กต์ "เครื่องมือรายงาน" เพื่อส่งชุดข้อมูลที่กรอกไปยังรายงาน
oRpt SetDataSource(dsdataSet. Tables(0))
'ผูกวัตถุรายงานกับข้อมูลไปยัง Windows Forms Viewer, rptVew (ตัวควบคุม CrystalReportViewer)
rptVew.ReportSource = oRpt
โปรดทราบว่าเมธอด FillDataSet สามารถเชื่อมต่อกับฐานข้อมูลที่ระบุ แยกข้อมูล จากนั้น ตัดการเชื่อมต่อฐานข้อมูล ถ้าคุณต้องการเพิ่มหลายตารางในฐานข้อมูลลงในรายงาน ให้ใช้คำสั่ง SQL JOIN เพื่อรวมตารางเหล่านี้เข้าด้วยกัน จากนั้นระบุตารางผลลัพธ์ในเมธอด FillDataSet
6 สร้างรายงานรายละเอียดหลัก
ในรายงาน มีรายงานจำนวนมาก โครงสร้างตารางรายละเอียดหลัก เช่น คำสั่งซื้อและรายละเอียดผลิตภัณฑ์ในคำสั่งซื้อ คำสั่งซื้อจะบันทึกอยู่ในตารางเดียว และรายการต่างๆ จะเป็นหลายระเบียนในอีกตารางหนึ่ง ทั้งสองตารางจะเชื่อมโยงกันผ่านเขตข้อมูลหนึ่งๆ :
1. สร้างโครงการใหม่
2. เพิ่มตัวควบคุม CrystalReportViewer ให้กับ FORM1
3. เชื่อมต่อกับฐานข้อมูล Northwind บน SQL SERVER 2000 ในตัวจัดการทรัพยากรบริการ
4. เพิ่มชุดข้อมูล Dataset1 และเพิ่มคำสั่งซื้อและรายละเอียดการสั่งซื้อจะถูกเพิ่มลงในข้อมูล ชุด.
5. เพิ่ม Crystal Report, ใช้ Report Expert, เลือก "ADO.NET Data Set" ในข้อมูลโปรเจ็กต์, แทรกตาราง Order และ Order Detail, "Link" คือลิงค์ไปยังฟิลด์ที่เกี่ยวข้อง เลือกฟิลด์ที่จะแสดง "ฟิลด์" สำหรับฟิลด์ของตารางหลักและตารางรายละเอียด เกณฑ์การเลือกกลุ่มในกลุ่มคือตารางคำสั่งซื้อ เขตข้อมูล OrderID ผลรวม แผนภูมิ การเลือก (สามารถกรองได้) สไตล์ (สามารถตั้งชื่อรายงานได้) และสามารถ ตั้งค่าด้วยตัวเอง หลังจากตั้งค่าแล้ว คลิกเสร็จสิ้น
6. ปรับตำแหน่ง ความกว้าง ฯลฯ ของฟิลด์ที่จะแสดงในโปรแกรมออกแบบรายงาน
7. เพิ่มโค้ดในหน้าต่าง
Private Sub Form1_Load (ผู้ส่ง ByVal As System.Object, ByVal e As System.EventArgs) จัดการ MyBase.Load
Dim oRpt As New CrystalReport1 ()
Dim dsdataSet As New Dataset1 ()
Dim CN As New Data.SqlClient.SqlConnection("data source=PMSERVER;initial Catalog=Northwind;user id=sa;password=sa")
CN.Open()
Dim daOrders As New Data.SqlClient.SqlDataAdapter("select * from คำสั่งซื้อ", CN)
daOrders.Fill(dsdataSet, "คำสั่งซื้อ")
Dim daDetails เป็น Data.SqlClient.SqlDataAdapter ใหม่ ("select * จาก [รายละเอียดคำสั่งซื้อ]", CN)
daDetails.Fill (dsdataSet, "รายละเอียดคำสั่งซื้อ")
'ใช้โมเดลออบเจ็กต์ "Report Engine" เพื่อส่งชุดข้อมูลที่บรรจุไปยังรายงาน
oRpt.SetDataSource(dsdataSet)
CrystalReportViewer1.ReportSource = oRpt
End Sub
8 เรียกใช้โปรแกรม
7. ใช้โปรแกรมเพื่อเปลี่ยนข้อความในรายงาน
รหัสจะเป็นดังนี้:
Dim GetTextObject As TextObject
' รับ ReportObject ตามชื่อ แปลงเป็น TextObject และส่งคืนวัตถุนี้
GetTextObject = orpt.ReportDefinition.ReportObjects.Item("text13")
GetTextObject.Text = "ระบบ XXXX"
สรุป: Crystal Reports มีฟังก์ชันที่ทรงพลังมาก นอกจากนี้ยังสามารถส่งออก WORD, EXCEL, RTF และไฟล์อื่น ๆ และยังสามารถสร้างแผนภูมิที่ซับซ้อนและสวยงามได้ มันเป็นเครื่องมือที่ทรงพลังสำหรับการพัฒนารายงานของ WEB และ WINDOWS
(ข้อมูลบางส่วนในบทความนี้มาจาก MSDN)
ผู้แต่ง: Li Honggen
E-MAIL: [email protected]
ฉันมีแนวคิดดังต่อไปนี้:
1. รับข้อมูลที่เกี่ยวข้องกับฐานข้อมูล SQL ผ่านการสืบค้นการเชื่อมต่อ
2. วางไว้ในชุดข้อมูล
3. เรียก Crystal Reports (เทมเพลตเชิงเส้นหรือเรียงเป็นแนว) เพื่อสร้างรายงาน
4. ส่งออกและสร้างเอกสาร EXCEL
โปรดบอกฉันว่าฮีโร่จะนำแนวคิดข้างต้นไปใช้อย่างไร? (จะดีกว่าถ้ามีตัวอย่าง)
ขอบคุณมาก!
-------------------------------------------------- -------------------------------------------------- -------------
1. เพิ่มชุดข้อมูลโปรเจ็กต์ใหม่ให้กับโปรเจ็กต์ของคุณ เชื่อมต่อกับฐานข้อมูล และเพิ่มตารางข้อมูลที่จำเป็นหรือขั้นตอนการจัดเก็บ
ลากเข้าไปในชุดข้อมูลนี้และคอมไพล์ชุดข้อมูล
2. ใช้ Crystal Report ที่มาพร้อมกับ Vs.net เพื่อสร้างรายงานโดยมี DataSet เป็นแหล่งข้อมูล
3. ส่งข้อมูลลงในรายงานนี้ในโปรแกรม
4.Crystal Report มีตัวเลือกในการส่งออกไปยัง Excel ซึ่งสามารถทำได้ผ่านโปรแกรมเช่นกัน
Dim conn เป็น SqlConnection
Dim da As SqlDataAdapter
Dim strSQL เป็นสตริง
conn = การเชื่อมต่อ Sql ใหม่ ()
conn.ConnectionString = "รหัสผู้ใช้=sa; PWD=1234;แหล่งข้อมูล=xxxx; แค็ตตาล็อกเริ่มต้น =xxxx"
con.เปิด()
strSQL = "เลือก * จากชื่อตาราง"
da = SqlDataAdapter ใหม่ (strSQL, conn)
Dim ds เป็นชุดข้อมูลใหม่ ()
da.Fill(ds, "ชื่อตาราง")
Dim RptDoc เป็นชื่อรายงานใหม่ ()
RptDoc.SetDataSource(ds)
'ระบุข้อมูลสำหรับ RptDoc
CrystalView1.ReportSource = RptDoc 'ระบุข้อมูลสำหรับ CrystalView
CrystalView1.DataBind()
con.ปิด()
5. หากคุณต้องการแสดงเขตข้อมูลที่เกี่ยวข้องกับหลายตาราง วิธีที่ดีที่สุดคือสร้างชุดข้อมูลโดยใช้ขั้นตอนการจัดเก็บ
-------------------------------------------------- -------------------------------------------------- -------------
โปรดดูรหัสต่อไปนี้:
string strconn=สตริงการเชื่อมต่อ;
SqlConnection myconn = SqlConnection ใหม่ (strconn);
string strcmd=@"เลือก คำสั่ง";
SqlCommand mycmd=ใหม่ SqlCommand(strcmd,myconn);
SqlDataAdapter myda=ใหม่ SqlDataAdapter(strcmd,myconn);
ชุดข้อมูล myds=ชุดข้อมูลใหม่();
myconn.Open();
myda.Fill(myds,"ชื่อรายงาน");
ชื่อรายงาน myrpt = ชื่อรายงานใหม่ ();
myrpt.SetDataSource(myds);
this.CrystalReportViewer1.ReportSource=myrpt;
ส่งออกเป็น EXCEL:
myrpt.ExportOptions.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
myrpt.ExportOptions.ExportFormatType=CrystalDecisions.Shared.ExportFormatType.Excel;
CrystalDecisions.Shared.DiskFileDestinationOptions opt=new CrystalDecisions.Shared.DiskFileDestinationOptions();
opt.DiskFileName=@"ชื่อไฟล์";
myrpt.ExportOptions.DestinationOptions =เลือก;
myrpt.Export();
วิธีใช้ภาษาจีนสำหรับดาวน์โหลด Crystal Reports 9:
http://www.ourfly.com/download/download.aspx
http://www.enwell.net/soft/
http://www.fast8.com/news.asp
Crystal Reports สำหรับ
สมาชิก Visual Studio .NET PictureObject ดู
คลาส PictureObject | CrystalDecisions.CrystalReports.Engine คุณสมบัติอินสแตนซ์สาธารณะของเนมสเปซ
เส้นขอบ (สืบทอดมาจาก ReportObject) รับวัตถุชายแดน
ความสูง (สืบทอดมาจาก ReportObject) Int32 รับหรือตั้งค่าความสูงของวัตถุใน twips
ชนิด (สืบทอดมาจาก ReportObject) ReportObjectKind รับประเภทของวัตถุรายงาน
ซ้าย (สืบทอดมาจาก ReportObject) Int32 รับหรือกำหนดตำแหน่งของมุมซ้ายบนของวัตถุเป็น twips
ชื่อ (สืบทอดมาจาก ReportObject) สตริง รับชื่อวัตถุ
ObjectFormat (สืบทอดมาจาก ReportObject) รับวัตถุ ObjectFormat
ด้านบน (สืบทอดมาจาก ReportObject) Int32 รับหรือตั้งค่าตำแหน่งบนสุดของวัตถุใน twips
ความกว้าง (สืบทอดมาจาก ReportObject) Int32 รับหรือตั้งค่าความกว้างของวัตถุเป็นทวิป
ดู
PictureObject
ClassImports CrystalDecisions.CrystalReports.Engine
Dim picObject As PictureObject
picObject = oRpt.ReportDefinition.ReportObjects.Item("รูปภาพ1")
จาก: http://expert.csdn.net/Expert/topic/1896/1896874.xml?temp=.78677
เมื่อคุณใช้ Crystal Reports ตามเว็บฟอร์ม หากคุณเพียงปฏิบัติตามวิธี "A Dao" บนอินเทอร์เน็ต คุณจะ จะได้รับแจ้งอย่างแน่นอน คุณ: การเข้าสู่ระบบล้มเหลว
เกี่ยวกับปัญหานี้ ฉันใช้เวลาทั้งวันศึกษาไฟล์วิธีใช้ของ Crystal Reports และในที่สุดก็มีวิธีแก้ไข
ฉันไม่ใช่คนอนุรักษ์นิยม ฉันเชื่อว่า มีชาวเน็ตจำนวนมากที่ทุ่มเทแรงกายแรงใจในการค้นคว้าเรื่องนี้เหมือนฉัน
ต่อไปนี้เป็นขั้นตอนบางส่วนที่ฉันดำเนินการเพื่อใช้โซลูชันนี้ ไม่ต้องกังวล มันจะช่วยคุณได้มากถ้าคุณอ่านช้าๆ
ขั้นตอนที่ 1: ดูไฟล์ตัวอย่าง Crystal Reports มาพร้อมกับไฟล์ตัวอย่างและเข้าถึงฐานข้อมูลได้ (โดยไม่ต้องใช้รหัสผ่าน) ขั้นแรกฉันเรียกใช้ไฟล์ตัวอย่าง (ขึ้นอยู่กับเว็บฟอร์มและ winform) และผลลัพธ์ก็แสดงรายงานที่ถูกต้อง เช่นเดียวกับตัวอย่าง "มีดบิน"
ดังนั้นฉันจึงสร้างไฟล์รายงานและไฟล์ .aspx ขึ้นมาเอง แต่ผลลัพธ์ปรากฏว่าการเข้าสู่ระบบล้มเหลว! แต่ฉันเปลี่ยนไฟล์รายงานเป็นไฟล์รายงานตัวอย่างและไม่มีข้อผิดพลาดเกิดขึ้นอีก
มีปัญหาอะไร? เป็นไปได้ไหมว่าไฟล์รูปแบบรายงานมีการตั้งค่าสิทธิ์ในการเข้าสู่ระบบ ด้วยการติดตามและแก้ไขข้อบกพร่อง ฉันเปรียบเทียบและวิเคราะห์ไฟล์รายงานของฉันและไฟล์รายงานตัวอย่าง และไม่พบความแตกต่าง ดูเหมือนว่าปัญหาจะไม่อยู่ในไฟล์รายงาน
มันเป็นปัญหาฐานข้อมูลหรือไม่? เมื่อฉันสร้างการเข้าถึง การเข้าสู่ระบบล้มเหลว!
ไม่ใช่ปัญหาฐานข้อมูล (ฐานข้อมูลของฉันเองมีการเข้าถึงที่ไม่มีรหัสผ่านและเช่นเดียวกันกับฐานข้อมูลในวิธีใช้) ไม่ใช่ปัญหากับไฟล์รูปแบบรายงาน (ฉันวิเคราะห์อย่างรอบคอบว่ารหัสต้นฉบับของทั้งสองเหมือนกัน)
แล้วปัญหาเกิดขึ้นที่ไหนล่ะ? ฉันไม่เข้าใจ!
ขั้นตอนที่ 2: ค้นหาไฟล์ช่วยเหลือ ฉันก็เลยขอความช่วยเหลืออีกครั้ง ฉันค้นหาด้วยความช่วยเหลือของ Crystal Reports และในที่สุดก็พบคำว่า "Access Secure Database [C#]" และพบย่อหน้าต่อไปนี้:
กระบวนการในการเข้าถึงฐานข้อมูลที่ปลอดภัยผ่าน Crystal Reports สำหรับ Visual Studio .NET แตกต่างกันระหว่าง Web Forms และ Windows Forms ใน Windows Forms กล่องโต้ตอบจะแจ้งให้ผู้ใช้ป้อนชื่อผู้ใช้และรหัสผ่านโดยอัตโนมัติ (การทดสอบสำเร็จได้อย่างง่ายดาย) ในเว็บฟอร์ม คุณต้องออกแบบฟอร์มเพื่อรับข้อมูลนี้จากผู้ใช้ ในทั้งสองกรณี สามารถใช้โค้ดเพื่อระบุชื่อผู้ใช้และรหัสผ่านได้ โดยให้ระดับความปลอดภัยเดียวกันสำหรับผู้ใช้แอปพลิเคชันทุกคน
ดังนั้นฉันจึงใช้ฐานข้อมูลเดียวกัน (ก่อนอื่นใช้ฐานข้อมูลการเข้าถึงในตัวอย่างวิธีใช้ และต่อมาใช้ฐานข้อมูลการเข้าถึงที่ฉันสร้างขึ้น) พบว่าสำหรับไฟล์รายงานเดียวกัน winform สามารถแสดงความสำเร็จได้ แต่เว็บฟอร์มยังคงแสดงการเข้าสู่ระบบล้มเหลว! ฉันก็เลยเข้าใจความหมายมันดี!
ดูเหมือนว่าปัญหาอยู่ที่การตั้งค่าการอนุญาต
ขั้นตอนที่ 3: ค้นคว้าเพื่อขอความช่วยเหลือและในที่สุดก็ประสบความสำเร็จ!
ในความช่วยเหลือ ฉันพบคำว่า "ตั้งค่าพารามิเตอร์การเข้าสู่ระบบฐานข้อมูล" ซึ่งให้ข้อมูลบางอย่างที่ฉันพบว่ามีประโยชน์มากในภายหลัง:
ตัวอย่างต่อไปนี้แสดงวิธีการส่งพารามิเตอร์การเข้าสู่ระบบไปยังตารางรายงาน ตัวอย่างนี้ใช้การเชื่อมต่อกับฐานข้อมูล SQL Server ที่ปลอดภัย
เริ่มต้นโครงการใหม่ และเพิ่มปุ่มและตัวควบคุมกล่องข้อความสี่ตัวลงในแบบฟอร์ม
ตั้งชื่อตัวควบคุมกล่องข้อความ: serverNameTxt, dbNameTxt, userNameTxt และpasswordTxt
คลิกสองครั้งที่ตัวควบคุมปุ่มเพื่อระบุรหัสสำหรับเหตุการณ์การคลิก ใส่รหัสที่เหมาะสมตามภาษาที่ใช้
[ค#]
//ประกาศตัวแปรที่จำเป็น
TableLogOnInfo logOnInfo = TableLogOnInfo ใหม่ ();
int i = 0;
// วนซ้ำแต่ละตารางในรายงาน
สำหรับ (i=0;i == Report.Database.Tables.Count - 1;i++)
-
//ตั้งค่าข้อมูลการเชื่อมต่อของตารางปัจจุบัน
logOnInfo.ConnectionInfo.ServerName = serverNameTxt.Text;
logOnInfo.ConnectionInfo.DatabaseName = dbNameTxt.Text;
logOnInfo.ConnectionInfo.UserID = userNameTxt.Text;
logOnInfo.ConnectionInfo.Password = รหัสผ่าน Txt.Text;
Report.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
-
โปรดทราบว่าฐานข้อมูลพีซีที่ป้องกันด้วยรหัสผ่านเช่น Microsoft Access และ Paradox ยังใช้วิธีนี้ แต่ LogonInfo.ServerName และ LogonInfo.Databasename ควรว่างเปล่า
ดังนั้นฉันจึงลองแบบนี้และไม่พบข้อความแสดงข้อผิดพลาด: ไม่พบ tablelogoninfo และรายงาน
ต่อมาฉันค้นพบว่า tablelogoninfo เป็นสมาชิกของ Crystaldecisions.Shared Namespace ดังนั้นฉันจึงเพิ่มใบเสนอราคา:
การใช้ crystaldecisions. shared;
เวลานี้ปัญหาเกิดขึ้นในรายงาน
รายงาน? นี่คืออะไร?
[อย่างจริงจัง! ปัญหานี้ทำให้ฉันลำบากมานานแล้ว! ฉันค้นหาว่ารายงานคืออะไร! บริษัท รายงาน Waterscape นั้นมีประโยชน์เช่นกันและไม่ได้เขียนรายละเอียด! ถึงเวลาต่อสู้! - - -
ในท้ายที่สุดฉันก็ค้นพบว่ารายงานเป็นเพียงวัตถุที่ผู้ใช้กำหนดไม่ใช่วัตถุของระบบเอง
เมื่อฉันสับสนฉันก็คิดว่าทำไมไม่ลองดูฐานข้อมูลที่อยู่เบื้องหลังรายงานมันคืออะไร?
ReportDocument ORPT = New ReportDocument ();
รายงานเป็นสมาชิกของ DocumentCrystaldecisions.crystalreports.engine คลาส
แก้ไขรหัส: และเพิ่มการอ้างอิง
การใช้ crystaldecisions.shared; // รับผิดชอบในการตีความคลาส tablegoninfo
การใช้ crystaldecisions.crystalreports .Engine; // รับผิดชอบในการตีความ reportDocument คลาสโมฆะส่วนตัว page_load (ผู้ส่งวัตถุ, system.eventargs e)
-
tablelogoninfo logoninfo = ใหม่ tablelogoninfo ();
// รายงานออบเจ็กต์รายงานของรายงานจะต้องประกาศล่วงหน้าและรายงานข้อมูลจะต้องโหลดในเวลาเดียวกัน
ReportDocument ORPT = New ReportDocument ();
orpt.load ("c: \ inetpub \ wwwroot \ exer \ pagelet \ crystal \ cr1.rpt"); // เปลี่ยนเป็นสถานที่ที่ถูกต้องของคุณเอง //
สร้างข้อมูลความปลอดภัย
// ฐานข้อมูลพีซีที่ป้องกันด้วยรหัสผ่านเช่น Microsoft Access และ Paradox ยังใช้วิธีนี้ แต่ logoninfo.serverName // และ logoninfo.databasename ควรว่างเปล่า
LogonInfo.ConnectionInfo.ServerName = "www";
logoninfo.connectionInfo.databasename = "Archives";
LogonInfo.ConnectionInfo.USERID = "SA";
LogonInfo.ConnectionInfo.password = "123456
"
;
CrystalReportViewer1.ReportSource = Orpt;
-
ไฟล์รายงานจะปรากฏขึ้นในที่สุด!
ว้าวฉันมีความสุขมากที่ไม่สามารถช่วยได้ แต่ยืนขึ้นและยืด!
ขั้นตอนที่ 4: รหัสฉบับสมบูรณ์สุดท้าย มีสองข้อเสีย:
(1) ไฟล์รูปแบบรายงานข้อมูลใช้เส้นทางที่แน่นอน
(2) เมื่อมีการตั้งค่าการเข้าถึงฐานข้อมูลแล้วพวกเขาจะไม่สามารถแก้ไขได้ในรุ่นสุดท้าย แนะนำสองสิ่งที่ดีกว่า:
(1) ฟังก์ชั่น Server.Mappath
(2) อ่าน web.config (ตัวอย่างนี้ยังบอกวิธีการใช้งานไฟล์การกำหนดค่า web.config)
การปรับเปลี่ยนขั้นสุดท้ายมีดังนี้: (รหัสสมบูรณ์) ฐานข้อมูลคือ SQL Server2000
การใช้ crystaldecisions.shared; // รับผิดชอบในการตีความคลาส tablegoninfo
การใช้ crystaldecisions.crystalreports .Engine; // รับผิดชอบในการตีความ reportDocument คลาส
โมฆะส่วนตัว page_load (ผู้ส่งวัตถุ, system.eventargs e)
-
tablelogoninfo logoninfo = ใหม่ tablelogoninfo ();
// รายงานออบเจ็กต์รายงานของรายงานจะต้องประกาศล่วงหน้าและรายงานข้อมูลจะต้องโหลดในเวลาเดียวกัน
ReportDocument ORPT = New ReportDocument ();
// รับเส้นทางจริงของไฟล์. rpt
String Path1, Path2;
path1 = server.mappath (" \ exer \ pagelet ");
path2 = path1+" \ crystal \ cr1.rpt ";
//orpt.load("c:C:/Inetpub\ Wwwwwwrooter\ Exer\pageletEtEletCrystal\ Cr1.rpt ");
orpt.load
(path2);
สตริง A, B, C, D;
// รับ servername
A = System.Configuration .ConfigurationSettings .AppSettings ["ServerName"];
// รับฐานข้อมูล
B = System.Configuration .ConfigurationSettings .AppSettings ["ฐานข้อมูล"];
// รับ userId
C = System.Configuration. การกำหนดค่าการตั้งค่า .AppSettings ["USERID"];
// รับรหัสผ่าน
d = system.configuration .Configurationsettings .AppSettings ["PASS"];
// ตั้งค่าพารามิเตอร์ logoninfo
LogonInfo.ConnectionInfo.ServerName = A;
logoninfo.connectionInfo.databasename = b;
LogonInfo.ConnectionInfo.USERID = C;
LogonInfo.ConnectionInfo.password
= D
;
CrystalReportViewer1.ReportSource = Orpt;
-
คำอธิบายของกระบวนการสาธิตทั้งหมด:
1. ในโซลูชัน Explorer ที่คุณต้องจัดเก็บไฟล์รายงานเพิ่มรายการใหม่: รายงาน CrystalReport ชื่อ Cr1.rpt
2. เมื่อเลือกแหล่งข้อมูลใน "รายงานผู้เชี่ยวชาญ" ที่ปรากฏในภายหลังโปรดเลือก OLE DB จากนั้นเลือกเครื่องมือขับเคลื่อนที่เกี่ยวข้องตามข้อกำหนดของฐานข้อมูลของคุณ:
SQL Server: ผู้ให้บริการ Microsoft OLE DB สำหรับ SQL Server
การเข้าถึง: Microsoft Jet.4.0
3. ป้อนการเชื่อมต่อฐานข้อมูลที่ถูกต้องโดยทั่วไปคุณจะไม่ทำผิดพลาดในขั้นตอนนี้!
4. สร้างรายงานข้อมูลและบันทึกไฟล์ cr1.rpt
5. เปิด WebForm1.aspx เพิ่ม CrystalReportViewer Control: ชื่อ: CrystalReportViewer1
6. เพิ่มรหัสด้านบนในเหตุการณ์ page_load ใน webform1.aspx.cs:
(หมายเหตุ: อย่าลืมอ้าง!)
************************************************** ****
ด้านล่างนี้เป็นรายละเอียดที่เกี่ยวข้องกับเนื้อหานี้ใน web.config
<การตั้งค่าแอป>
<เพิ่ม key = "servername" value = "www"/>
<เพิ่ม key = "database" value = "Archives"/>
<เพิ่ม key = "userId" value = "admin"/>
<เพิ่ม key = "pass" value = "123456"/>
</การตั้งค่าแอป>
*** โปรดทราบว่า <เพิ่ม key = "pass" value = "123456"/> นี่คือผ่านดังนั้นจึงต้องเป็นเช่นเดียวกับ
// รับรหัสผ่าน
d = system.configuration. การกำหนดค่าการตั้งค่า. แอพการตั้งค่า ["pass"]; "pass" ใน appsettings ["pass"] ที่นี่ยังคงสอดคล้องกัน แน่นอนคุณสามารถเลือกชื่อที่คุณชอบได้ แต่ต้องสอดคล้องกัน
http://www.cnblogs.com/zhangyd1080/archive/2006/11/15/561770.html