1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình Csharp .Net tập 6

594 460 11

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 594
Dung lượng 5,82 MB

Nội dung

Chương 3 Tìm hiểu Crystal Reports Object Model Trong chương này, chúng tôi sẽ tìm hiểu sâu về mô hình đối tượng Crystal Reports với cách sử dụng lớp ReportDocument để qui chiếu hầu như

Trang 2

LẬP TRÌNH BÁO CÁO dùng CRYSTAL REPOTTS.NET và C#

Lập trình Visual C# thế nào?

Trang 4

DƯƠNG QUANG THIỆN

Trang 7

5 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

Tập 6: Lập trình báo cáo sử dụng

Crystal Reports NET

Mục Lục Mục lục 5

Chương 1 Tổng quan về Crystal Reports NET

1.1 Crystal Reports là gì? 29

1.2 Bạn có thể làm được gì với Crystal Reports? 30

1.3 Crystal Reports NET khác biệt so với các phiên bản Crystal

Reports trước thế nào? 35

1.3.1 Integrated Design Environment (IDE) 35

1.3.2 Bất cứ ngôn ngữ nào, bất cứ lúc nào 35

1.3.3 Các phương pháp hội nhập 36

1.3.4 Dễ sử dụng 36

1.3.5 Xây dựng các ứng dụng công ty xí nghiệp 36

1.3.6 Kiến trúc báo cáo 38

1.3.6.1 Kiến trúc kiểu đơn tầng (single-tier) 39

1.3.6.2 Kiến trúc kiểu lưỡng tầng (two-tier) 39

1.3.6.3 Kiến trúc kiểu tam tầng (three-tier) 40

1.3.6.4 Các ứng dụng đa tầng (multi-tier application) 40

1.3.7 Report Designer 41

1.3.8 Những điểm không tương thích 42

1.4 Các lợi điểm của Crystal Reports.NET 43

1.5 Học từ các ứng dụng mẫu 44

1.5.1 Cài đặt các ứng dụng mẫu 44

1.5.2 Các báo cáo mẫu 46

1.5.3 Dữ liệu mẫu 47

Chương 2 Hãy thử bắt đầu với Crystal Reports NET

2.1 Thử tạo báo cáo đầu tiên rất đơn giản 48

Trang 8

Mục lục 6

2.2 Báo cáo thứ hai tinh vi hơn một chút 56

2.3 Thí dụ thứ 3 phức tạp hơn: Báo cáo International Sales.rpt 65

2.4 Làm việc với Report Design Environment 85

2.4.1 Trình đơn và Thanh công cụ 85

2.4.2 Cho đặt để các thuộc tính mặc nhiên 86

2.5 Các điều cơ bản về thiết kế báo cáo 87

2.5.1 Các phân đoạn của báo cáo (report section) 87

2.5.2 Định dạng báo cáo 89

2.5.3 Các đối tượng vùng mục tin (field object) 90

2.5.3.1 Database Fields 90

2.5.3.2 Text Objects 91

2.5.3.3 Special Fields 91

2.5.3.4 Summary Fields 92

2.5.3.5 Formula Fields 93

2.5.3.6 Parameter Fields 94

2.5.3.7 SQL Expression Fields 96

2.5.3.8 Unbound Fields 97

Chương 3 Tìm hiểu Crystal Reports Object Model

3.1 Cơ bản về uốn nắn các báo cáo 99

3.1.1 ASP.NET Template 102

3.2 Tìm hiểu về đối tượng ReportDocument 103

3.2.1 Tìm đọc các thông tin tóm lược – Lớp Summary Information 106

3.2.2 Cho đặt để các thuộc tính báo cáo - Lớp ReportOptions 107

3.2.3 Kết nối về dữ liệu nguồn – Lớp Database 107

3.2.4 Thay đổi các mục chọn máy in – Lớp PrintOptions 108

3.2.5 Xuất khẩu các báo cáo – Lóp ExportOptions 110

3.2.6 Qui chiếu và định dạng các đối tượng báo cáo – Lớp ReportDefinition 111

3.2.7 Thay đổi các đối tượng báo cáo – Lớp DataDefinition 111

3.3 Tìm hiểu đối tượng CrystalReportViewer 111

3.3.1 Phản ứng trước các tình huống 113

3.3.2 Thụ lý các biệt lệ 117

Trang 9

7 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

Chương 4 Sắp xếp & Gộp nhóm

4.1 Sắp xếp các mẫu tin 120

4.2 Gộp theo nhóm các mẫu tin 122

4.2.1 Thêm các nhóm và uốn nắn nhóm 123

4.2.2 Sắp xếp dữ liệu nhóm 127

4.3 Thay đổi vùng mục tin dùng gộp nhóm 127

4.4 Cho hiển thị các bản báo cáo Top N 128

4.5 Cho hiển thị báo cáo đẳng cấp 129

4.6 Xoáy sâu vào chi tiết dữ liệu 130

4.7 Tổng kết dữ liệu 132

4.8 Lập trình mô hình đối tượng liên quan đến sắp xếp và gộp nhóm 135

4.8.1 Tìm hiểu các lớp Sorting và Grouping 135

4.8.2 Ánh xạ các đối tượng sắp xếp và gộp nhóm 138

4.8.3 Lập trình các đối tượng sắp xếp và gộp nhóm 142

4.8.4 Tìm hiểu các lớp Summary Field 146

Chương 5 Sử dụng các thông số

5.1 Nhập thông số 149

5.1.1 Thêm các thông số 149

5.1.2 Cho đặt để các trị mặc nhiên 152

5.1.3 Nhập vào thông số khi chạy báo cáo 154

5.2 Lập trình mô hình đối tượng liên quan đến các thông số 155

5.2.1 Thay thế các thông số bởi những công thức 156

5.2.2 Tìm hiểu các lớp Parameter 157

5.2.2.1 Ánh xạ các lớp Parameter 161

5.2.2.2 Lập trình các lớp Parameter 163

5.2.2.3 Lập trình với lớp ReportDocument 164

5.2.2.4 Lập trình với lớp CrystalReportViewer 167

5.2.3 Thay đổi các thông số của Subreport 169

5.2.4 Đơn giản hoá việc lập trình các thông số 169

Trang 10

Mục lục 8

Chương 6 Uốn nắn các báo cáo

6.1 Chọn ra các mẫu tin 174

6.1.1 Sử dụng Select Expert 174

6.1.2 Chọn các mẫu tin để gộp nhóm 178

6.2 Các phân đoạn (section) 178

6.2.1 Định dạng các phân đoạn 179

6.2.1.1 Che dấu và gỡ bỏ phân đoạn 181

6.2.1.2 In ra các phân đoạn vào cuối trang 181

6.2.1.3 Ép sang trang 182

6.2.1.4 Cho số trang trở về 1 182

6.2.1.5 Giữ các phân đoạn nằm với nhau 182

6.2.1.6 Gỡ bỏ những phân đoạn trắng 183

6.2.1.7 Cho nằm dưới các phân đoạn sau đây 183

6.2.1.8 Định dạng với nhiều cột 185

6.2.2 Thêm vào nhiều phân đoạn 187

6.3 Running Totals 192

6.4 Lập trình mô hình đối tượng Crystal Reports Engine 195

6.4.1 Thay đổi Record Selection 196

6.4.2 Ánh xạ các lớp ReportDefinition 197

6.4.3 Lập trình lớp ReportDefinition thế nào? 202

6.4.3.1 Qui chiếu các đối tượng báo cáo thế nào? 204

6.4.3.2 Thay đổi các thuộc tính của Report Object 205

Chương 7 Tìm hiểu về Công thức và Lôgic chương trình

7.1 Cho hội nhập Công thức và Lôgic vào các bản báo cáo 207

7.1.1 Cấu trúc căn cứ dữ liệu 208

7.1.2 Dữ liệu ứng dụng 209

7.1.3 Các lệnh Crystal SQL 210

7.1.4 Các biểu thức Crystal SQL 211

7.1.5 Các công thức 212

7.2 Làm việc với Formula Editor 213

7.2.1 Điều khiển dáng dấp của Formula Editor 213

7.2.2 Điều khiển loại cú pháp 217

7.2.3 Kiểm tra lỗi cú pháp 218

7.2.4 Sử dụng các công thức để tính toán 219

7.2.5 Định dạng động sử dụng công thức 220

Trang 11

9 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

7.2.5.1 Thêm các công thức 220

7.2.5.2 Sử dụng Default Attribute và Current Field Value 223

7.3 Tạo các công thức với Basic Syntax 224

7.3.1 Basic Syntax là gì? 224

7.3.2 Qui ước lập trình Basic Syntax 225

7.3.3 Các kiểu dữ liệu 229

7.3.3.1 Các kiểu dữ liệu đơn giản 229

7.3.3.2 Kiểu dữ liệu bản dãy 230

7.3.3.3 Kiểu dữ liệu Range 232

7.3.4 Các tác tử đơn giản & Hàm 235

7.3.4.1 Tác tử toán số học 236

7.3.4.2 Tác tử Boolean 237

7.3.4.3 Tác tử so sánh 238

7.3.4.4 Tác tử chuyển đổi kiểu dữ liệu 238

7.3.4.5 Các hàm tổng kết (summary functions) 241

7.3.4.6 Các hàm thao tác chuỗi 241

7.3.4.7 Các hàm Date & Time 246

7.3.4.8 Các thuộc tính Print State và Document 252

7.3.4.9 Định dạng các trị kết xuất 253

7.3.4.10 Các hàm toán học 255

7.3.4.11 Kết sinh số bất kỳ (random number) 256

7.3.4.12 Định trị Time Default 256

7.3.5 Các cấu trúc điều khiển 260

7.3.5.1 Các cấu trúc điều kiện 261

7.3.5.2 Các hàm điều kiện 263

7.3.5.3 Các cấu trúc vòng lặp 266

7.3.5.4 Các biểu thức điều kiện 267

7.4 Tạo các công thức sử dụng Crystal Syntax 267

7.4.1 Khác biệt so với Basic Syntax 268

7.5 Tạo các công thức chọn mẫu tin 270

7.6 Làm việc với định dạng theo điều kiện 271

7.6.1 Tìm hiểu định dạng theo điều kiện 272

7.6.2 Định dạng theo điều kiện đối với thuộc tính boolean 273

7.6.3 Định dạng theo điều kiện đối với các thuộc tính có nhiều trị 273

Chương 8 Vẽ biểu đồ thế nào?

8.1 Thêm một biểu đồ vào bản báo cáo 279

8.1.1 Chọn ra một loại biểu đồ sử dụng Tab Type 280

Trang 12

Mục lục 10

8.1.1.1 Side-by-side bar chart 282

8.1.1.2 Stacked bar chart 282

