More Related Content
Similar to 04.report 120625040327-phpapp02
Similar to 04.report 120625040327-phpapp02 (20)
More from huynhtrong774129
More from huynhtrong774129 (10)
04.report 120625040327-phpapp02
- 2. LTUDQL 2
©HCMUS.
Nội dung
• Loại report hỗ trợ cơ bản trên VS.NET
• Crystal Report hay RDLC?
• Làm thế nào sử dụng Crystal Report trên VS .NET 2010?
• Đã cài Crystal Report, nhưng khi tạo mới 1 report (*.rpt) lại
báo lỗi lúc biên dịch, không tìm thấy control ReportViewer?
• Tạo Crystal Report với file *.mdf
- 2 -
- 3. LTUDQL 2
©HCMUS.
1.Loại report hỗ trợ cơ bản trên VS.NET
• Crystal Report (*.rpt)
• Từ phiên bản VS 2010 không còn cài sẵn, muốn sử dụng phải cài thêm
gói SAP Crystal Report
• RDLC - Report Definition Language Client-side (*.rdlc)
• Còn gọi là SQL Server Reporting Services hoặc Microsoft Report
- 3 -
- 4. LTUDQL 2
©HCMUS.
2.Crystal Report hay RDLC?
• Thông tin thảo luận trên forum Microsoft:
• http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b1068dca-
75d6-4d93-bf9f-2371547b94e9
• So sánh giữa Crystal Report và RDLC:
• http://www.crystalreportsbook.com/SSRSandCR_Conclusion.asp
• Ý kiến cá nhân:
• RDLC có giao diện in ấn đẹp mắt
• Khi tạo setup cho ứng dụng RDLC tự động nhúng vào gói cài đặt, còn
Crystal Report phải dùng merge module
• Khi chạy trên máy khác, đối với Crystal Report cài cho VS2010 cần cài
“DotNet Framework 4 full” trên client để chạy tốt.
• Crystal Report dễ sử dụng hơn RDLC
- 4 -
- 5. LTUDQL 2
©HCMUS.
3.Làm thế nào sử dụng Crystal Report trên VS .NET 2010?
• Cài đặt bản “SAP Crystal Reports, version for Visual Studio 2010 - Standard”
• http://www.businessobjects.com/jump/xi/crvs2010/us2_default.asp
- 5 -
- 6. LTUDQL 2
©HCMUS.
4.Đã cài Crystal Report, nhưng khi tạo mới 1 report (*.rpt) lại
báo lỗi lúc biên dịch, không tìm thấy control ReportViewer?
- 6 -
- 10. LTUDQL 2
©HCMUS.
5.Tạo Crystal Report với file *.mdf
• Crystal Report không kết nối trực tiếp đến *.mdf. Có thể giải
quyết như sau:
• Attach *.mdf vào SQL Server (khi attach phải run as Administrator)
USE [master]
GO
CREATE DATABASE [TruongHoc] ON
( FILENAME = N'C:QuanLyTruongHocPresentationbinDebugTruongHoc.mdf' ),
( FILENAME = N'C:QuanLyTruongHocPresentationbinDebugTruongHoc_Log.ldf' )
FOR ATTACH
GO
• Sử dụng Crystal Report kết nối đến CSDL SQL Server
• Vấn đề: Cystal Report sẽ xung đột truy xuất CSDL với kỹ
thuật LINQ nếu làm theo cách này!
• Nên sử dụng cùng một cách thức truy xuất CSDL cho LINQ
và Crystal Report (thông qua SQL Server)
- 10 -
- 11. LTUDQL 2
©HCMUS.
6.Áp dụng LINQ vào Crystal Report
• DataSource của CrystalReportDocument có thể là dạng kiểu
tập hợp (danh sách, bảng dữ liệu, DataSet, …)
• Chuyển kết quả truy vấn của LINQ sang dạng danh sách,
DataTable, DataSet (DataTable không bị lỗi biên dịch)
• Sử dụng .NET Framework 3.5 để biên dịch
- 11 -
- 12. LTUDQL 2
©HCMUS.
6.Áp dụng LINQ vào Crystal Report (tt)
'Thong ke hoc sinh theo diem trung binh
lstHs = hsBus.ThongKeHocSinhTheoDTB(5)
Dim tableDemo As New DataTable("demo")
tableDemo.Columns.Add("Ma")
tableDemo.Columns.Add("Ten")
tableDemo.Columns.Add("DTB")
tableDemo.Columns.Add("TenLop")
For Each item In lstHs
Dim dr As DataRow
dr = tableDemo.NewRow()
dr("Ma") = item.Ma
dr("Ten") = item.Ten
dr("DTB") = item.DTB
dr("TenLop") = item.LopHoc.Ten
tableDemo.Rows.Add(dr)
Next
rpt.SetDataSource(tableDemo)
CrystalReportViewer1.ReportSource = rpt
- 12 -
- 13. LTUDQL 2
©HCMUS.
7.Chạy ứng dụng trên máy khác – App.Config (Presentation)
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/></startup>
<appSettings>
<add key="connectionString" value="Data Source=BTLOC-
LAPTOPSQLEXPRESS;Initial Catalog=TruongHoc;Integrated
Security=True" />
</appSettings>
</configuration>
• Khi biên dịch sẽ tạo ra file <TenProject>.exe.config có nội dung
như trên. File này nằm cùng thư mục với tập tin thực thi. Chỉ
cần chỉnh sửa giá trị của file config được biên dịch này là có thể
chạy trên máy khác.
- 13 -
- 14. LTUDQL 2
©HCMUS.
7.Chạy ứng dụng trên máy khác – Đọc chuỗi kết nối
Dim cnStr As String
cnStr =
System.Configuration.ConfigurationSettings
.AppSettings("ConnectionString")
- 14 -
- 15. LTUDQL 2
©HCMUS.
7. Chạy ứng dụng trên máy khác
Thay đổi chuỗi kết nối cho Crystal Report
Dim rpt As New rptDanhSachHocSinh()
MyModule.ChangeConnection(rpt, cnStr)
Dim lhBus As New LopHocBus(cnStr)
Dim dsLopHoc As IList
dsLopHoc = lhBus.LayDanhSach()
- 15 -
- 16. LTUDQL 2
©HCMUS.
7. Chạy ứng dụng trên máy khác
Hàm ChangeConnection
Dim conn_string_array() As String =
Split(cnStr, ";")
Dim key_value() As String
For i = 0 To conn_string_array.Count - 1
key_value = Split(conn_string_array(i), "=")
If key_value(0).ToLower = "data source" Then
server_name = key_value(1)
ElseIf key_value(0).ToLower = "initial
catalog" Then
database_name = key_value(1)
ElseIf key_value(0).ToLower = "user id" Then
user_id = key_value(1)
ElseIf key_value(0).ToLower = "password"
Then
password = key_value(1)
ElseIf key_value(0).ToLower = "integrated
security" Then
sspi = key_value(1)
End If
Next
For i = 0 To rpt.Database.Tables.Count - 1
Dim logoninfo As TableLogOnInfo
logoninfo = rpt.Database.Tables(i).LogOnInfo
logoninfo.ConnectionInfo.ServerName =
server_name
logoninfo.ConnectionInfo.DatabaseName =
database_name
logoninfo.ConnectionInfo.UserID = user_id
logoninfo.ConnectionInfo.Password = password
logoninfo.ConnectionInfo.IntegratedSecurity
= sspi
rpt.Database.Tables.Item(i).ApplyLogOnInfo(logo
ninfo)
Next
- 16 -
- 17. LTUDQL 2
©HCMUS.
7. Chạy ứng dụng trên máy khác
Thay đổi chuỗi cnStr cho LINQ
Public Class LopHocBus
Private _cnStr As String
Public Sub New(ByVal cnStr As String)
_cnStr = cnStr
End Sub
Public Function LayDanhSach() As IList
'Kiem tra business rule neu co
Dim db As New TruongHocDataContext(_cnStr)
Dim query = From lh In db.LopHocs
Select lh
Return query.ToList()
End Function
End Class
- 17 -