Tải bản đầy đủ (.pdf) (61 trang)

Xây dựng chương trình quản lý khối lựơng giảng dạy cho khoa CNTT qua mạng lan

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.28 MB, 61 trang )

MỤC LỤC
LỜI NÓI ĐẦU ..............................................................................................................3
CHƯƠNG 1. TỔNG QUAN VỀ VISUAL BASIC.NET................................................4
1.1 Tổng quan về ngôn ngữ lập trình Visual Basic.Net ........................................................... 4
1.1.1 Sơ lược về lịch sử của Visual Basic.Net ...................................................................... 4
1.1.2 Sơ lược về Visual Basic.NET ......................................................................................... 5
1.1.3 Sơ lược về .NET ................................................................................................................ 6
1.2 Form và cách sử dụng Form .................................................................................................... 9
1.3 Các kiểu dữ liệu thông dụng trong Visual Basic.net ........................................................ 10
1.4 Các câu lệnh điều khiển ........................................................................................................ 10
1.5 Các kỹ thuật kết nối cơ sở dữ liệu ADO.Net .................................................................... 12
1.5.1 DataReader ....................................................................................................................... 12
1.5.2 Data Adapter .................................................................................................................... 14
1.5.3.NET Data Providers ........................................................................................................ 14
1.5.4. Đối tượng Connection ................................................................................................... 15
1.5.5 Đối tượng Command ...................................................................................................... 17
1.5.6 Điều khiển lưới dữ liệu (DataBinding) ...................................................................... 19
1.5.7.Khám phá Crytal Report ................................................................................................ 22
CHƯƠNG 2. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG............................................26
2.1 Khảo sát hiện trạng.................................................................................................................. 26
2.2 Đánh gía hiện trạng cũ và sự cần thiết phải xây dựng hệ thống mới ........................... 26
2.3 Nội dung quy định thực tế được sử dụng cho chương trình ........................................... 27
2. 4. Phân tích và thiết kế hệ thống ............................................................................................ 29
2.4.1 Mục tiêu bài toán ............................................................................................................. 29
2.4.2 Biểu đồ phân cấp chức năng (BPC) ............................................................................ 29
2.4.3. Mô hình thực thể liên kết (ERD) ................................................................................ 30
2.4.4 Sơ đồ thực thể liên kết................................................................................................... 36
2.4.5 Biểu đồ luồng dữ liệu(BLD) ......................................................................................... 36
CHƯƠNG 3 THỰC NGHIỆM ...................................................................................38
3.1 Chương trình SERVER .......................................................................................................... 39
3.1.1 Main ................................................................................................................................... 39


3.1.2 Hệ ....................................................................................................................................... 39
3.1.3 Khoá ................................................................................................................................... 39
3.1.5 Bộ môn .............................................................................................................................. 40
3.1.6 Môn .................................................................................................................................... 41
3.1.7 Giáo viên ........................................................................................................................... 42
3.1.8 Năm .................................................................................................................................... 42
3.1.9 Số sinh viên ...................................................................................................................... 43
3.1.10 Đơn vị học trình ............................................................................................................ 43
3.1.11 Chi tiết môn .................................................................................................................... 44
3.1.12 Chi tiết giáo viên ........................................................................................................... 44
3.1.13 Tìm kiếm ......................................................................................................................... 45
3.1.14 Khối lượng giảng dạy................................................................................................... 45
3.1.15 Chi tiết khối lượng giảng dạy ..................................................................................... 46
3.1.16 Quản lý ID ...................................................................................................................... 46
3.1.17 Báo cáo Bộ môn ............................................................................................................ 47
3.1.18 Báo cáo Khoa ................................................................................................................. 48
3.2 Chương trình CLIENT ........................................................................................................... 49
3.2.1 Main ................................................................................................................................... 49

1


3.2.2 Đổi Pass............................................................................................................................. 49
3.2.3 Chi tiết khối lượng giảng dạy ....................................................................................... 50
3.2.4 Cập nhật định mức .......................................................................................................... 50
3.2.5 Nhiệm vụ quy đổi ............................................................................................................ 51
3.2.6 Nhiệm vụ khác ................................................................................................................. 51
3.2.7 Thực tập............................................................................................................................. 52
3.2.8 Tìm kiếm ........................................................................................................................... 52
3.2.9 Báo cáo Bộ môn .............................................................................................................. 53

3.2.10 Báo cáo Giáo viên ......................................................................................................... 54
3.2.11 Báo cáo Thực tập .......................................................................................................... 55
3.2.12 Báo cáo Nhiệm vụ khác ............................................................................................... 56
3.2.13 Báo Cáo Ngiệm vụ quy đổi......................................................................................... 57
3.3 Kết quả đạt được ...................................................................................................................... 58
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN....................................................................59
TÀI LIỆU THAM KHẢO ...........................................................................................60

2


LỜI NÓI ĐẦU
Ngày nay, khoa học kỹ thuật ngày càng phát triển mạnh mẽ, trong đó khoa
học công nghệ cũng phát triển như vũ bão và xâm nhập vào mọi lĩnh vực của đời
sống: Khoa học, kinh tế, xã hội, nhất là đối với ngành giáo dục.
Việt Nam trong những năm gần đây việc đẩy mạnh ứng dụng tin học vào
công việc hàng ngày là mục tiêu lớn được nhà nước quan tâm và phát triển. Tin
học hoá vào quản lý, giảng dạy ... là một trong những lĩnh vực quan trọng của
ứng dụng tin học. Việc áp dụng tin học vào quản lý không những giúp cho chất
lượng công việc tăng cao, quản lý được chặt chẽ, chính xác có cơ sở khoa học mà
còn làm giảm số nhân lực cần thiết để thực hiện công việc đó.
Hiện nay trong khoa Công nghệ thông tin nói riêng, các trường đại học và
cao đẳng nói chung tin học hoá việc giảng dạy, thi cử, quản lý ... là việc làm rất
thiết thực.
Trong 5 năm học tập và rèn luyện tại khoa em rất mong được vận dụng
những kiến thức mà mình đã thu được để có thể làm được một sản phẩm nhỏ, có
thể áp dụng được vào thực tế cuộc sống. Chính vì vậy em đã lựa chọn và nghiên
cứu đề tài “Xây dựng chương trình quản lý khối lựơng giảng dạy cho khoa
CNTT qua mạng Lan ”.
Em mong rằng đề tài của em sẽ được sử dụng trong bộ công cụ hỗ trợ làm