8.1.1.3 Line chart 283

8.1.1.4 Area chart 283

8.1.1.5 Pie chart 284

8.1.1.6 Doughnut chart 285

8.1.1.7 3-D Riser chart 285

8.1.1.8 3-D Surface chart 286

8.1.1.9 XY Scatter chart 287

8.1.1.10 Radar chart 287

8.1.1.11 Bubble chart 288

8.1.1.12 Stock chart 289

8.1.2 Cách bố trí biểu đồ khác nhau đối với những kiểu dữ liệu khác nhau 290

8.1.3 Chỗ đặt biểu đồ ảnh hưởng lên dữ liệu nó tượng trưng 291

8.1.4 Cho đặt để các data points sử dụng Tab Data 291

8.1.4.1 Đặt để mục chọn Evaluate 293

8.1.4.2 Đặt để các vùng mục tin trên Show Value(s) 295

8.1.4.3 Thỏa mãn đòi hỏi vùng mục tin tối thiểu 295

8.1.5 Thêm vào các group chart 296

8.1.6 Thêm các biểu đồ Cross-Tab 298

8.1.7 Cho đặt để các tiêu đề thông qua tab Text 299

8.2 Sử dụng Tab Options của Chart Expert 300

8.3 Sử dụng trình đơn Format Chart 302

8.4 Từ một biểu đồ bạn cho xoáy sâu vào chi tiết 304

8.5 Thay đổi một biểu đồ 304

8.6 Một thí dụ để kết thúc 305

Chương 9 Tạo báo cáo Cross-Tab

9.1 Thử tạo một thí dụ cross-tab tổng kết tất cả dữ liệu bản báo cáo 308

9.2 Thí dụ một cross-tab tổng kết nội dung một group 314

9.3 Tìm hiểu về bản báo cáo cross-tab 316

9.3.1 Tạo một đối tượng cross-tab 319

9.3.2 Đặt vào chỗ đối tượng cross-tab 321

Trang 13

11 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

9.3.3 Định dạng khung lưới cross-tab 323

9.3.4 Định dạng các thuộc tính Style 324

9.3.5 Quản lý các cột 326

Chương 10 Thêm Subreport vào báo cáo chính

10.1 Các mục chọn cho phép kết nối subreport với báo cáo chính 330

10.1.1 Kết nối với vùng mục tin căn cứ dữ liệu 331

10.1.2 Kết nối với một vùng mục tin công thức 332

10.1.3 Sử dụng các subreport bất kết nối 334

10.1.4 Dùng các vùng mục tin công thức không kết nối 334

10.1.5 Trao qua dữ liệu thông qua các biến shared 335

10.2 Thêm một subreport vào báo cáo chính 336

10.2.1 Kết nối với một vùng mục tin căn cứ dữ liệu 337

10.2.2 Kết nối với một formula field 338

10.2.3 Các Subreport bất kết nối 339

10.2.4 Bất kết nối với một công thức 339

10.2.5 Bất kết nối với biến shared 340

10.3 Hiệu đính Subreport 342

10.4 Sử dụng On-Demand Subreports 347

10.5 Lập trình mô hình đối tượng Crystal Reports Engine đối với Subreport 350

10.5.1 Thay đổi các Subreport 350

Chương 11 Hội nhập báo cáo vào ứng dụng Windows

11.1 Đặt kế hoạch cho ứng dụng của bạn 354

11.1.1 Khảo sát môi trường triển khai 356

11.1.2 Bắt đầu một ứng dụng Windows mới sử dụng Visual C# 356

11.2 Xác định đúng mô hình đối tượng 357

11.3 Tìm hiểu namespace CrystalDecisions.Windows.Forms 359

11.4 Sử dụng Crystal Report Viewer cho Windows Forms 360

11.4.1 Thêm một báo cáo vào ứng dụng 362

11.4.2 Thêm một Report Viewer vào Windows Form 362

11.4.3 Gắn kết một báo cáo vào Report Viewer 363

Trang 14

Mục lục 12

11.4.3.1 Gắn kết theo tên báo cáo 363

11.4.3.2 Gắn kết theo đối tượng báo cáo 363

11.4.3.3 Gắn kết với một Untyped Report 365

11.4.3.4 Gắn kết với một strongly-typed Report 366

11.4.4 Chuyển giao thông tin đăng nhập căn cứ dữ liệu 367

11.4.5 Cho đặt để Report Record Selection 369

11.5 Cho uốn nắn dáng dấp và cách bố trí của Report Viewer 371

11.5.1 Các hàm hành sự của ô control CrystalReportViewer 374

11.5.1.1 In ra một bản báo cáo 375

11.5.1.2 Refresh dữ liệu trên một bản báo cáo 378

11.5.1.3 Exporting một bản báo cáo 378

11.5.1.4 Page Navigation và Zoom 381

11.5.1.5 Truy tìm trong lòng một bản báo cáo 384

11.5.2 Sử dụng các tình huống viewer 385

11.5.2.1 Các tình huống Page Navigation 386

11.5.2.2 Các tình huống Refresh 386

11.5.2.3 Các tình huống Search 387

11.5.2.4 Các tình huống Viewer 387

11.5.2.5 Các tình huống Zoom 388

11.5.3 Xoáy sâu vào chi tiết bản báo cáo 388

11.5.4 Xoáy sâu lên các subreport 391

11.5.5 Làm với những biệt lệ trên các bản báo cáo 391

Chương 12 Hội nhập báo cáo vào ứng dụng Web

12.1 Đặt kế hoạch cho ứng dụng của bạn 393

12.2 Thử khảo sát môi trường triển khai 395

12.2.1 Trước khi ta bắt đầu vào cuộc 396

12.2.2 Bắt đầu một ứng dụng web mới với Visual C# 396

12.3 Xác định đúng mô hình đối tượng 397

12.4 Tìm hiểu namespace CrystalDecisions.Web.Forms 398

12.5 Sử dụng ô control Crystal Report Viewer đối với Web Forms 400

12.5.1 Thêm một báo cáo vào ứng dụng 402

12.5.2 Thêm Report Viewer vào một Web Form 405

12.5.3 Gắn kết một báo cáo vào Report Viewer 405

12.5.3.1 Gắn kết theo tên báo cáo 405

12.5.3.2 Gắn kết theo Report Object 406

12.5.3.3 Gắn kết với một báo cáo untyped 407

12.5.3.4 Gắn kết với một Strongly-Typed Report 409

Trang 15

13 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

12.5.3.5 Gắn kết với một Strongly-Typed Cached Report 410

12.6 Uốn nắn dáng dấp và cách bố trí của Report Viewer 411

12.6.1 Các hàm hành sự của ô control CrystalReportViewer 415

12.6.1.1 Cho đặt để việc tô vẽ browser 417

12.6.1.2 Làm tươi dữ liệu trên một báo cáo 417

12.6.1.3 Page Navigation và Zoom 418

12.6.1.4 Truy tìm bên trong một bản báo cáo 420

12.6.2 In ra bản báo cáo 421

12.6.2.1 In từ Browser 423

12.6.2.2 In từ Adobe Acrobat Plug-In 424

12.6.2.3 In ra từ các Export Formats khác 426

12.6.3 Sử dụng các tình huống của Viewer 428

12.6.3.1 Page Navigation Events 428

12.6.3.2 Refresh Events 429

12.6.3.3 Search Events 429

12.6.3.4 Zoom Events 430

Chương 13 Tạo XML Report Web Services

13.1 Tổng quan về XML Report Web Services 431

13.1.1 XML Report Web Service là gì? 433

13.1.2 Làm thế nào sử dụng một XML Report Web Service? 434

13.2 Tạo XML Report Web Services 435

13.2.1 Tạo một Report Web Services cơ bản 435

13.2.2 Tạo Report Web Services với nhiều bản báo cáo 438

13.2.3 Sử dụng Report Web Service chung chung (generic) 438

13.3 Tiêu thụ XML Report Web Services 440

13.4 External Report Web Service 441

13.5 Internal Report Web Service 443

13.5.1 Generic Report Web Service 444

13.6 Vài suy nghĩ về việc triển khai Report Web Services 445

13.7 Lập trình mô hình đối tượng Crystal Reports Engine 448

13.7.1 Thay đổi báo cáo vào lúc chạy phía Client 448

13.7.2 Thay đổi báo cáo vào lúc chạy từ phía Server 449

Chương 14 Làm việc với các dữ liệu nguồn

Trang 16

Mục lục 14

14.1 Truy cập dữ liệu với Crystal Reports.NET 452

14.1.1 Các tập tin căn cứ dữ liệu 453

14.1.2 Các căn cứ dữ liệu quan hệ 454

14.1.3 OLAP Data 455

14.1.4 Crystal Dictionaries, Queries và Info Views 455

14.1.5 Các dữ liệu nguồn khác 455

14.2 Làm việc với các dữ liệu nguồn 456

14.2.1 Cho đặt để các mục chọn căn cứ dữ liệu 456

14.2.2 Thêm một căn cứ dữ liệu hoặc một bảng dữ liệu vào một báo cáo 459

14.2.3 Sử dụng khung đối thoại Database Expert | Tab Links 462

14.2.4 Kiểm tra cấu trúc căn cứ dữ liệu dùng trong bản báo cáo 466

14.2.5 Thay đổi nơi định cư của một căn cứ dữ liệu 467

14.2.6 Cho đặt để một Database Alias 470

14.3 Làm việc với SQL Commands 472

14.3.1 Định nghĩa các bảng dữ liệu ảo 473

13.3.2 Chọn ra các bảng dữ liệu và vùng mục tin 477

14.3.3 Cho sàng lọc các mẫu tin 478

14.3.4 Sắp xếp và gộp nhóm các mẫu tin 481

14.3.4.1 Những hạn chế đối với Sorting và Grouping 481

14.4 Làm việc với SQL Expression 482

14.4.1 Tạo biểu thức SQL 483

14.5 Làm việc với ADO.NET 486

14.5.1 Một ADO.NET Dataset 486

14.5.2 Nhìn xem nội dung của một Dataset 490

14.5.3 Tạo một báo cáo từ một ADO.NET Dataset 494

14.5.4 Nhìn xem các báo cáo có chứa một ADO.NET Dataset 496

14.6 Lập trình mô hình đối tượng Crystal Reports Engine 499

14.6.1 Thi công Push Model 500

14.6.1.1 Định nghĩa tập tin lược đồ Dataset 501

14.5.1.2 Xây dựng báo cáo dùng đến tập tin DataSet 506

14.5.1.3 Cho điền đầy dữ liệu lên đối tượng DataSet 508

14.6.1.4 Cho gắn kết DataSet với bản báo cáo 513

14.6.2 Lớp Database 514

14.6.3 Đăng nhập vào dữ liệu nguồn an toàn 516

14.6.3.1 Đăng nhập sử dụng ReportDocument 517

14.5.3.2 Đăng nhập sử dụng Viewer Control 518

14.6.4 Các thông số và stored procedure 519

Trang 17

15 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

14.6.4.1 SET NOCOUNT ON 521

14.6.4.2 Thay đổi dữ liệu nguồn bằng lập trình 522

14.6.5 Làm việc với các Subreport 527

14.6.6 In ra các hình ảnh động 528

Chương 15 Xuất khẩu và triển khai hoạt động các báo cáo

15.1 Xuất khẩu các báo cáo 532

15.1.1 Xuất khẩu thông qua Viewer 533

15.1.2 Xuất khẩu thông qua lập trình 534

15.1.3 Xuất khẩu dễ dàng lên tập tin đĩa 535

15.1.4 Xuất khẩu cấp cao hơn 537

15.1.5 Xuất khẩu về ghi lên một đĩa từ 539

15.1.6 Xuất khẩu về Email 540

15.1.7 Xuất khẩu về Exchange Folder 541

15.1.8 Định dạng đối với các tài liệu PDF, RTF và Word 542

15.1.9 Định dạng xuất khẩu đối với Excel 543

15.1.10 Định dạng xuất khẩu đối với HTML 544

15.2 Triển khai và phân phối ứng dụng báo cáo 546

15.2.1 Tổng quan về phân phối ứng dụng 547

15.2.2 Bắt đầu thử nghiệm 548

15.2.2.1 Template Setup Projects 548

15.2.2.2 Template Web Setup Projects 549

15.2.2.3 Template Merge Module Project 549

15.2.2.4 Template Setup Wizard 551

15.2.3 Các đòi hỏi triển khai cơ bản 551

15.2.3.1 Hệ điều hành 552

15.2.3.2 Phần cứng 553

15.2.4 Triển khai các ứng dụng Windows 553

15.2.4.1 Tạo một Setup project mới 553

15.2.4.2 Thêm Merge Modules 555

15.2.4.3 Thêm mục khoá bản quyền 556

15.2.5 Triển khai các ứng dụng Web 559

15.2.5.1 Chuẩn bị Web Server 559

15.2.5.2 Tạo Setup Project 559

15.2.5.3 Chọn các kết xuất dự án 560

15.2.5.4 Thêm các Merge Module 560

15.2.5.5 Giải quyết LicenseKey 561

15.2.6 Trắc nghiệm và triển khai setup của bạn 561

Trang 18

Mục lục 16

Lời mở đầu

Vào tháng 7/1998 người viết cho phát hành tập I bộ sách “Lập trình Windows sử dụng Visual C++ 6.0 và MFC” Toàn bộ gồm 8 tập, 6 nói về lý thuyết và 2 về thực hành Các tập đi sau được phát hành lai rai mãi đến 10/2000 mới xong Bộ sách được bạn đọc đón chào nồng nhiệt (mặc dầu chất lượng giấy và kiểu quay ronéo không được mỹ thuật cho lắm, nhưng giá rẻ vừa túi tiền bạn đọc) và được phát hành đi phát hành lại trên 10 ngàn bộ và không biết bao nhiêu đã bị photocopy và “bị luộc” Và vào thời điểm hoàn thành bộ sách lập trình Windows kể trên (tháng 10/2000) người viết cũng đã qua 67 tuổi, quá mệt mỏi và cũng vào lúc vừa giải thể văn phòng SAMIS không kèn không trống, thế

là người viết quyết định “rửa tay gác kiếm” luôn, mặc dầu trước đó vài ba tháng đã biết Microsoft manh nha cho ra đời một ngôn ngữ lập trình mới là C# trên một sàn diễn mang tên NET ám chỉ ngôn ngữ thời đại mạng Internet Tuy nhiên, như đã định soạn giả vẫn ngưng viết, xem như nghĩ hưu luôn, quay về chăm sóc vườn phong lan bị bỏ bê từ lúc bắt đầu viết bộ sách lập trình Windows kể trên

Nghỉ hưu thiếu vài tháng thì đúng 3 năm vào tháng 5/2003, anh Nguyễn Hữu Thiện,

người sáng lập ra tờ báo eChip, mời tham gia viết sách thành lập tủ sách tin học cho tờ

báo Thế là “a lê hấp” người viết đồng ý ngay, cho đặt mua một lô sách về C#, VB.NET

và NET Framework để nghiên cứu Càng đọc tài liệu càng thấy cái ngôn ngữ mới này nó khác với C++ trước khá nhiều, rõ ràng mạch lạc không rối rắm như trước và rất dễ học một cách rất ư tự nhiên Thế là một mạch từ tháng 5/2003 đến nay, người viết đã hoàn chỉnh xong 8 tập Mỗi tập dài vào khoảng từ 600 đến 750 trang

Bạn cứ thử hình dung là trong ngành điện toán, cứ vào khoảng một thập niên thì có một cuộc cách mạng nho nhỏ trong cách tiếp cận về lập trình Vào thập niên 1960 là sự xuất hiện ngôn ngữ Cobol và Fortran (cũng như ngôn ngữ RPG của IBM) thay thế cho ngôn ngữ hợp ngữ, giữa thập niên 70 là sự xuất hiện máy vi tính với ngôn ngữ Basic vào đầu thập niên 80 những công nghệ mới là Unix có thể chạy trên máy để bàn với ngôn ngữ cực mạnh mới là C, phát triển bởi ATT Qua đầu thập niên 90 là sự xuất hiện của Windows và C++ (được gọi là C với lớp), đi theo sau là khái niệm về lập trình thiên đối tượng trong bước khai mào Mỗi bước tiến triển như thế tượng trưng cho một đợt sóng thay đổi cách lập trình của bạn: từ lập trình vô tổ chức qua lập trình theo cấu trúc (structure programming hoặc procedure programming), bây giờ qua lập trình thiên đối tượng Lập trình thiên đối tượng trên C++ vẫn còn “khó nuốt” đối với những ai đã quen cái nếp nghĩ theo kiểu lập trình thiên cấu trúc Vả lại, lập trình thiên đối tượng vào cuối thập niên qua vẫn còn nhiều bất cập, không tự nhiên nên viết không thoải mái

Bây giờ, với sự xuất hiện của NET với các ngôn ngữ C#, VB.NET, J# xem ra cách suy nghĩ về việc viết chương trình của bạn sẽ thay đổi theo chiều hướng tích cực Nói một cách ngắn gọn, sàn diễn NET sẽ làm cho bạn triển khai phần mềm dễ dàng hơn trên Internet cũng như trên Windows mang tính chuyên nghiệp và thật sự thiên đối tượng Nói

Trang 19

17 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

một cách ngắn gọn, sàn diễn NET được thiết kế giúp bạn triển khai dễ dàng những ứng dụng thiên đối tượng chạy trên Internet trong một môi trường phát tán (distributed) Ngôn ngữ lập trình thiên Internet được ưa thích nhất sẽ là C#, được xây dựng từ những bài học kinh nghiệm rút ra từ C (năng suất cao), C++ (cấu trúc thiên đối tượng), Java (an toàn) và Visual Basic (triển khai nhanh, gọi là RAD - Rapid Application Development) Đây là một ngôn ngữ lý tưởng cho phép bạn triển khai những ứng dụng web phát tán được kết cấu theo kiểu ráp nối các cấu kiện (component) theo nhiều tầng nấc (n-tier)

Tập VI được tổ chức thế nào

Tập VI này là tập cuối nói về lý thuyết của bộ sách NET toàn tập Theo mô hình lập

trình các ứng dụng ngày nay, người ta chia ứng dụng ra làm 3 lớp (layer): presentation

layer, business layer và data access layer Presentation layer là phần chương trình liên

quan đến nhập liệu và kết xuất lên màn hình hoặc lên các báo cáo in ra giấy, nghĩa là có tương tác với người sử dụng Phần data access layer là những gì liên quan đến căn cứ dữ liệu, đến các tập tin trữ trên đĩa bất cứ dưới dạng thức nào (Word, Access, Excel chẳng hạn) Còn phần Business layer là những thủ tục (procedures), những qui tắc xử lý (rules)

mà ta thường thấy trong kinh doanh (do đó có từ business) Qua hai tập I, “C# Căn bản”

và tập II, “C# và NET Framework” của bộ sách NET toàn tập này thì business layer đã được đề cập trọn vẹn Tập III, “Giao diện người sử dụng” đã đề cập đến Presentation layer về phần nhập liệu phía người sử dụng, còn tập IV, “Lập trình căn cứ dữ liệu với ADO.NET” trình bày trọn vẹn phần Data Access layer Còn tập VI này, “Lập trình các báo cáo sử dụng Crystal Reports” thì lại trình bày phần Presentaion layer phía kết xuất các báo cáo, đối nghịch với giao diện người sử dụng phía nhập liệu Cuối cùng tập V,

“Lập trình Web và ASP.NET” là những gì được trình bày trong 3 lớp nhưng được sử dụng trong các ứng dụng mạng Web

Nếu bạn kinh qua 6 tập sách vừa kể trên thì bạn có khả năng lập trình trên Windows

và trên Web và có thể bắt đầu đi vào các ứng dụng quản lý xí nghiệp như ERP (Enterprise Resources Planning – Hoạch định Nguồn lực Doanh nghiệp) chẳng hạn

Chương 1 Tổng quan về Crystal Reports NET

Trong chương này, chúng tôi trình bày cái nhìn đầu tiên về Crystal Reports for Visual Studio NET (Crystal Reports NET), bao gồm việc cho biết sản phẩm phần mềm này khác biệt so với những phiên bản Crystal Reports khác trước như thế nào, làm thế nào tìm

và chạy những ứng dụng mẩu kèm theo Chúng tôi cũng lướt qua kiến trức mới của Crystal Reports NET và học cách thích nghi với NET Framework Cho dù bạn là một lập trình viên chuyên nghiệp chuyên triển khai những ứng dụng đang muốn chuyển qua

sử dụng Visual Studio NET hoặc bạn đang triển khai ứng dụng đầu tiên và chưa hề nghe nói đến Crystal Reports, thì tất cả bắt đầu từ đây với Report Designer

Trang 20

Mục lục 18

Chương 2 Hãy thử bắt đầu với Crystal Reports NET

Trong chương này ta sẽ lần lượt sử dụng Crystal Reports Report Designer trong lòng Visual Studio NET để thiết kế 3 thí dụ báo cáo từ đơn giản đến phức tạp, học cách tạo và

du nhập các báo cáo dùng trong các ứng dụng Windows và Web Vào cuối chương bạn sẽ

có khả năng triển khai những báo cáo cơ bản và có thể hội nhập các báo cáo này vào ứng