việc của Khoa và chương trình của em có thể đáp ứng được những yêu cầu thực
tế gặp phải khi sử dụng.

3


CHƯƠNG 1
TỔNG QUAN VỀ VISUAL BASIC.NET
1.1 Tổng quan về ngôn ngữ lập trình Visual Basic.Net
1.1.1 Sơ lược về lịch sử của Visual Basic.Net
Ngôn ngữ BASIC (Beginner's All Purpose Symbolic Instruction Code) đã có
từ năm 1964. BASIC rất dễ học và dễ dùng. Trong vòng 15 năm đầu, có rất nhiều
chuyên gia Tin Học và công ty tạo các chương trình thông dịch (Interpreters) và
biên dịch (Compilers) cho ngôn ngữ làm BASIC trở nên rất phổ thông.
Năm 1975, Microsft tung ra thị trường sản phẩm đầu tay Microsoft BASIC và
tiếp đó Quick BASIC (còn gọi là QBASIC) thành công rực rỡ.
Quick BASIC phát triển trong nền Windows nhưng vẫn khó khăn khi tạo
giao diện kiểu Windows. Sau đó nhiều năm, Microsoft bắt đầu tung ra 1 sản
phẩm mới cho phép ta kết hợp ngôn ngữ dễ học BASIC và môi trường phát triển
lập trình với giao diện bằng hình ảnh (Graphic User Interface - GUI) trong
Windows. Đó là Visual Basic Version 1.0.
Sự chào đời của Visual Basic Version 1.0 vào năm 1991 thật sự thay đổi bộ
mặt lập trình trong Công Nghệ Tin Học.
Trước đó, ta không có một giao diện bằng hình ảnh (GUI) với một IDE
(Integrated Development Environment) giúp các chuyên gia lập trình tập trung
công sức và thì giờ vào các khó khăn liên hệ đến doanh nghiệp của mình. Mỗi
người phải tự thiết kế giao diện qua thư viện có sẵn Windows API (Application
Programming Interface) trong nền Windows. Điều này tạo ra những trở ngại
không cần thiết làm phức tạp việc lập trình.
Visual Basic giúp ta bỏ qua những hệ lụy đó, chuyên gia lập trình có thể tự

vẽ cho mình giao diện cần thiết trong ứng dụng (application) 1 cách dễ dàng và
như vậy, tập trung nổ lực giải đáp các vần đề cần giải quyết trong doanh nghiệp
hay kỹ thuật.

4


Ngoài ra, còn nhiều công ty phụ phát triển thêm các khuôn mẫu (modules),
công cụ (tools, controls) hay ứng dụng (application) phụ giúp dưới hình thức
VBX cộng thêm vào giao diện chính càng lúc càng thêm phong phú.
Khi Visual Basic phiên bản 3.0 được giới thiệu, thế giới lập trình lại thay đổi
lần nữa. Kỳ này, ta có thể thiết kế các ứng dụng (application) liên hệ đến Cơ Sở
Dữ Liệu (Database) trực tiếp tác động (interact) đến người dùng qua DAO (Data
Access Object). Ứng dụng này thưòng gọi là ứng dụng tiền diện (front-end
application) hay trực diện.
Phiên bản 4.0 và 5.0 mở rộng khả năng Visual Basic nhắm đến Hệ Điều
Hành Windows 95.
Phiên bản 6.0 cung ứng 1 phương pháp mới nối với Cơ Sở Dữ Liệu
(Database) qua sự kết hợp của ADO (Active Data Object). ADO còn giúp các
chuyên gia phát triển mạng nối với Cơ Sở Dữ Liệu (Database) khi dùng Active
Server Pages (ASP).
Tuy nhiên, Visual Basic phiên bản 6.0 (VB6) không cung ứng tất cả các đặc
trưng của kiểu mẫu ngôn ngữ lập trình khuynh hướng đối tượng (Object Oriented
Language - OOL) như các ngôn ngữ C++, Java.
Thay vì cải thiện hay vá víu thêm thắt vào Visual Basic phiên bản 6.0,
Microsoft đã xoá bỏ tất cả làm lại từ đầu các ngôn ngữ lập trình mới theo kiểu
OOL rất hùng mạnh cho khuôn nền .NET Framework. Đó là các ngôn ngữ lập
trình Visual Basic.NET và C# (gọi là C Sharp). Sau đó, nhiều ngôn ngữ lập trình
khác cũng thay đổi theo tỷ như smalltalk.NET, COBOL.NET, làm Công Nghệ
Tin Học trở nên phong phú hơn, đa dạng hơn.

Tất cả những thay đổi này nhằm đáp ứng kịp thời sự đòi hỏi và nhu cầu phát
triển cấp bách trong kỹ nghệ hiện nay.
1.1.2 Sơ lược về Visual Basic.NET
Visual Basic.NET (VB.NET) là ngôn ngữ lập trình hướng đối tượng
(Object Oriented Programming Language) do Microsoft thiết kế lại từ con
số không.

5


Visual Basic.NET (VB.NET) không kế thừa Visual Basic 6 hay bổ sung,
phát triển từ Visual Basic 6 mà là một ngôn ngữ lập trình hoàn toàn mới trên nền
Microsoft 's .NET Framework. Do đó, nó cũng không phải là Visual Basic phiên
bản 7. Thật sự, đây là ngôn ngữ lập trình mới và rất lợi hại, không những lập nền
tảng vững chắc theo kiểu mẫu đối tượng như các ngôn ngữ lập trình hùng mạnh
khác đã vang danh C++, Java mà còn dễ học, dễ phát triển và còn tạo mọi cơ hội
hoàn hảo để giúp ta giải đáp những vấn đề khúc mắc khi lập trình. Hơn nữa, dù
không khó khăn gì khi cần tham khảo, học hỏi hay đào sâu những gì xảy ra bên
trong ... hậu trường OS, Visual Basic.NET (VB.NET) giúp ta đối phó với các
phức tạp khi lập trình trên nền Windows và do đó, ta chỉ tập trung công sức vào
các vấn đề liên quan đến dự án, công việc hay doanh nghiệp mà thôi.
Nếu ta để ý tên của Visual Basic.NET (VB.NET), ta thấy ngay ngôn ngữ lập
trình này chuyên trị tạo ứng dụng (application) dùng trong mạng, liên mạng hay
trong Internet.
1.1.3 Sơ lược về .NET
.NET là tầng trung gian giữa các ứng dụng (applications) và hệ điều hành
(OS). Tầng .NET cung cấp mọi dịch vụ cơ bản giúp ta tạo các công dụng mà ứng
dụng (application) đòi hỏi, giống như hệ điều hành cung cấp các dịch vụ cơ bản
cho ứng dụng (application), tỷ như: đọc hay viết các tập tin (files) vào đĩa cứng
(hard drive), ... Tầng này bao gồm một bộ các ứng dụng (application) và hệ điều

hành gọi là .NET Servers. Như vậy, .NET gần như là một bộ sưu tập (collection)
các nhu liệu và khái niệm kết hợp trộn lẫn nhau làm việc nhằm tạo giải đáp các
vấn đề liên quan đến thương nghiệp của ta. Trong đó:
Tập hợp các đối tượng (objects) được gọi là .NET Framework và Tập hợp
các dịch vụ yểm trợ mọi ngôn ngữ lập trình .NET gọi là Common Laguage
Runtime (CLR).

6


Hình 1.1: Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển .NET

Hãy quan sát thành phần cơ bản của .NET:
User Applications
.NET Framework
.NET Servers
.NET Devices
Hardware Components

1.1.3.1 NET Servers
Mục tiêu chính của .NET là giúp ta giảm thiểu tối đa công việc thiết kế hệ
thống tin học phân tán (distributed system). Đa số công việc lập trình phức tạp
đòi hỏi đều được thực hiện ở hậu phương (back end) trong các máy cung cấp
dịch vụ (servers). Microsoft đã đáp ứng với bộ sưu tập '.NET Enterprise Servers',
bộ này chuyên trị và yểm trợ mọi đặc tính (features) hậu phương cần có cho một
hệ thống tin học phân tán (distributed system).
Bộ sưu tập '.NET Enterprise Servers' bao gồm:
Server Operationg Systems: MS Windows Server, Advanced Server và Data
Center Server
Clustering và Load Balancing Systems: MS Application Center, MS Cluster Server


7


Database System: MS SQL Server
E-Mail System: MS Exchange Server
Data-transformation engine trên cơ sở XML: MS Biz Talk Server
Accessing Legacy Systems: Host Integration Server
Tất cả các máy server này cung cấp mọi dịch vụ cần thiết cho các ứng dụng
(application) về .NET và là nền tảng xây dựng hệ thống Tin Học cho mọi dự án
lập trình.
1.1.3.2 NET Framework
Đối với Visual Basic.NET (VB.NET), tất cả mọi thứ đều thay đổi tận gốc rễ.
Một trong những thành phần quan trọng của .NET là .NET Framework. Đây là
nền tảng cho mọi công cụ phát triển các ứng dụng (application) .NET
.NET Framework bao gồm:
Môi trường vận hành nền (Base Runtime Environment).
Bộ sưu tập nền các loại đối tượng (a set of foundation classes).
Môi trường vận hành nền (Base Runtime Environment) hoạt động giống như
hệ điều hành cung cấp các dịch vụ trung gian giữa ứng dụng (application) và các
thành phần phức tạp của hệ thống. Bộ sưu tập nền các loại đối tượng (a set of
foundation classes) bao gồm một lớn các công dụng đã soạn và kiểm tra trước,
tỷ như: giao lưu với hệ thống tập tin (file system access) hay ngay cả các quy ước
về mạng (Internet protocols), ... nhằm giảm thiểu gánh nặng lập trình cho các
chuyên gia Tin Học. Do đó, việc tìm hiểu .NET Framework giúp ta lập trình dễ
dàng hơn vì hầu như mọi công dụng đều đã được yểm trợ.
Ta xem .NET Framework như là một tầng công dụng trừu tượng cung cấp
dịch vụ trên hệ điều hành (nhìn dưới khía cạnh cung cấp dịch vụ):
User Applications
.NET Framework

Hệ điều hành (OS)
Device Drivers
Harware Components (Cương liệu)

8


Để mọi ngôn ngữ lập trình sử dụng được các dịch vụ cung cấp bởi .NET
Framework, Microsoft tạo ra 1 tiêu chuẩn chung cho ngôn ngữ lập trình gọi là
Common Language Specifications (CLS). Tiêu chuẩn này giúp các chương trình
biên dịch (compilers) làm việc hữu hiệu. Microsoft sáng chế ra Visual Basic.NET
(VB.NET), Visual C++.NET và C# (đọc là C Sharp) cho nền .NET Framework
và cũng không quên phổ biến rộng rãi CLS trong Công Nghệ Tin Học giúp các
ngôn ngữ lập trình khác làm việc trong nền .NET, tỷ như: COBOL.NET,
Smalltalk.NET, ...
Lưu ý ở đây, mặc dù Visual Basic.NET (VB.NET), Visual C++.NET hay C#
khác nhau về syntax và các công dụng phụ thuộc nhưng tất cả đều biên dịch ra
cùng một ngôn ngữ trung gian gọi là MSIL (Microsoft Intermediate Language)
và do đó, không có ngôn ngữ lập trình .NET nào hùng mạnh hơn ngôn ngữ lập
trình .NET nào. Tất cả đều bình đẳng.
1.2 Form và cách sử dụng Form
Khái niệm: Là một cửa sổ của Windows dùng để chứa các thành phần khác.
Thông thường thì mỗi công việc người ta sẽ biểu diễn bằng một form.
Ví dụ:
Form mở file
Form ghi file
Form lấy dữ liệu
Các thành phần chính của form
Thanh tiêu đề : gồm tên form và một số nút lệnh thông dụng đối với cửa sổ:
Thu nhỏ, phóng to và đóng cửa sổ.

Command button: Nút lệnh điều khiển.
Điều khiển Textbox: Cho phép người dùng nhập vào thông tin.
Combobox: Danh sách đổ xuống.
Điều khiển checkbox: Cho phép người dùng lựa chọn các lựa chọn.
Các thuộc tính của form:
Ta có thể xem thuộc tính của form bằng cách mở cửa sổ Properties
Một số thuộc tính của form:

9


.name: Tên form, ta có thể đổi tên form khi lập trình.
.backcolor: Mầu nền của form.
.Icon: Biểu tượng của form ta có thể thay đổi biểu tượng này bằng một biểu
tượng mà ta thích.
.width : Độ rộng của form.
.height : Chiều cao của form.
1.3 Các kiểu dữ liệu thông dụng trong Visual Basic.net
.Integer : Kiểu số nguyên.
.Boolean : Chứa một trong hai giá trị True hoặc False.
.String : Kiểu chuỗi.
Khai báo biến:
a. Cấp độ của biến
Cấp độ cục bộ: Thường khai báo trong thân một thủ tục.
Cấp độ tổng thể: Thường khai báo ở đầu mỗi form hoặc nằm ngoài thủ tục
hoặc hàm.
b. Khai báo biến
Dim (tên biến) AS (kiểu dữ liệu)
c. Khai báo mảng
Dim (tên mảng) () AS (kiểu dữ liệu)

1.4 Các câu lệnh điều khiển
a. Cấu trúc if….then..
If (điều kiện1) Then
(công việc1)
ElseIf (điều kiện2) Then
(công việc2)
………………
ElseIf (điều kiện n) Then
(công việc n)
Else
(công việc cuối cùng)
End if

10


b. Câu lệnh lựa chọn
Cú pháp:
Select Case (biểu thức điều kiện)
Case (danh sách biểu thức 1)
(khối lệnh 1)
Case (danh sách biểu thức 2)
(khối lệnh 2)


Case (danh sách biểu thức n)
(khối lệnh n)
Case Else
(công việc n+1)
End Select

c. Cấu trúc Loop…do
Thực thi một số khối lệnh với số vòng lặp không xác định trước trong đó mỗi
biểu thức điều kiện so sánh để quyết định vòng lặp có tiếp tục hay không điều
kiện nhận một trong hai giá trị (True) hay (False).
Kiểu 1
Do while (điều kiện)
(khối lệnh)
Loop
Khi nào điều kiện còn đúng thì còn tiếp tục làm việc với khối lệnh nằm trong
thân vòng lặp.
Kiểu 2
Do (khối lệnh)
Loop while
Sẽ lặp lại khối lệnh nằm trong thân vòng lặp khi mà điều kiện vẫn còn đúng.
d: Vòng lặp For..Next
Cấu trúc
For (biểu thức điều kiện = giá trị ban đầu) to giá trị cuối
Khối lệnh
Next

11


1.5 Các kỹ thuật kết nối cơ sở dữ liệu ADO.Net
Visual Basic.Net cung cấp đối tượng ADO.Net bao gồm hai thành phần
chính là .Net Data Provider và đối tượng DataSet, cho phép bạn kết nối tới mọi
cơ sở dữ liệu, xử lý và trình bày chúng bằng nhiều hình thức khác nhau.
Bằng cách sử sụng các đối tượng của ADO.Net, bạn có thể xây dựng các lớp dữ
liệu cho từng thực thể hoặc xây dựng các đối tượng tương tác với cơ sở dữ liệu
dùng cho project trên nền .Net.

Khác với DAO(DATA ACCESS OBJECT) ADO(ACTIVE DATA
OBJECTS) cho phép làm việc với mọi nguồn dữ liệu không nhất thiết phải là cơ
sở dữ liệu Microsoft Acsess hay SQL server, dữ liệu nguồn có thể là danh sách
các địa chỉ mail, hay một File Text. Trong khi đó DAO chỉ duy nhất có thể liên
kết được với hệ quản trị CSDL MS Access.
1.5.1 DataReader
Đối tượng DataReader được .NET Framework cung cấp nhằm phục vụ việc truy
cập vào cơ sở dữ liệu nhanh và hiệu quả cụ thể là việc đọc dữ liệu từ Database. Như
đã đề cập trước, DataSet phục vụ cho việc xử lý dữ liệu ngắt kết nối, còn
DataReader lại phục vụ chủ yếu cho việc kết nối. Tốc độ của xử lý DataReader theo
hướng kết nối rất phù hợp cho việc xử lý dữ liệu của ứng dụng Web. Do vậy, việc
xử lý dữ liệu cho ứng dụng web thường được xử lý bằng DataReader.
Cơ chế xử lý của DataReader : DataReader chỉ xử lý 1 record tại một thời
điểm và chỉ được truy xuất một chiều, không có các thao tác phức tạp như sắp
xếp hay truy xuất bất cứ record ngẫu nhiên nào. Trong khi truy xuất dữ liệu, dĩ
nhiên DataReader sẽ giữ kết nối liên tục với database (hướng kết nối), và
DataReader chỉ phục vụ thao tác đọc (readonly). Chính vì tính chất hướng kết nối
nên DataReader được đơn giản hoá tối đa để việc xử lý nhẹ nhàng, ít rườm rà, tối
ưu được tốc độ xử lý (rất quan trọng đối với các ứng dụng trên nền web).
Cũng như hai đối tượng Command và Connection, tùy theo loại kết nối mà
DataReader cũng có hai loại: OleDbDataReader và SqlDataReader. Để sử dụng
ta phải import hai namespace: System.Data.OleDb và System.Data.SqlClient.
Cách sử dụng: DataReader được sử dụng để chứa kết quả trả về từ đối tượng
Command với việc thực thi hàm ExecuteReader.

12


Dim conn As SqlConnection = New
SqlConnection("server=localhost;database=NorthWind;uid=sa;pwd=sa")

conn.Open()
Dim cmd As SqlCommand = New SqlCommand("Select * From Customers",
conn
Dim dr As SqlDataReader = cmd.ExecuteReader
While (dr.Read
Response.Write(dr("ContactName") + "")
End While
conn.Close()
Hàm ExecuteReader của đối tượng Command có thể nhận vào tham số là
những giá trị liệt kê của đối tượng CommandBehavior.
cmd.ExecuteReader(CommandBehavior.SchemaOnly)
Một số giá trị liệt kê thông dụng của CommandBehavior là :
CloseConnection : Connection sẽ đóng khi đối tượng DataReader đóng.
SchemaOnly : Câu truy vấn không trả về dữ liệu mà trả về thông tin các cột
của bảng.
SingleRow : Câu truy vấn chỉ trả về một dòng duy nhất.
Chúng ta có thể kết nối các giá trị của CommandBehavior với nhau bằng dấu &:
cmd.ExecuteReader(CommandBehavior.CloseConnection &
CommandBehavior.SingleRow)
Một số thuộc tính và phương thức thông dụng của DataReader.
Thuộc tính
FieldCount : Trả về số trường có trong record hiện hành.
IsClosed : Trả về giá trị boolean xác định đối tượng DataReader có bị đóng
hay không.
Phương thức:
Close : Đóng
GetBoolean, GetByte, GetChar, GetDateTime, GetDecimal : Lấy các giá trị
tại cột đang xét tùy vào kiểu.

13



GetValue, GetValues : Lấy về giá trị hoặc tập giá trị ở dạng “nguyên thủy”
(kiểu dữ liệu gốc của Database).
NextResult : Nhóm Kết quả tiếp theo.
Read : Record tiếp theo
1.5.2 Data Adapter
DataAdapter là đối tượng làm trung gian lấy dữ liệu về cho DataSet, để
DataSet thực hiện xử lý ngắt kết nối. Do vậy, mặc dù DataAdapter được liệt kê là
đối tượng hướng kết nối nhưng thực chất nó phục vụ cho việc ngắt kết nối.
Cũng như các đối tượng khác của ADO.NET, DataAdapter cũng có 2 loại
tuỳ theo loại dữ liệu : OleDbDataAdapter, SqlDataAdapter.
Cách Sử dụng
Sau đây là một số thuộc tính và phương thức thông dụng.
Thuộc tính
SelectCommand, InsertCommand, UpdateCommand, DeleteCommand :
Các câu lệnh select , insert, update ,delete dữ liệu.
Phương thức
Fill : Phương thức thực hiện kết quả trong câu lệnh select, rồi trả về cho
DataSet xử lý.
Update : Gọi lệnh cập nhật các thay đổi của dữ liệu lên dữ liệu nguồn.
1.5.3 NET Data Providers
.NET Data Providers là một tập các đối tượng phục vụ cho việc trao đổi dữ
liệu giữa Data Source (dữ liệu nguồn) và đối tượng DataSet. Nó chia ra gồm hai
loại tập đối tượng : Một tập các đối tượng chịu trách nhiệm quản lý các kết nối
(connections) tới DataSource (dữ liệu nguồn) và một tập các đối tượng còn lại
chịu trách nhiệm xử lý dữ liệu.
ADO.NET cung cấp hai loại .NET Data Providers đó là SQL Server .NET
Data Provider và OLE DB .NET Data Provider. SQL Server .NET Data Provider
sử dụng truy xuất Database SQL Server 7.0 trở về sau. Còn OLE DB .NET Data

Provider sử dụng cho phiên bản 6.5 trở về trước và các loại Database khác (ví dụ

14


như Access, Oracle…). SQL Server .NET Data Provider hoạt động hiệu quả hơn
bởi vì nó thao tác trực tiếp với SQL Server mà không cần phải thông qua OLE
DB Provider.
Để sử dụng hai loại .NET Data Provider này ta phải imporai hai Namespace:
System.Data.SqlClient cho SQL Server .NET Data Provider
System.Data.OleDb cho OLE DB Data Provider
1.5.4 Đối tượng Connection
Đối tượng Connection là đối tượng chịu trách nhiệm quản lý kết nối tới
nguồn dữ liệu (DataSource). Có hai dạng Connection tương ứng với hai kiểu dữ
liệu SQL Server và OLE DB đó là : SqlConnection và OleDbConnection. Cả hai
đối tượng này đều implement từ interface IDbConnection. Bằng cách sử dụng
Interface IDbConnection, các nhà cung cấp dịch vụ Database khác nhau có thể
tạo ra các cài đặt phù hợp cho Database riêng của họ.
Đối tượng Connection của ADO.NET chỉ nhận một tham số đầu vào là
chuỗi kết nối (connection string). Trong chuỗi kết nối, các thông số được cách
nhau bằng dấu “;”, connection string có các thông số sau.
Provider : Tên nhà cung cấp Database, đối với OLEDB cần khai báo là
SQLOLEDB. Đối với SQL Server thì không cần thuộc tính này.
DataSource (hoặc Server) : Tên/địa chỉ database server cần kết nối tới.
Initial catalog (hoặc Database) : Tên của Database cần truy xuất.
Uid: username để đăng nhập vào Database Server.
Pwd : password để đăng nhập vào Database Server.
Sau đây là ví dụ về một chuỗi kết nối đối với Database dạng OLE DB
Provider=SQLOLEDB.1;Data Source=MySQL; Initial Catalog=NorthWind;
uid=sa; pwd=sa;

Còn đây là ví dụ về một chuỗi kết nối đối với Database dạng SQL Server
Server=CSC;database=Northwind;uid=sa;pwd=sa;
Sau đây là các thuộc tính, phương thức, sự kiện thông dụng của cả
SqlConnection và OleDbConnection.

15


Thuộc tính
ConnectionString : Thuộc tính thiết lập / lấy chuỗi kết nối.
ConnectionTimeout: Thuộc tính thiết lập / lấy thời gian chờ trong khi truy
xuất vào database. Khi truy xuất vào Database, chương trình sẽ chờ đúng khoảng
thời gian này nếu chờ qua khoảng thời gian này mà vẫn không kết nối được vào
database thì chương trình sẽ báo lỗi.
Database : Thuộc tính thiết lập/ lấy tên database của đối tượng connection
hiện thời.
DataSource : Thuộc tính thiết lập/lấy tên của database server của đối tượng
connection hiện thời.
State : Lấy trạng thái hiện thời của Connection có các trạng thái sau:
Connecting, Broken, Open, Closed, Executing, Fetching.
Phương thức
BeginTransaction : Sử dụng cho trường hợp xử lý giao tác của ứng dụng.
Việc xử lý giao tác rất có lợi trong khi xử lý dữ liệu từ database vì có lúc trong
khi xử lý dữ liệu gặp lỗi thì có thể thực hiện câu lệnh như Rollback hay trong lúc
thao tác cũng có thể thực hiện được các giao tác chính như trên SQL Server như
Commit- Close : đóng 1 connection.
Open : Mở 1 connection với các thuộc tính hiện hành.
Sự kiện
InfoMessage : Xảy ra khi provider gửi ra một lời cảnh cáo hay thông tin.
StateChange : Xảy ra khi trạng thái của connection thay đổi.

Sau đây là đoạn source code sử dụng đối tượng Connection để kết nối vào
cở sở dữ liệu.
Dim connString As String = "server=CSC;database=Northwind;uid=sa;pwd=sa"
Dim conn As SqlConnection = New SqlConnection(connString)
’mo ket noi
conn.Open()
'Thuc hien cac thao tac du lieu<
'dong ket noi<
conn.Close()

16


1.5.5 Đối tượng Command
Sau khi chúng ta đã kết nối vào nguồn dữ liệu, chúng ta cần phải thực hiện
thao tác các dữ liệu. Để thao tác được với các dữ liệu chúng ta phải dùng đối
tượng Command. Đối tượng Command là đối tượng rất “đa năng”, nó vừa xử lý
được sqlserver stored procedures vừa xử lý được các giao tác (transaction).
Tương tự như đối tượng Connection, đối tượng Command cũng chia ra làm
hai loại tuỳ theo nguồn dữ liệu : SqlCommand (cho SQL Server) và
OleDbCommand (cho OLE DB).
Một số thuộc tính và phương thức thông dụng của đối tượng Command
Thuộc tính
CommandText : Thiết lập/ Lấy lệnh thao tác với dữ liệu.
CommandTimeout : Thiết lập/ Lấy thời gian chờ thực hiện lệnh. Sau khi chờ
một khoảng thời gian nếu vượt quá sẽ báo lỗi.
CommandType : Thiết lập/ Lấy kiểu của đối tượng lệnh (lệnh trực tiếp, stored
procedure…)
Parameters : Các tham số truyền vào cho đối tượng command (ở kiểu
OleDbParameterCollection/ SQLParameterCollection).

Connection : Thiết lập / lấy kết nối đang được đối tượng Command sử dụng.
Transaction : Thiết lập / lấy giao tác mà đối tượng Command thực thi.
Phương thức
ExecuteReader : Thực thi câu lệnh CommandText của đối tượng Command
và trả về kiểu DataReader (OleDbDataReader / SqlDataReader ).
ExecuteNonQuery : Thực thi câu lệnh CommandText của đối tượng
Command, đây là dạng câu lệnh cập nhật cơ sở dữ liệu (xoá /sửa) nên chỉ trả về
số dòng bị ảnh hưởng mà không trả về dòng dữ liệu nào.
ExecuteScalar : Thực thi câu truy vấn của đối tượng Command và chỉ trả
về cột đầu tiên của dòng đầu tiên của kết quả. Các kết quả còn lại bị bỏ qua.
Các hàm khởi tạo của đối tượng SqlCommand (Tương tự cho đối tượng
OleDbCommand):
New() : không có tham số nào.

17


New(cmdText as String):Trong đó cmdText là câu lệnh truyền vào cho đối
tượng Command.
New(cmdText as String, connectin as SqlConnection): Trong đó cmdText là
câu lệnh truyền vào cho đối tượng Command.
Connection là đối tượng kết nối truyền vào cho đối tượng Command
New(cmdText as String, connection as SqlConnection, transaction as
SqlTransaction):Trong đó cmdText là câu lệnh truyền vào cho đối tượng
Command.
Transaction : Là giao tác truyền cho đối tượng Command.
Các ví dụ :
- Sử dụng câu lệnh ExecuteNonQuery để update dữ liệu
Dim connStr As String = "server=CSC;database=Northwind;uid=sa;pwd=sa”
Dim cmdStr As String = "Update Customers set CompanyName='CSC' where

CustomerID='Seves'"
Dim conn As New SqlConnection(connStr)
conn.Open()
Dim cmd As SqlCommand = New SqlCommand(cmdStr, conn)
cmd.ExecuteNonQuery()
conn.Close()
Sử dụng câu lệnh ExecuteReader để lấy dữ liệu
Dim conn As New SqlConnection("server=CSC; database=Northwind;uid=sa;
pwd=sa")
Dim cmd As New SqlCommand("Select * From Customers", conn)
conn.Open()
Dim rdr As SqlDataReader = cmd.ExecuteReader()
While rdr.Read()
Response.Write(rdr.GetString(0) + "")
End While
rdr.Close()

18


- Sử dụng câu lệnh ExecuteScalar để lấy dữ liệu:
Dim conn As New SqlConnection("server=CSC; database=Northwind2;uid=sa;
pwd=sa")
conn.Open()
Dim cmdStr As String = "Select * From Customers"
Dim cmd As SqlCommand = New SqlCommand(cmdStr, conn)
Response.Write(cmd.ExecuteScalar())
conn.Close()
1.5.6 Điều khiển lưới dữ liệu (DataBinding)
DataGrid trong .NET tuy có các chức năng giống như trong Visual Basic 6

nhưng đã được nâng cấp vượt bậc và cách dùng thay đổi rất nhiều nên coi như ta
phải xem lại từ đầu.
Cách dùng thông thường nhất của một DataGrid trong Visual Basic 6 là hiển
thị một Table (bảng ) các bản ghi (Record) trong một spreadsheet(bảng tính),
mỗi hàng(row) chứa các datafiels(trường dữ liệu cột) của một bản ghi và mỗi cột
(column) có đầu trang cho biết là trường dữ liệu gì.
Nói đúng ra nằm sau lưng mỗi DataGrid là một Recordset, tức là set of
records mà ta lấy từ DataBase. Table cũng chỉ là một bản Recordset trong trường
hợp tổng quát khi ta không dùng mệnh đề where trong SQL command ví dụ
“Select * From Northwind”.
Để hiển thị data trong DataGrid, ta có thể bind(buộc) nó vào Dataset, Array
hay Collection. Thật ra nếu ta muốn, ta có thể đưa cả DataGrid vào một set của
Lisbox Items. DataGrid trong.NET có thể hiển thị cả Master/Detail record.
Checkbox

Hình 1.2: Data được hiển thị trên DataGrid

19


Datagrid.Net có hai dạng cột (column styles) có sẵn là Textbox
(DataGridTextBoxColumn) và Checkbox (DataGridBoolColumn), bạn có thể
tạo/thêm các cột này vào lúc thiết kế hay runtime. Nếu không, khi bạn gắn
Datagrid vào CSDL, nó sẽ tự tạo ra các cột tương ứng với các cột dữ liệu theo
cấu trúc của Dataset, nếu các cột có dữ liệu dạng False/True thì sẽ được hiển thị
trong DataGridBoolColumn còn các dạng khác sẽ bị biến thành dạng text hết và
hiển thị trong DataGridTextBoxColumn. Ngoài ra, bạn có thể tự tạo ra các
column style khác (custom) và gắn vào datagrid .
Các cột của Datagrid.Net có thể gắn kết với một cột dữ liệu (bound) hay
hoàn toàn độc lập với CSDL. Để gắn chính xác một cột của Datagrid.Net với một

cột trong datatable, ta sẽ sử dụng kỹ thuật Mapping Name - nghĩa là gán tên cột
dữ liệu vào cột của Datagrid.
Ngoài ra ta cũng có thể thêm các cột dữ liệu unbound vào Datatable, các cột
này sẽ không dùng để update CSDL chính mà chỉ dùng để thể hiện các dữ liệu
theo ý của bạn.
Vì ComboBox thừa kế từ ListBox nên tất cả những gì ta biết về ListBox
đều áp dụng cho ComboBox. Đặc biệt bây giờ ComboBox có property
MaxDropDownItems cho ta quyết định hiển thị bao nhiêu items khi danh sách
được mở ra.
Kèm theo đây là một chương trình biểu diễn ComboBox trong đó ta
dùng Property ValueMember của ComboBox để trả về một trị số đại diện Item.
Data trong ComboBox1 được loaded từ một Access2000 database table bằng
code sau đây:
Private Sub frmCombo_Load( ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim ds As New DataSet () ' Instantiate a Dataset
' Instantiate an OleDbDataAdapter for Access2000 database Authors.mdb
and return table Authors
Dim myData As New OleDbDataAdapter("Select * from Authors",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\Authors.mdb")
myData.Fill(ds, "Authors") ' Load table Authors into Dataset

20


With ComboBox1
' Bind Table Authors to ComboBox1
.DataSource = ds.Tables("Authors")
' Make Property/Datafield FullName the DisplayMember of ComboBox1
.DisplayMember = "FullName"

' Make Property/Datafield AuthorID the ValueMember of ComboBox1
.ValueMember = "AuthorID"
End With
End Sub
Chúng ta chỉ định record datafield FullName làm DisplayMember của
ComboBox1 và datafield AuthorID làm ValueMember của ComboBox1.
Ta truy cập data của cơ sở dữ liệu bằng cách dùng một DataAdapter loại
OleDbDataAdapter khi cho nó một SQL CommandText: "Select * from Authors"


một

connection

string,

trong đó



cho

biết

database

driver:

Microsoft.Jet.OLEDB.4.0 và tên của database ..\Authors.mdb. File Authors.mdb
nằm chung với mã nguồn của chương trình trong parent folder của folder bin, nơi

chứa ComboBox.exe.
Kế đó ta dùng DataAdapter để bỏ table Authors vào dataset ds. Cách làm
việc này tương tự như ADO (Active Data Object) trong Visual Basic 6. Có điểm
khác là Dataset có thể chứa nhiều tables (recordsets) và nó hoạt động như một
cached disconnected database trong bộ nhớ. Kỹ thuật này có tên là ADO.NET .
Mỗi lần user select một item mới từ ComboBox1, chương trình sẽ hiển thị
AuthorId, là ValueMember trong Label1.
Private Sub ComboBox1_SelectedIndexChanged( ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
ComboBox1.SelectedIndexChanged
Try
'Display the selected valueMember
Label1.Text = ComboBox1.SelectedValue
Catch
End Try
End Sub

21


Ở đây có hai cách để ta select một ComboBox item bằng coding. Cách thứ
nhất là cho biết AuthorId (ValueMember), user clicks button Select by AuthorId
để thấy kết quả:
Private Sub BtnSelectbyAuthorId_Click_1( ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles BtnSelectbyAuthorId.Click
'Use Try to ignore error if operation fails
Try
' Select the ComboBox Item whose valueMember equal txtAuthorId.Text
ComboBox1.SelectedValue = txtAuthorId.Text
Catch

End Try
End Sub
và cách thứ hai là cho biết FullName (DisplayMember), user clicks button Select
by Name để thấy kết quả:
Private Sub BtnSelectByName_Click( ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BtnSelectByName.Click
'Use Try to ignore error if operation fails
Try
' Select the ComboBox Item whose DisplayMember equal txtFullName.Text
' FindString returns the index of the found item
ComboBox1.SelectedIndex = ComboBox1.FindString(txtFullName.Text)
Catch
End Try
End Sub
1.5.7.Khám phá Crytal Report
1.5.7.1 Thiết kế Crytal Report
.NET cung cấp Crytal Report như một phần của Project, bạn có thể thêm báo
cáo bằng cách chọn Project/Add New Item/Crytal Report .

22


Mỗi đối tượng Crytal Report được tạo ta và đều xuất hiện trong danh sách thành
phần dự án, tên mở rộng của chúng là .rpt.
Crytal Report cung cấp nhiều hình dạng ,cho phép bạn thiết kế Report theo
các mẫu như Standard,Letter,CrossTab…
Sau khi thiết kế Report thành công ,bạn có thể tiếp tục thiết kế các Report với
nhiều hình thức khác nhau.

Hình 1.3: Mẫu Crytal Report

1.5.7.2 Cách gọi Crytal Report từ Visual Basic.Net.
a, Gọi trực tiếp Crytal Report
Dim objRep As ReportDocument
objRep = New Standard
Dim myCon As New ConnectionInfo
Dim myInfo As New TableLogOnInfo
Dim myTable As String = "[Product Sales for 1997]"
With myCon
.ServerName = gsServer
.DatabaseName = gsDatabase
.UserID = gsUser
.Password = gsPwd

23


End With
myInfo.ConnectionInfo = myCon
objRep.Database.Tables(0).ApplyLogOnInfo(myInfo)
RV.ReportSource = objRep
RV.Refresh()
objRep.Dispose()
b, Gọi qua Dataset Crytal Report
Try
Dim objRep As ReportDocument
objRep = New myDataSet
Dim ds As New DataSet
Dim cls As New clsDatabase("server=gfhfgh;database=" + gsDatabase +
";uid=" + gsUser + ";pwd=" + gsPwd)
Dim strSQL As String = "select * from Customers where City!='Lodon'"

cls.getValue(ds, strSQL)
cls.CloseConnection()
objRep.SetDataSource(ds.Tables(0))
RV.ReportSource = objRep
RV.Refresh()
objRep.Dispose()
Catch ex As Exception
End Try
c, Gọi qua DataTable Crytal Report
Dim objRep As ReportDocument
objRep = New myDataSet
Dim dt As New DataTable
Dim cls As New clsDatabase("server=" + gsServer + ";database=" +
gsDatabase + ";uid=" + gsUser + ";pwd=" + gsPwd)
Dim strSQL As String = "select * from Customers"

24


cls.getValue(dt, strSQL)
objRep.SetDataSource(dt)
RV.ReportSource = objRep
RV.Refresh()
objRep.Dispose()
d, Gọi Crytal Report từ File ngoài
Try
Dim Filename As String = "C:\test.pdf"
Dim myDisk As DiskFileDestinationOptions = New
DiskFileDestinationOptions
myDisk.DiskFileName = Filename

Dim myOption As ExportOptions = objRep.ExportOptions
With myOption
.DestinationOptions = myDisk
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
objRep.Export()
Process.Start(Filename)
Catch ex As Exception
MsgBox(ex.Message)
End Try

25


×