dụng Windows hoặc Web Nếu bạn đã có kinh nghiệm sử dụng Crystal Reports trước đây, thì những điều mô tả trong chương sẽ rất quen thuộc đối với bạn Những điều được trình bày trong chương này sẽ đeo đuổi bạn suốt cuộc đời làm báo cáo của bạn

Chương 3 Tìm hiểu Crystal Reports Object Model

Trong chương này, chúng tôi sẽ tìm hiểu sâu về mô hình đối tượng Crystal Reports

với cách sử dụng lớp ReportDocument để qui chiếu hầu như tất cả các lớp và thuộc tính của báo cáo, của ô control CrystalReportViewer, thường được gọi là viewer và với mô

hình đối tượng Crystal Reports bằng cách tham gia vào những tình huống (event) được kích hoạt trong khi bản báo cáo được nhìn xem trước hoặc đang được in ra Các tình huống này rất hữu ích khi biết được là phần nào trên báo cáo đang trong vòng quan sát và người sử dụng đang làm gì

Chương 4 Sắp xếp & Gộp nhóm

Phần lớn các bản báo cáo không chỉ đơn thuần gồm một vài trang, mà vài trăm trang

là chuyện bình thường Và khi tham khảo một tập tài liệu dày như thế mà dữ liệu lại được trình bày lộn xộn không được sắp xếp theo một trật tự nào đó hoặc gộp theo nhóm (thường được gọi là ngắt cấp bậc) thì sẽ mất thời giờ và công sức đối với người đọc Crystal Reports cho bạn khả năng sắp xếp dữ liệu và gộp dữ liệu theo nhóm Các báo cáo gộp nhóm (grouping report) cũng sẽ cho phép bạn khả năng tạo những báo cáo xoáy sâu (drill-down report) và tổng kết dữ liệu Chương này sẽ đề cập đến sắp xếp và gộp nhóm cũng như chỉ cho bạn khả năng thay đổi các tính năng này vào lúc chạy

Ngoài ra vào cuối chương chúng tôi cũng sẽ đề cập đến việc lập trình trên mô hình đối tượng Crystal Reports Engine liên quan đến sắp xếp và gộp nhóm

Chương 5 Sử dụng các thông số

Theo thời gian, khi Crystal Reports ngày càng tiến bộ, thì số cách uốn nắn (customize) báo cáo cũng tăng theo Tuy nhiên, cách sử dụng các thông số để nhập liệu là cách cơ bản và độc đáo nhất Chương này khảo sát cách tạo các thông số, yêu cầu nhập

Trang 21

19 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

liệu và sử dụng thông số để uốn nắn báo cáo, cũng như cách lập trình mô hình đối tượng

thông số

Chương 6 Uốn nắn các báo cáo

Trong các chương trước, bạn có cơ hội tạo những dạng thức báo cáo cơ bản, bao gồm

sắp xếp và gộp nhóm và học cách thực hiện vài uốn nắn (customization) cơ bản đối với

báo cáo vào lúc chạy Trong chương này, chúng tôi sẽ đi xa hơn chỉ cho bạn thấy thêm

việc uốn nắn tinh vi hơn đối với bản báo cáo của bạn Việc này bao gồm việc sàng lọc

(filtering) các mẫu tin dùng trong báo cáo, dùng các section đối với những kỹ thuật định

dạng cao cấp và tạo những tổng cộng vào lúc chạy Một khi bạn nắm vững chương này,

bạn có đủ khả năng kết sinh phần lớn những báo cáo dùng trong thường nhật

Chương 7 Tìm hiểu về Công thức và Lôgic chương trình

Chương này sẽ tập trung vào việc xem phần lớn thời gian phải mất công ở đâu trong

việc triển khai các dự án về Crystal Reports: viết các công thức và đoạn mã lôgic Chúng

ta sẽ thấy cách tốt nhất để thêm tính toán và lôgic vào các bản báo cáo và học qua đủ cú

pháp và đoạn mã để thụ lý hầu hết mọi tình huống Chúng ta sẽ biết làm cách nào phân

biệt giữa hai “hương vị” của Crystal Formula Language và cách làm thế nào viết ra những

công thức tuyển chọn các mẫu tin cũng như định dạng có điều kiện

Chương 8 Vẽ biểu đồ thế nào?

Mục đích thiết yếu của một bản báo cáo là chuyển tải ý nghỉa nào đó cho người đọc

Các dòng văn bản cũng như những cột số mang một ý nghỉa chuyển tải thông tin không

thể chối cãi, nhưng đôi khi khó hình dung nếu nó không được trình bày dưới dạng đồ thị

(biểu đồ hoặc lược đồ)

Do đó, khả năng vẽ biểu đồ của Crystal Reports NET làm cho những con số cũng

như thống kê đem lại một chiều kích bổ sung vào việc chuyển tải ý nghĩa đối với thông

tin Các dữ liệu kiểu số nếu được biểu diễn dưới dạng biểu đồ nhìn thấy được có thể cho

người ta thấy một xu hướng (trend) hoặc cho thấy kích thước tương đối để so sánh

Các kiểu dữ liệu khác nhau thường được biểu diễn tốt nhất theo nhiều kiểu biểu đồ

khác nhau và Crystal Reports NET cung cấp cho bạn vô số kiểu biểu đồ thích ứng với bất

cứ tập hợp dữ liệu nào mà bạn có thể có

Chương 9 Tạo báo cáo Cross-Tab

Đối với vài người, trên các bản báo cáo việc tổng kết dữ liệu (data summary) bằng

cách này hay cách khác không quan trọng bằng dữ liệu chi tiết Tuy nhiên, đối với một số

Trang 22

Mục lục 20

người khác, nhất là trong giới lãnh đạo, các bản báo cáo với những hàng tổng kết nằm ở

cuối báo cáo (report footer) hoặc ở cuối mỗi nhóm (group footer) là một điều rất tốt cho

sự hiểu biết nhất là đối với người thường phải lấy quyết định quan trọng trong kinh

doanh Trong vài trường hợp như thế, đối tượng cross-tab có thể trình bày dữ liệu dưới

dạng dễ hiểu và có khả năng truyền đạt ý nghĩa của dữ liệu Các bản báo cáo cross-tab là

một thể thức cực mạnh tạo những tổng kết dữ liệu dưới dạng một bảng tính (spreadsheet)

quá quen thuộc đối với giới tài chính Lợi điểm chính của một cross-tab là nó gộp nhiều

tổng kết lại với nhau dưới dạng cô đọng

Chương 10 Thêm Subreport vào báo cáo chính Trong các chương trước, người ta biết làm thế nào tạo những bản báo cáo dựa trên dữ

liệu nằm rải rác trên nhiều bảng dữ liệu có liên hệ với nhau cùng thuộc một căn cứ dữ

liệu Điều này xem ra cũng rất tốt Tuy nhiên, thỉnh thoảng ta cũng muốn tạo một bản báo

cáo cho hiển thị dữ liệu từ nhiều hai hoặc nhiều nguồn dữ liệu khác nhau không liên hệ

hoặc có liên hệ một cách gián tiếp Crystal Reports có thể thỏa mãn yêu cầu chính đáng

này bằng cách cho phép bạn đặt lọt thỏm một bản báo cáo này trong một bản báo cáo kia

Bản báo cáo được đặt lọt thỏm được gọi là Subreport.1

Subreport thường dùng để tạo ra nhiều view dữ liệu khác nhau trên một báo cáo đơn

lẻ Các báo cáo chuẩn thường có một hạn chế, đó là chỉ có thể hiển thị một view đơn lẻ

mà thôi Thay vì tạo một hoặc nhiều báo cáo để trình bày những view bổ sung, ta có thể

dùng Subreport để trình bày dữ liệu độc lập đối với báo cáo chính hoặc trình bày nhiều

mối liên hệ cha-con

Nhìn theo góc độ chức năng và thiết kế, một Subreport hầu như chẳng khác nào một

báo cáo chuẩn, vì nó có cùng cách bố trí như một báo cáo chuẩn và nó có thể dùng cùng

tất cả các đối tượng báo cáo Như vậy, Subreport được xem như là thành phần của một

báo cáo khác

Chương 11 Hội nhập báo cáo vào ứng dụng Windows

Trong chương này, chúng ta sẽ học cách hội nhập (hoặc tích hợp - integrate) và nhìn

xem những báo cáo này từ các ứng dụng Windows và học cách uốn nắn các bản báo cáo

vào lúc chạy sử dụng mô hình đối tượng của Crystal Reports NET Chúng tôi sẽ đề cập

đến: xác định đúng mô hình đối tượng phải sử dụng, namespace

CrystalDecisions.Windows.Forms, sử dụng Crystal Windows Forms Viewer,

cắt xén uốn nắn Windows Forms Viewer và chuyển thông tin cho Windows Forms

Viewer

1 Subreport có thể dịch là “báo cáo con” nghe nó vô duyên thế nào ấy, nên chúng tôi đành để yên

không dịch

Trang 23

21 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

Chương 12 Hội nhập báo cáo vào ứng dụng Web

Chúng tôi sẽ cho xây dựng những biểu mẫu được dùng trong các ứng dụng Web lo việc báo cáo, minh họa cho thấy Crystal Reports.NET có thể được dùng trong các ứng dụng Web của bạn

Chương 13 Tạo XML Report Web Services

Trong các chương trước, chúng ta đã xem qua việc hội nhập các bản báo cáo vào các ứng dụng Windows và Web Bây giờ ta tiến thêm một bước là làm thế nào hoạt động với XML Report Web Services Tạo những bản báo cáo được chạy như là Report Web

Services (RWS) cho bạn khả năng phân phối những báo cáo sử dụng SOAP thông qua

nghi thức HTTP Sẽ không có vấn đề các báo cáo bị tắc nghẽn do an ninh hoặc hạn chế mạng

Có hai phần để nhìn xem các báo cáo như là một dịch vụ Web Phần thứ nhất là xây dựng ứng dụng Web và phát hành (publish) bản báo cáo Phần thứ hai là tạo một ứng dụng tiêu thụ báo cáo

Vào cuối chương này, bạn sẽ có khả năng nhận diện một XML Report Web Services

là gì và hiểu cách sử dụng nó trong ứng dụng của bạn, bạn cũng có khả năng tạo ra một

XML Report Web Services từ một Crystal Reports và dùng dịch vụ với Crystal Windows Viewer hoặc Crystal Web Viewer để nhìn xem một bản báo cáo

Chương 14 Làm việc với các dữ liệu nguồn

Trong chương này ta sẽ xem Crystal Reports NET làm việc thế nào với các dữ liệu nguồn khác nhau và xem nó tương tác với ADO.NET thế nào Tất cả việc kết nối với căn

cứ dữ liệu sẽ được xây dựng xung quanh một trong hai mô hình: Pull Model và Push

Model Mô hình Pull Model là đơn giản nhất trong việc thi công và dễ học vì nó chẳng

đòi hỏi bất cứ việc lập trình nào từ phía bạn Các báo cáo nào được thiết kế sử dụng Pull

Model sẽ làm cho mọi việc đều tự động Crystal Reports sẽ làm mọi việc “bẩn tay”: tạo

mối kết nối với dữ liệu nguồn, đọc dữ liệu, cho điền đầy dữ liệu lên bản báo cáo, rồi đóng

lại kết nối Còn với Push Model, thì bạn phải tự lo lấy mọi thứ thông qua lập trình bạn

phải lo mở kết nối với dữ liệu nguồn, đi lấy dữ liệu ghi vào ký ức, chuyển giao dữ liệu

Trang 24

Mục lục 22

cho bản báo cáo và đóng lại kết nối Với Pull Model bạn chỉ có thể thực hiện những việc

đơn giản, cứng nhắc, còn với Push Model bạn có thể thực hiện nhiều chức năng phức tạp

và uyển chuyển hơn Trong các chương trước, từ Chương 3 trở đi, chúng tôi thường trình

bày Pull Model ở phần thiết kế đi đầu và Push Model ở phần lập trình mô hình đối tượng

Crystal Reports Engine

Khi đọc hết chương này, bạn sẽ có cái nhìn về cách Crystal Reports.NET tương tác

thế nào với các dữ liệu nguồn khác nhau, những mục chọn để làm việc với những dữ liệu

nguồn này và việc sử dụng ADO.NET như là một dữ liệu nguồn đối với việc triển khai

các bản báo cáo của bạn

Chương 15 Xuất khẩu và triển khai hoạt động các báo cáo Cuối cùng thì việc lập trình và trắc nghiệm ứng dụng của bạn cũng đến hồi kết thúc

Và bước cuối cùng trong chu kỳ phát triển phần mềm là triển khai ứng dụng và đưa vào

hoạt động thực sự, nghĩa là làm thế nào phân phối ứng dụng đưa đến tay người sử dụng

cuối cùng (end user) Crystal Reports cho phép bạn hai cách để phân phối các bản báo

cáo:

 Cách thứ nhất là cho xuất khẩu báo cáo (report exporting) dưới những dạng thức

khác nhau Đây cũng tương tự như một web service, theo đấy bản báo cáo có thể

được nhìn xem trên nhiều sàn diễn với những ứng dụng khác nhau Đây có thể là

một tập tin, một e-mail đính kèm, một Exchange folder hoặc một tập tin nhị phân

(binary stream)

 Cách thứ hai là cho triển khai các bản báo cáo đi kèm theo ứng dụng Việc này

đòi hỏi thay đổi các tập tin setup làm thế nào các bản báo cáo kèm theo các thư

viện được gắn liền được cài đặt trên máy đích

Chương này sẽ đề cập đến hai lĩnh vực vừa kể trên: xuất khẩu và triển khai đưa vào

hoạt động các báo cáo

Bộ sách NET toàn tập gồm những tập nào?

Như đã nói, bộ sách NET toàn tập này gồm 8 tập, 6 nói về lý thuyết và 2 về thí dụ

thực hành

Tập I: Lập trình Visual C# thế nào?

Chương 1 Visual C# và NET Framework

Chương 2 Bắt đầu từ đây ta tiến lên!

Chương 3 Sử dụng Debugger thế nào?

Trang 25

23 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

Chương 4 Căn bản Ngôn ngữ C#

Chương 5 Lớp và Đối tượng

Chương 6 Kế thừa và Đa hình

Chương 7 Nạp chồng tác tử

Chương 8 Cấu trúc Struct

Chương 9 Giao diện

Chương 10 Bản dãy, Indexers và Collections

Chương 11 Chuỗi chữ và biểu thức regular

Chương 12 Thụ lý các biệt lệ

Chương 13 Ủy thác và tình huống

Chương 14 Lập trình trên môi trường NET

Tập II: Visual C# và Sàn diễn NET

Chương 1 Input/Output và Object serialization

Chương 2 Xây dựng một ứng dụng Windows

Chương 3 Tìm hiểu về Assembly và cơ chế Version

Chương 4 Tìm hiểu về Attribute và Reflection

Chương 5 Marshalling và Remoting

Tập III: Giao diện người sử dụng viết theo Visual C#

Chương 1 Tạo giao diện người sử dụng dùng lại được

Chương 2 Thiết kế giao diện theo Lớp và theo Tầng nấc

Chương 3 Tìm hiểu đồ họa và GDI+

Chương 4 Tìm hiểu về biểu mẫu và lớp Form

Chương 5 Cơ bản về lớp Control

Chương 6 Tìm hiểu về Windows Forms Controls

Chương 7 Các ô control tiên tiến

Chương 8 Các ô custom control

Chương 9 Hỗ trợ Custom Control vào lúc thiết kế

Chương 10 MDI Interfaces và Workspace

Chương 11 Dynamic User Interfaces

Chương 12 Tìm hiểu về Data Controls

Chương 13 GDI+ Controls

Chương 14 Help và Hỗ trợ được đặt lọt thỏm trên ứng dụng

Trang 26

Mục lục 24

Tập IV: Lập trình Căn cứ dữ liệu với Visual C# & ADO.NET

Chương 1 Sử dụng Căn cứ dữ liệu

Chương 2 Tổng quan về ADO NET

Chương 3 Data Component trong Visual Studio NET

Chương 4 Các lớp ADO.NET tách rời

Chương 5 ADO.NET Data Providers

Chương 6 Tạo Căn cứ dữ liệu sử dụng các công cụ IDE

Chương 7 Làm việc với XML

Chương 8 Triển khai ứng dụng Web sử dụng ADO.NET

Chương 9 Sử dụng các dịch vụ Web với ADO.NET

Chương 10 Thụ lý các tình huống trên ADO.NET

Chương 11 Stored procedure, View, Trigger và COM Interop

Chương 12 Làm việc với Active Directory

Chương 13 Tìm hiểu về Message Queues

Chương 14 Tìm hiểu về Data Wrapper

Chương 15 Làm việc với ODBC.NET data provider

Tập V: Lập trình ASP.NET & Web

Chương 1 ASP.NET và NET Framework

Chương 2 Tìm hiểu các tình huống

Chương 3 Tìm hiểu các ô Web Control

Chương 4 Chi tiết về các ASP Control

Chương 5 Lập trình Web Form

Chương 6 Kiểm tra hợp lệ

Chương 7 Gắn kết dữ liệu

Chương 8 List-Bound Control - Phần 1

Chương 9 Truy cập căn cứ dữ liệu với ADO.NET

Chương 10 ADO.NET Data Update

Chương 11 List-Bound Control - Phần II

Chương 12 User Control và Custom Control

Chương 13 Web Services

Chương 14 Caching và Năng suất

Chương 15 An toàn

Chương 16 Triển khai ứng dụng

Tập VI: Lập trình các báo cáo dùng Crystal Reports NET

Chương 01 Tổng quan về Crystal Reports Net

Chương 02 Hãy thử bắt đầu với Crystal Reports NET

Chương 03 Tìm hiểu Crystal Reports Object Model

Trang 27

25 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

Chương 04 Sắp xếp & Gộp nhóm

Chương 05 Sử dụng các thông số

Chương 06 Uốn nắn các báo cáo

Chương 07 Tìm hiểu về Công thức & Lôgic chương trình

Chương 08 Vẽ biểu đồ thế nào?

Chương 09 Tạo báo cáo Cross-Tab

Chương 10 Thêm Subreports vào báo cáo chính

Chương 11 Hội nhập báo cáo vào ứng dụng Windows

Chương 12 Hội nhập báo cáo vào ứng dụng Web

Chương 13 Tạo XML Report Web Services

Chương 14 Làm việc với các dữ liệu nguồn

Chương 15 Xuất khẩu và triển khai hoạt động các báo cáo

Tập VII: Sổ tay kỹ thuật C# - phần A

Chương 01 Làm việc với Microsoft Visual Studio NET 2003 và

Microsoft NET Framework 1.1 Chương 02 Làm việc với ngôn ngữ Visual C# và NET Framework

Chương 03 Truy cập dữ liệu

Chương 04 Xây dưng giao diện GUI Windows Forms

Tập VIII: Sổ tay kỹ thuật C# - phần B

Chương 05 Làm việc với Console Application

Chương 06 Tương tác với hệ điều hành

Chương 07 Làm việc với NET Framework

Chương 08 NET Framework cấp cao

Chương 09 GDI+

Chương 10 Xây dựng ứng dụng dịch vụ xí nghiệp

Chương 11 COM Interop/Invoke

Chương 12 Visual Studio NET

Chương 13 Bảo đảm an toàn các ứng dụng

Bộ sách này dành cho ai?

Bộ sách này được viết dành cho những ai muốn triển khai những ứng dụng chạy trên Windows hoặc trên Web dựa trên nền NET Chắc chắn là có nhiều bạn đã quen viết C++, Java hoặc Visual Basic, hoặc Pascal Cũng có thể bạn đọc khác lại quen với một ngôn ngữ khác hoặc chưa có kinh nghiệm gì về lập trình ngoài lập trình cơ bản Bộ sách này dành cho tất cả mọi người Vì đây là một bộ sách tự học không cần thầy, chỉ cần có một

Trang 28

Mục lục 26

cái máy tính được cài đặt NET Đối với ai chưa hề có kinh nghiệm lập trình, thì hơi khó một chút nhưng “cày đi cày lại” thì cũng vượt qua nhanh những khó khăn này Còn đối với những ai đã có kinh nghiệm lập trình, thì sẽ mê ngay ngôn ngữ này và chỉ trong một thời gian rất ngắn, cùng lắm 6 tháng là có thể nắm vững những ngóc ngách của ngôn ngữ mới này và có thể biết đâu chừng trong một thời gian rất ngắn bạn sẽ trở thành một

“guru” ngôn ngữ C# Người viết cũng xin lưu ý bạn đọc là bộ sách này là sách tự học (tutorial) chứ không phải một bộ sách tham chiếu (reference) về ngôn ngữ, nên chỉ mở đường phát quang hướng dẫn bạn đi khỏi bị lạc và đem lại 60% kiến thức về ngôn ngữ

Và khi học tới đâu, tới một chặng đường nào đó bạn có thể lên MSDN phăng lần đào sâu từng đề mục con mà bạn đang còn mơ hồ để có thể phăng lần 40% còn lại kiến thức để nắm vững vấn đề Lấy một thí dụ Trong bộ sách này, chúng tôi thường đề cập đến các lớp Chúng tôi giải thích tổng quát cho biết lớp sẽ được dùng vào việc gì và sử dụng một

số hàm hành sự (method) hoặc thuộc tính (property) tiêu biểu của lớp này trong những thí

dụ cụ thể Thế nhưng mỗi lớp có vô số hàm hành sự và thuộc tính cũng như tình huống Thì lúc này bạn nên vào MSDN tham khảo từng hàm hành sự hoặc thuộc tính một của lớp này để bạn có một ý niệm sơ sơ về những công năng và đặc tính của lớp Có một số chức năng/đặc tính bạn sẽ không bao giờ sử dụng đến, còn một số thi thoảng bạn mới cần đến Cho nên về sau, khi bạn muốn thực hiện một chức năng gì đó, thì bạn có thể vào lại MSDN xem lớp có một hàm hoặc thuộc tính đáp ứng đúng (hoặc gần đúng) nhu cầu của bạn hay không và nếu có thì lúc này bạn mới xem kỹ cách sử dụng Kinh nghiệm cho thấy là trong suốt cuộc đời hành nghề lập trình viên, bạn sẽ “xào đi xào lại” cũng chừng nấy lệnh, hoặc một số hàm nào đó theo một mẫu dáng (pattern) nào đó, nên một khi bạn

đã khám phá ra những lệnh hoặc hàm này và áp dụng thành công thì bạn sẽ thường xuyên dùng đến một cách máy móc không cần suy nghĩ gì thêm

Theo tập quán phát hành sách hiện thời trên thế giới, thì sách sẽ kèm theo một đĩa mềm hoặc đĩa CD chứa các bài tập thí dụ Ở đây rất tiếc, chúng tôi không làm thế vì nhiều

lý do Thứ nhất giá thành sẽ đội lên, mà chúng tôi thì lại muốn có những tập sách giá bán đến tay bạn đọc rẻ bằng 50% giá hiện hành của các sách khác cùng dung lượng (nhưng khác chất lượng nội dung) Thứ hai, các bạn chịu khó nhập lệnh vào máy, nhập tới đâu bạn đọc hiểu tới đấy Đôi khi nhập lệnh sai, máy bắt lỗi bạn sẽ biết những thông điệp cảnh báo lỗi nói gì để về sau mà cảnh giác Còn nếu tải chương trình xuống từ đĩa vào máy, cho thử chạy tốt rồi bạn bằng lòng rốt cuộc bạn chả hiểu và học gì thêm Khi nhập một câu lệnh như thế bạn phải biết mình đang làm gì, thực hiện một tác vụ gì, còn như nhắm mắt tải lệnh xuống thì cũng chẳng qua là học vẹt mà thôi, không động não gì cả

Chúng tôi hy vọng bộ sách sẽ giúp bạn có một nền tảng vững chắc trong việc lập trình trên NET

Ngoài ra, trong tương lai, nếu sức khoẻ cho phép (vì dù gì thì tuổi soạn giả cũng gần 72) chúng tôi dự kiến ra bộ sách về phân tích thiết kế các ứng dụng điện toán sử dụng UML và Pattern áp dụng trong quản lý kinh doanh Trong những buổi gặp gỡ giữa bạn bè

và một đôi lần trên báo chí khi họ than phiền là kỹ sư tin học bây giờ ra trường không sử

Trang 29

27 Lập trình Web sử dụng ASP.NET và Visual C# Dương Quang Thiện

dụng được, chúng tôi thường hay phát biểu là không ngạc nhiên cho lắm khi ta chỉ cho ra toàn là “thợ lập trình” giống như bên xây dựng là thợ hồ, thợ nề, thợ điện, thợ mộc v v chứ đâu có đào tạo những kiến trúc sư (architect) biết thiết kế những bản vẽ hệ thống Do

đó, chúng tôi dự kiến (hy vọng là như vậy) là sẽ hoàn thành một bộ sách đề cập đến vấn

đề phân tích thiết kế những hệ thống sử dụng những thành tựu mới nhất trên thế giới là UML và Pattern với những phần mềm thích ứng là IBM Rational Rose XDE và Microsoft Visio for Enterprise Architect (VEA), kết hợp với những khái niệm về ERP (Enterprise Resources Planning) khá phổ biến trong quản lý doanh nghiệp tại các nước Âu Mỹ từ hơn thập niên qua Ngoài ra, những gì học ở trường là thuần túy về kỹ thuật lập trình, về mô phỏng, trí tuệ nhân tạo, lý thuyết rời rạc v.v (mà những mớ lý thuyết này không có đất dụng võ) nhưng khi ra trường vào các xí nghiệp thì mù tịt về quản lý nhân sự, về kế toán

về tồn kho vật tư, về tiêu thụ v v mà 80% ứng dụng tin học lại là vào các lãnh vực này

Do đó, trong bộ sách mà chúng tôi dự kiến sẽ soạn những tập đi sâu vào xây dựng những

hệ thống quản lý trong các cơ quan xí nghiệp hành chánh cũng như thương mại

Đôi lời cuối cùng

Kể từ năm 1989, năm thành lập văn phòng dịch vụ điện toán SAMIS, cho đền nay trên 15 năm chúng tôi cùng anh chị em trong nhóm SAMIS đã biên soạn trên 55 đầu sách

và cũng đã phát hành gần 400.000 bản, trong ấy 60% là phần của soạn giả Từ những tiền lời kiếm được do tự phát hành lấy cộng thêm tiền hưu tiết kiệm của bà vợ người Thụy Sĩ, hằng năm chúng tôi đã dành toàn bộ số tiền này để xây các trường ở những vùng sâu vùng xa trên 15 tỉnh thành đất nước (Sơn La, Nghệ An, Quảng Ngãi, Quảng Nam, Quảng Trị, Bình Định, Ban Mê Thuột, Pleiku, Darlak, Bà Rịa Vũng Tàu, Đồng Nai, Bình Dương, TP Hồ Chí Minh, Cần Thơ và Cà Mau), cấp học bổng cho các sinh viên nghèo tại các đại học Huế, Đà Nẵng, An Giang và TP Hồ Chí Minh, hỗ trợ vốn cho giáo viên ở An Lão (Bình Định), xây nhà cho giáo viên ở vùng sâu vùng xa (Bình Định, Quảng Trị) và tài trợ mổ mắt cho người nghèo ở An Giang (4 năm liền) Các hoạt động xã hội này đều thông qua sự hỗ trợ của hai tờ báo Tuổi Trẻ và Sài Gòn Giải Phóng Không ngờ những việc làm rất cá nhân này lại được Nhà nước “theo dõi” đến nỗi không biết vị nào đã “xúi” Chủ tịch nước Trần Đức Lương ký quyết định tặng người viết Huân chương Lao động Hạng 3, ngày 29/8/2000 Nói ra điều này, chúng tôi muốn bạn đọc hiểu cho là tự nội lực của ta, ta cũng có thể giúp đỡ giáo dục mà khỏi nhờ viện trợ của các nước khác Nếu các bạn ý thức rằng mỗi tập sách bạn mua của chúng tôi thay vì mua sách “luộc” hoặc photocopy là bạn đã gián tiếp tham gia vào chương trình xây trường lớp cho vùng sâu vùng xa cũng như hỗ trợ học bổng cho sinh viên nghèo của chúng tôi

Cuối cùng, chúng tôi xin cảm ơn sự hỗ trợ của các anh chị Hoàng Ngọc Giao, Võ Văn Thành và Trần Thị Thanh Loan trong việc hoàn thành bộ sách này

TP Hồ Chí Minh ngày 30/10/2005

Dương Quang Thiện

Trang 30

Chương 3: Tìm hiểu Crystal Report NET Object Model 3-28

Chương 1

Tổng quan về Crystal Reports NET

Visual Studio NET là môi trường triển khai Windows đầu tiên đem lại cho lập trình

viên triển khai phần mềm một giải pháp tạo ra những báo cáo hoàn toàn tích hợp và chặt

chẽ Crystal Reports giờ đây là một cấu kiện (component) chuẩn được cài đặt cùng với

Visual Studio NET, cho phép bạn viết ra những ứng dụng có khả năng làm những báo

cáo một cách trơn tru dính liền với ứng dụng

Trước khi Visual Studio NET xuất hiện thì sự đời không phải là thế Bắt đầu với

Visual Basic 3.0, vào năm 1993, Crystal Reports được đưa vào ngôn ngữ Visual Basic,

cho phép kết sinh ra những báo cáo, nhưng lại không phải là thành phần của cài đặt mặc

nhiên Lúc ấy Crystal Reports thuần túy là một phần mềm chạy một mình một cõi

(stand-alone) hoàn toàn độc lập đối với ngôn ngữ Visual Basic Còn bây giờ, Crystal

Reports.NET được hội nhập một cách trơn tru vào môi trường Visual Studio NET IDE

Khi Microsoft lần đầu tiên cho ra đời Microsoft Access, một chương trình quản lý

căn cứ dữ liệu, Microsoft đã cung cấp kèm theo một bộ phận tạo báo cáo (report writer)

khá ngon lành, nên Access đã gặp nhiều thành công, trở thành một chương trình chuẩn xử

lý căn cứ dữ liệu trên máy để bàn Nhưng điều kỳ lạ là với Windows, Microsoft lại không

đếm xỉa gì đến việc tạo báo cáo Kết quả là lập trình viên nào muốn tạo những báo cáo

đành phải vật lộn với C để viết những chương trình báo cáo sử dụng Windows GDI

(Graphical Device Interface)

Vì bản chất visual của lập trình Windows, viết theo GDI không phải là một phương

pháp trực quan để viết ra các báo cáo GDI đòi hỏi công sức khá nhiều khi muốn canh

hàng văn bản cùng với các hình đồ họa trên báo cáo Các tính năng khác như định dạng

và subreport2 là cả những thách thức đối với lập trình viên Ngoài ra, lập trình viên phải

đánh đố với máy in dùng để in ra báo cáo Nói tóm lại lập trình viên Windows khi muốn

viết những báo cáo đành phải nhờ đến những phần mềm không do Microsoft viết ra Do

đó, đối với phần lớn các nhà triển khai phần mềm, Crystal Reports trở thành phần mềm

kết sinh báo cáo (report generator) được ưa chuộng nhất Crystal Reports được viết vào

cuối thập niên 1980 như là một công cụ visual để thiết kế các báo cáo không gắn với bất

cứ ứng dụng nào Nó trưng ra một API cho phép lập trình viên triệu gọi từ nhiều ngôn

2 Subreport là một báo cáo phụ nằm trong lòng báo cáo chính Chúng tôi để yên từ này không dịch

Trang 31

1-29 Lập trình báo cáo sử dụng Crystal Reports NET Dương Quang Thiện

ngữ lập trình khác nhau Điều này làm cho lập trình viên không rành GDI cũng có thể viết những báo cáo ngon lành Những công việc chẳng hạn như sắp xếp (sorting), gộp theo nhóm (grouping, từ ngữ thông dụng vào thập niên 1960 là “ngắt cấp bậc – break level) cũng như áp dụng định dạng đặc biệt nay trở thành đơn giản với Crystal Reports Tính uyển chuyển có thể in ra từ nhiều dữ liệu nguồn khác nhau, và làm việc với nhiều ứng dụng nhanh chóng làm cho Crystal Reports trở thành một giải pháp chuẩn cho việc kết sinh báo cáo

Tuy nhiên, Crystal Reports cũng có những vấn đề Trước tiên, Crystal Reports là một chương trình riêng biệt, đứng một mình, nghĩa là không được xây dựng ngay trong ngôn ngữ Bất cứ lúc nào bạn muốn thay đổi hoặc nhìn xem trước (preview) một báo cáo, bạn phải rời IDE rồi mở một chương trình báo cáo khác Đây không phải là một cung cách lập trình tốt Vấn đề thứ hai là nếu thêm những đoạn mã lôgic vào trong lòng báo cáo bạn phải học cú pháp Crystal, nghĩa là học thêm một ngôn ngữ Mặc dầu, cú pháp Crystal cũng tương tự như Visual Basic và C, nhưng cũng đủ khác biệt để bạn mất thời giờ học nếu muốn sử dụng Crystal Reports Vấn đề cuối cùng là bạn phải triệu gọi hàm API để in các báo cáo Mặc dầu, không khó gì mấy đối với phần lớn báo cáo thông dụng, nhưng nó đòi hỏi công sức và óc sáng tạo khi báo cáo hơi phức tạp một chút sử dụng nhiều nguồn

dữ liệu khác nhau

Với sự xuất hiện của Visual Studio 5, Crystal Reports được thiết kế lại trở thành một add-in vào IDE nên Crystal Reports không đứng một mình mà giờ đây “tận hiến” cho Windows, và lập trình viên có thể tạo và hiệu đính một bản báo cáo dễ dàng như là tạo và hiệu đính một biểu mẫu Tới đây, sử dụng Windows để tạo bản báo cáo trở thành đơn giản

Bây giờ, với sự ra đời của Visual Studio NET, Crystal Reports trở thành một giải pháp mặc nhiên trong việc kết sinh các báo cáo chất lượng cao và mang tính tương tác Trong chương này, chúng tôi sẽ cùng bạn xem xét Crystal Reports.NET một cách tổng quan trước khi đi sâu vào ứng dụng

1.1 Crystal Reports là gì?

Nói một cách đơn giản, Crystal Reports là công cụ thiết kế báo cáo cho phép bạn tạo

ra những báo cáo có thể tìm thấy và định dạng dữ liệu (dưới dạng một resultset3) từ một căn cứ dữ liệu hoặc từ những dữ liệu nguồn (data source) khác nhau Ngoài việc đọc dữ liệu từ một dữ liệu nguồn, Crystal Reports có riêng cho mình một ngôn ngữ công thức (formula language) để tính toán và một số tính năng khác có thể được dùng để biến những

3 Từ “resultset” hoặc “recordset” là giống nhau Đây là tập hợp dữ liệu do kết quả của một truy vấn trên một dữ liệu nguồn, thường là căn cứ dữ liệu

Trang 32

Chương 3: Tìm hiểu Crystal Report NET Object Model 3-30

dữ liệu thô thành những báo cáo đầy tính chuyên nghiệp, kèm theo biểu đồ (graph, chart)

hoặc bảng cross-tab4, v.v

Bạn có thể tạo những bản báo cáo đi từ những danh sách đơn giản chỉ gồm vài cột

cho đến những báo cáo quản lý phức tạp cho thấy biểu đồ, bảng và chỉ số Key

Performance Indicator (KPI) Tính uyển chuyển của bản thân Report Designer (bộ phận

thiết kế báo cáo) có nghĩa là bạn có thể tạo ra nhiều loại báo cáo khác nhau và kết xuất

tùy thuộc vào nhu cầu của bạn Xem hình 1-01

Ngoài một bộ công cụ cực mạnh để tạo các báo cáo, Crystal Reports còn có một số

hàm API cũng như công cụ đặc biệt được thiết kế dành cho các nhà phát triển phần mềm

cho phép hội nhập các báo cáo này vào trong ứng dụng riêng của họ

1.2 Bạn có thể làm được gì với Crystal Reports?

Để bắt đầu, Crystal Reports.NET cho bao gồm một Report Designer (bộ thiết kế báo

cáo) có sẵn trong lòng Visual Studio NET IDE cho phép bạn thiết kế tạo những tập tin

báo cáo (mang phần đuôi rpt) để có thể cho hòa nhập vào ứng dụng Windows hoặc

4 Chữ ‘tab” trong cross-tab là tắt chữ “tabulation” hoặc “tabular” nghĩa là xếp thành hàng cột

Cross-tab là bảng báo cáo xếp thành hàng cột giao nhau

Trang 33

1-31 Lập trình báo cáo sử dụng Crystal Reports NET Dương Quang Thiện

Web của bạn Phối hợp với Report Designer, bạn có những cửa sổ Field Explorer,

Solution Explorer và Properties trong việc thiết kế bản báo cáo (xem hình 1-02) Nếu

bạn đã làm quen với Visual Studio NET IDE thì bạn không xa lạ gì đối với hai cửa sổ

Solution Explorer và Properties Với Crystal Reports, thì đặc biệt có cửa sổ Field Explorer cho phép bạn khảo sát cũng như đặt để các vùng mục tin khác nhau trên bản

báo cáo trong lúc thiết kế

Report Designer này (sẽ được đề cập đến ở Chương 2) có một số “expert” (thường được biết đến là “wizard”) giúp bạn khởi công xây dựng một báo cáo và hướng dẫn bạn suốt quá trình triển khai báo cáo, từ việc chọn ra dữ liệu nguồn cung cấp dữ liệu cho báo cáo, đến việc chọn ra các vùng mục tin khác nhau sẽ xuất hiện trên báo cáo cũng như sàng lọc ra mẫu tin nào từ nguồn dữ liệu để có thể xử lý in ra trên báo cáo

Một khi bạn đã thiết kế một báo cáo cơ bản, bạn có thể bổ sung các tính năng khác

như các vùng mục tin công thức (formula field, vùng mục tin do một công thức tính ra), các mục tin tổng cộng khi báo cáo đang chạy (được gọi là running total), các biểu đồ

(graph hoặc chart), và có thể đáp ứng sự phức tạp của báo cáo Các báo cáo có thể được thiết kế theo bất cứ mọi hình dáng, kích thước và biểu mẫu nào Có thể bạn muốn tạo một

Trang 34

Chương 3: Tìm hiểu Crystal Report NET Object Model 3-32

báo cáo mà người ta có thể đem dùng in ra một hóa đơn từ ứng dụng hoặc bạn muốn tính

toán thống kê cho một báo cáo quản lý hoặc tạo một bản báo cáo tồn kho vật tư chẳng

hạn Ngoài ra, bạn cũng có thể tạo những nhãn thư tín (mailing label) hoặc gởi hàng và có

thể cho bao gồm mã vạch (bar code), hình ảnh, đồ họa v.v

Bạn để ý: Muốn có một ý niệm về những loại báo cáo mà Crystal Reports có thể cho ra,

bạn có thể tra cứu Sample Reports có sẵn trên địa chỉ mạng:

http://community.crystaldecisions com/fix/samplescr.asp hoặc trên máy của

bạn tại thư mục: C:\Program Files\Microsoft Visual Studio.NET

\Crystal Reports\Samples\Code

Sau khi bạn đã tạo ra một báo cáo (tập tin rpt), bạn cần một cách nào đó để cho

hiển thị báo cáo này từ ứng dụng của bạn, nghĩa là cần đến một viewer (bộ đồ cho nhìn

xem) Crystal Reports.NET có hai viewer khác nhau: Windows Forms Viewer và Web

Forms Viewer

Windows Forms Viewer (mà chúng ta sẽ xem ở Chương 11, “Hội nhập báo cáo vào

ứng dụng Windows”) có thể dùng với các ứng dụng Windows để xem trước (preview) bất

cứ báo cáo nào mà bạn cho hội nhập vào ứng dụng của bạn, và cung cấp một mô hình đối

tượng (object model) rất phong phú cho phép bạn điều khiển bằng lập trình dáng dấp của

viewer và vài khía cạnh của báo cáo vào lúc chạy Bạn có thể đưa viewer này vào bất cứ

Trang 35

1-33 Lập trình báo cáo sử dụng Crystal Reports NET Dương Quang Thiện

biểu mẫu nào trên ứng dụng của bạn hoặc chiếm trọn mặt bằng của biểu mẫu hoặc nằm kế cận với các ô control khác của biểu mẫu Bạn có thể làm chủ dáng dấp xuất hiện của viewer, thay đổi các thanh công cụ và những khía cạnh nhìn xem, kể cả tạo riêng cho mình icon và nút để điều khiển viewer (Hình 1-03, trang trước) Bạn thấy trên hình 1-03 bản báo cáo nằm kế cận các ô control Windows

Đối với những ứng dụng web, thì có Web Forms Viewer (mà chúng tôi sẽ đề

cập đến ở Chương 12, “Hội nhập báo cáo vào ứng dụng Web”), cũng mang chức năng tương tự và cho phép bạn nhìn xem các báo cáo mà bạn đã cho hội nhập vào ứng dụng web của bạn Bạn có thể thêm viewer này lên các trang web trong lòng ứng dụng và cho thấy báo cáo chiếm trọn trang web (Hình 1-04, trang trước) hoặc xuất hiện trong một frameset5 hoặc kế cận những ô control khác của ứng dụng, tất cả tùy ý đồ của bạn

Muốn hoàn toàn làm chủ đối với báo cáo của bạn, bất luận bạn đang ở Windows

Forms Viewer hoặc Web Forms Viewer, bạn có thể truy cập vào Report Engine (sẽ được

5 HTML frameset là một tài liệu cho hiển thị trên browser nhiều vùng độc lập, khả dĩ diễu hành được gọi là ‘frame’ (khung cửa)

Trang 36

Chương 3: Tìm hiểu Crystal Report NET Object Model 3-34

đề cập rải rác trong các chương từ Chương 3 trở đi), theo đấy bạn được phép điều khiển

việc định dạng báo cáo, cho đặt để thông tin đăng nhập vào căn cứ dữ liệu (database

credentials) cũng như triệu gọi trực tiếp các hàm hành sự để in, xuất khẩu, v.v

Đối với việc tạo những ứng dụng để phân phối cho người sử dụng khác nhau trên

mạng, Crystal Reports.NET có một số tính năng đặc biệt được thiết kế để tạo và tiêu thụ

những XML Report Web Services hoặc thông qua một generic Web Service mang tính

chung chung được gởi kèm theo Crystal Reports.NET (cho phép bạn sử dụng một báo cáo

mà khỏi đăng ký nó như là một Web Service) hoặc bằng cách tạo ra riêng cho bạn những

Web Services từ các tập tin rpt (Chương 13, “Tạo XML Report Web Services”, sẽ

hướng dẫn bạn trong quá trình tạo và tiêu thụ XML Report Web Services) Xem hình 1-05

Cuối cùng, Crystal Reports.NET cũng gắn chặt với Crystal Enterprise, một hệ thống

phân phối và bố trí lịch trình báo cáo (report scheduling) cung cấp một sàn diễn xử lý

kiểu đa cấp hoạt động ở hậu phuơng (multi-tier back-end) đối với các báo cáo, cho phép

bạn sử dụng một guồng máy bố trí (scheduling engine) và khung phân phối báo cáo

(distribution framework) để phân phối các báo cáo cho hàng ngàn người sử dụng trên

mạng

Trang 37

1-35 Lập trình báo cáo sử dụng Crystal Reports NET Dương Quang Thiện

1.3 Crystal Reports NET khác biệt so với các

phiên bản Crystal Reports trước thế nào?

Crystal Reports.NET là một sản phẩm mới chỉ có sẵn trong Visual Studio NET Nó chia sẻ vài tính năng phổ biến với phiên bản bán lẻ của Crystal Reports và dựa trên công nghệ của Crystal Reports 8.x, nhưng tất cả các cấu kiện của Crystal Reports.NET đều được viết lại theo C# và được thiết kế tận dụng những lợi điểm của NET Framework

1.3.1 Integrated Design Environment (IDE)

Khác với phiên bản “tự túc” (stand alone) bán lẻ của Crystal Reports, Crystal

Reports.NET là thành phần của Visual Studio NET IDE Bằng cách sử dụng Report

Designer tích hợp bạn có thể tạo các bản báo cáo cũng như hiệu đính chúng ngay trong

lòng Visual Studio NET IDE

1.3.2 Bất cứ ngôn ngữ nào, bất cứ lúc nào

Crystal Reports.NET theo chủ trương của Visual Studio NET là “any language, any time” (bất cứ ngôn ngữ nào, bất cứ lúc nào) nghĩa là không quá “khắt khe” trong việc chọn lựa một ngôn ngữ lập trình khi viết các ứng dụng báo cáo Đối với tất cả các ngôn ngữ NET (C#, VB.NET hoặc J#), Report Designer hoạt động giống như nhau không

“phân biệt đối xử”, và chỉ đoạn mã dùng điều khiển việc nhìn xem các báo cáo và triệu gọi report engine là có hơi khác một chút do cú pháp và qui ước giữa các ngôn ngữ Thí

dụ, nếu bạn gắn kết một báo cáo với Web Forms Wiewer theo Visual Basic.NET, thì cú pháp có thể giống như sau:

crystalReportViewer1.ReportSource = myReport

thì cũng dòng lệnh trên viết theo C# sẽ như sau với một chút khác biệt (thêm dấu chấm phẩy cuối câu lệnh):

crystalReportViewer1.ReportSource = myReport;

Rõ ràng, là việc chuyển bật qua lại giữa các ngôn ngữ khi cần thiết quá dễ dàng – đây

có nghĩa là những ai đã dùng Visual Basic với các phiên bản Crystal Reports trước có thể dùng dễ dàng tất cả các ngôn ngữ NET (Visual Basic.NET, C#, J#, v.v ) phối hợp với Crystal Reports.NET

Trang 38

Chương 3: Tìm hiểu Crystal Report NET Object Model 3-36

1.3.3 Các phương pháp hội nhập

Một khác biệt khác là cách thức chúng ta cho hội nhập (integration) các báo cáo vào

các ứng dụng Windows và Web cũng đã thay đổi Trong quá khứ, các nhà triển khai phần

mềm Crystal Reports có nhiều phương pháp hội nhập khác nhau mà họ có thể chọn lựa,

chẳng hạn một ActiveX control, Automation Server hoặc triệu gọi trực tiếp

Crystal Reports Print Engine Đối với những ứng dụng Web, thì Crystal Reports phát đi

những cấu kiện web server và report viewer riêng của mình, cho phép các nhà triển khai

phần mềm có thể hội nhập báo cáo vào ứng dụng của họ

Với việc ra đời của Visual Studio NET, bây giờ ta có khả năng đưa việc triển khai

Windows và Web vào cùng một framework Crystal Reports Engine giờ đây là một đối

tượng COM+ bao một vỏ bọc quanh một phiên bản nhật tu của Crystal Reports Print

Engine, mà có thể bạn đã làm quen trong quá khứ Report Engine có thể được dùng để

uốn nắn “lấy ni” (customize) các tính năng vào lúc chạy và còn lo việc xử lý báo cáo

Khi làm việc với Crystal Reports.NET trên Visual Studio NET, bạn có thể chọn hoặc

để yên bản báo cáo (tập tin rpt) trên máy cục bộ (và sử dụng các nguồn lực của máy để

xử lý và hiển thị kết quả báo cáo sử dụng Windows Forms Viewer) hoặc phát hành nó

trên một web server (và sử dụng Web Form Viewer) hoặc phát hành nó như là một

Report Web Service - có thể được tiêu thụ và được nhìn xem bởi hoặc Windows Forms

Viewer hoặc Web Forms Viewer

1.3.4 Dễ sử dụng

Cho hội nhập một báo cáo vào một ứng dụng Windows là rất đơn giản như lôi ô

control Crystal Report Viewer từ Toolbox thả vào Windows Forms Viewer rồi cho gắn

kết viewer vào một tập tin báo cáo rpt Crystal Report Viewer (như theo hình 1-06)

cung cấp cho bạn nhiều tính năng để nhìn thấy các báo cáo vào lúc thiết kế cũng như vào

lúc chạy mà bạn có thể uốn nắn dáng dấp và các mục chọn của viewer, trao qua các thông

số, đặt để các thuộc tính , v.v

Đối với việc triển khai trên Web, cũng có một Web Forms Viewer liên lạc với

Report Engine (hoặc trên máy cục bộ hoặc trên server nằm xa) để cho hiển thị một trang

báo cáo theo dạng thức DHTML Việc này cho phép bạn nhanh hội nhập báo cáo trong

các ứng dụng web của bạn - không đòi hỏi có các tập tin runtime và việc xử lý báo cáo có

thể được diễn ra trên server

1.3.5 Xây dựng các ứng dụng công ty xí nghiệp

Ngoài ra, công ty Crystal Decisions còn cho ra Crystal Enterprise - một Engine lo

xử lý báo cáo, phân phối báo cáo theo lịch trình có khả năng tăng qui mô và hoàn toàn

Trang 39

1-37 Lập trình báo cáo sử dụng Crystal Reports NET Dương Quang Thiện

độc lập đối với sàn diễn, có thể dùng phối hợp với Crystal Reports và Crystal Reports.NET cho phép tạo những ứng dụng “hậu phương” có thể hỗ trợ hằng trăm người

sử dụng cho cả theo thời gian thực lẫn các báo cáo được bố trí theo lịch trình với một kiến trúc gồm nhiều server tổ chức theo cụm (clustered multi-server) bao trùm các sàn diễn Windows, Linux và Unix

Các báo cáo được phát hành trên Crystal Enterprise framework có thể được truy cập

từ trong lòng Visual Studio NET, như theo hình 1-07, và được hội nhập vào ứng dụng của bạn

Crystal Enterprise có riêng của mình một tầng lớp an toàn (có thể dùng kiểm chứng thực Windows NT, LDAP, v.v ), cấu trúc nội bộ (folder, objects, rights) và một guồng máy bố trí lịch trình (scheduling engine) và khả năng phân phối có thể được dùng để xây dựng những ứng dụng báo cáo phức tạp khỏi phải phát minh lại một cấu trúc giải pháp chỉ để làm báo cáo

Thí dụ, nếu bạn cần tạo một ứng dụng cho kết sinh theo định kỳ tuần một bản báo cáo theo dạng PDF và cho chuyển đi như là một đính kèm e-mail cho 10 người sử dụng khác nhau, bạn có thể tạo chức năng này trong lòng ứng dụng của bạn hoặc bạn có thể sử dụng

Trang 40

Chương 3: Tìm hiểu Crystal Report NET Object Model 3-38

khả năng phân phối theo lịch trình tiềm ẩn của Crystal Enterprise để tạo những triệu gọi

hàm API tiện lợi làm việc này cho bạn

Một lãnh vực chủ chốt theo đấy Crystal Enterprise “đáng đồng tiền bát gạo” là với công nghệ cụm (clustering)

và kiến trúc multi-server - bạn hình dung thí dụ kể trên bây giờ lại có 10 báo cáo phải gởi cho 100 người sử dụng khác nhau mỗi ngày với một bản sao bản báo cáo và một link nối lui về nơi từ đấy đi

họ có thể view và truy tìm báo cáo sống động

Công nghệ tổ chức theo cụm server (clustering) trong lòng Crystal Enterprise bảo đảm là những công việc này sẽ chạy trơn tru không cần biết server nào chạy hoặc tắt, và kiến trúc phân phối nào, có nghĩa là bạn có thể thêm nhiều server chia sẻ gánh nặng xử

lý bao gồm các server đặc biệt có nhiệm

vụ chạy các báo cáo theo lịch trình và xử

lý theo yêu cầu

1.3.6 Kiến trúc báo cáo

Khi nhìn vào Crystal Reports.NET, ta thấy phần mềm này có khả năng tạo những ứng

dụng kiểu đa tầng (multi-tier) Trong quá khứ, phần lớn các ứng dụng Windows đều theo

cách tiếp cận lưỡng tầng (two-tier) với Crystal Reports, theo đấy các báo cáo sẽ được

chạy trên máy cục bộ mà ứng dụng đã được cài đặt

Với việc xuất hiện của Crystal Reports.NET, các nhà triển khai phần mềm đã tìm

thấy vô số công cụ mà sản phẩm cung cấp bao gồm Web Services, Enterprise integration,

v.v Các ứng dụng báo cáo sử dụng Crystal Reports.NET thường thuộc một trong hai

loại sau đây: đơn tầng (single-tier) hoặc lưỡng tầng (two-tier)

Ngày đăng: 18/03/2018, 22:55

TỪ KHÓA LIÊN QUAN

w