Những Khái Niệm Cơ Bản Về CSDL - VOER

Cơ sở dữ liệu là gì ?

Sử dụng cửa sổ xem dữ liệu

Tạo trình thiết kế môi trường dữ liệu

Sử dụng các điều khiển dữ liệu để tạo giao diện người sử dụng

Cơ sở dữ liệu là phần cốt lõi của nhiều ứng dụng phần mềm kinh doanh. Cơ sở dữ liệu rất phổ biến trong thế giới kinh doanh vì chúng cho phép truy cập tập trung đến các thông tin theo một các nhất quán, hiệu quả và tương đối dễ dàng cho việc phát triển và bảo trì. Chương này tìm hiểu về các khái niệm cơ bản để thiết lập và bảo trì một cơ sở dữ liệu cho một doanh nghiệp, bao gồm cơ sở dữ liệu là gì, tại sao cơ sở dữ liệu hữu dụng và dùng cơ sở dữ liệu như thế nào để tạo ra các giải pháp cho doanh nghiệp.

Nếu bạn đã từng dùng Visual Basic và từng lập trình với cơ sở dữ liệu. Bạn sẽ thấy chương trình này khá cơ bản, tuy nhiên nó sẽ giúp bạn có được một nền tảng tổt của một hệ quản trị cơ sở dữ liệu nói chung.

Mặc dù các khái niệm cơ sở dữ liệu gần như tương tự giữa các hệ quản trị cơ sở dữ liệu, các nhà cung cập các hệ quản trị cơ sở dữ liệu thường có các tên gọi khác nhau cho các sản phẩm riêng của họ. Ví dụ, nhiều nhà lập trình Client / Server đề cập đến truy cấn chứa trong cơ sở dữ liệu như là View; trong khi các nhà lập trình Access và Visual Basic lại gọi truy vấn là QueryDef. Cả hai khái niệm này đều là như nhau.

Nếu bạn đã từng dùng phiên bản cũ của VB - nhất là Visual Basic 3, ta cần biết một vài điểm mới trong lập trình cơ sở dữ liệu. Visual Basic chứa phiên bản mới nhất của Bộ máy cơ sở dữ liệu Jet ( Visual Basic chia sẻ với Microsoft Access ). Phiên bản này của Jet đưa ra các bổ sung cho bộ máy cơ sở dữ liệu sẽ được trình bày trong chương này. Ngoài ra, việc bổ sung ADO(Đối tượng dữ liệu ActiveX –ActiveX Data Object ), cũng như các công cụ liên quan trong môi trường phát triền, thể hiện những thay đổi cho các nhà lập trình Visual Basic. Nếu đã quen với phát triển dữ liệu 32 bit trong Visual Basic, Bạn có thể nhảy thẳng đến chương “Đối tượng dữ liệu ActiveX – ADO”.

Cơ sở dữ liệu là gì?

Cơ sở dữ liệu là một kho chứa thông tin. Có nhiều loại cơ sở dữ liệu, nhưng ta chỉ đề cập đến cơ sở dữ liệu quan hệ, là kiểu cơ sở dữ liệu phổ biến nhất hiện nay.

Một cơ sở dữ liệu quan hệ:

Chứa dữ liệu trong các bảng, được cấu tạo bởi các dòng còn gọi là các mẩu tin, và cột gọi là các trường.

Cho phép lấy về ( hay truy vấn ) các tập hợp dữ liệu con từ các bảng

Cho phép liên kết các bảng với nhau cho mục đích truy cập các mẩu tin liên quan với nhau chứa trong các bảng khác nhau.

Bộ máy (Engine) cơ sở dữ liệu là gì?

Chức năng cơ bản của một cơ sở dữ liệu được cung cấp bởi một bộ máy cơ sở dữ liệu, là hệ thống chương trình quản lý cách thức chứa và trả về dữ liệu.

Bộ máy cơ sở dữ liệu trình bày trong tài liệu này là Microsoft Jet, Jet không phải là một thương phẩm, thay vào đó, nó là một hệ thống con được nhiều ứng dụng của

Microsoft sử dụng. Microsoft lần đầu tiên đưa bộ máy này vào sử dụng với Visual Basic 3.0 và Access 1. Sau nhiều lần nâng cấp, phiên bản Jet dùng với quyển sách này là Jet 3.51, đi kèm với Visual Basic và Access.

Chú ý : Ngoài Jet, còn nhiều bộ máy cơ sở dữ liệu khác, như vì Visual Basic hỗ trợ Jet một các nội tại nên quyển sách này ưu tiên nói về Jet. Hơn nữa Jet còn hỗ trợ các bộ máy cơ sở dữ liệu khác. Trong chương “Làm quen với SQL Server “ giới thiệu một bộ máy hoàn toàn khác SQL Server 6.5

Bản và trường

Các cơ sở dữ liệu được cấu tạo từ các bảng dùng thể hiện các phân nhóm dữ liệu.

Ví dụ, nếu ta tạo một cơ sở dữ liệu để quản lý tài khoản trong công việc kinh doanh ta phải tạo một bảng cho khách hàng, một bảng cho Hoá đơn và một bảng cho nhân viên. Bảng có cấu trúc định nghĩa sẵn và chứa dữ liệu phù hợp với cấu trúc này.

Bảng: Chứa các mẩu tin là các mẩu riêng rẽ bên trong phân nhóm dữ liệu.

Mẩu tin: Chứa các môi trường. Mỗi trưởng thể hiện một bộ phận dữ liệu trong một mẩu tin. Ví dụ như mỗi mẩu tin thể hiện một mục trong danh bạ địa chỉ chứa trong trường Tên và họ, địa chỉ, thành phố, tiểu bang, mã ZIP và số điện thoại.

Ta có thể dùng chương trình Visual Basic để tham chiếu và thao tác với cơ sở dữ liệu, bảng, mẩu tin và trường.

Thiết kế cơ sở dữ liệu

Để tạo một cơ sở dữ liệu, trước hết ta phải xác định thông tin gì cần theo dõi. Sau đó, ta thiết kế cơ sở dữ liệu, tạo bảng chứa các trường định nghĩa kiểu dữ liệu sẽ có. Sau khi tạo ra cấu trúc cơ sở dữ liệu, tạo bảng chứa các trường định nghĩa kiểu dữ liệu sẽ có. Sau khi tạo ra cấu trúc cơ sở dữ liệu, cơ sở dữ liệu có thể chứa dữ liệu dưới dạng mẩu tin. Ta không thể đưa dữ liệu vào mà không có bảng hay định nghĩa trường vì dữ liệu sẽ không có chỗ để chứa.Do đó, thiết kế cơ sở dữ liệu cực kỳ quan trọng, nhất là rất khó thay đổi thiết kế một khi ta đã tạo xong nó.

Ví dụ ta tạo một bảng sau :

Bảng khách hàng Bảng tblRegion
tblCustomer TblRegion
ID State
FirstName RegionName
LastName
Company
Address
City
State
Zip
Phone
Fax
Email

Có quan hệ giữa 2 bảng thông qua trường State (Trạng thái ). Đây là mối quan hệ một - nhiều, đối với một mẩu tin trong tblRegion, có thể không có, hoặc có nhiều mẩu tin tương ứng trong bảng tblCustomer.

Cụm từ “tbl” thể hiện tên bảng, tên trường hiển thị đầy đủ, không chứa khoảng trắng hay những ký tự đặc biệt khác như dấu gạch dưới.

Bảng hoá đơn :

TblOrder
ID
CustomerID
OrderDate
ItemID
Amount

Recordset là gì ?

Một khi ta có khả năng tạo bảng, ta cần phải biết cách thao tác chúng.

Thao tác trên các bảng liên quan đến việc nhập và lấy về dữ liệu từ các bảng khác cũng như việc kiểm tra và sửa đổi cấu trúc bảng. Để thao tác với cấu trúc bảng, ta dùng các câu lệnh đinh nghĩa dữ liệu hoặc một đối tượng TableDef(được giới thiệu trong chương “ Các đối tượng truy cập dữ liệu” ). Để thao tác dữ liệu, trong một bảng, ta dùng Recordset.

Một Recordset là một cấu trúc dữ liệu thể hiện một tập hợp con các mẩu tin lấy về từ cơ sở dữ liệu. Về khái niệm, nó tương tự một bảng, nhưng có thêm một vài thuộc tính riêng biệt quan trọng. Các RecordSet được thể hiện như là các đối tượng, về khái niệm tương tự như là các đối tượng giao diện người sử dụng ( như là các nút lệnh và hộp văn bản ) mà ta đã làm quen với Visual Basic trong các chương trước. Cũng như các kiểu đối tượng khác trong Visual Basic, các đối tượng Recordset có các thuộc tính và phương thức riêng. Lưu ý : Ta có thể lập trình để tạo và sử dụng các recordset theo một trong ba thư viện truy cập dữ liệu – Các đối tượng truy cập dữliệu ( DAO ), các đối tượng truy cập dữ liệu từ xa ( RDO ) và các đối tượng dữ liệu ActiveX ( ADO ).

Các kiểu cơ sở dữ liệu

Cơ sở dữ liệu nội tại của Visual Basic, Jet, cung cấp 21 kiểu dữ liệu khác nhau.

Kiểu dữ liệu Mô ta
Binary Dùng để chứa các khối dữ liệu lớn như là đồ hoạ và các tập tinâm thanh số hoá.
Boolean Giá trị logic đúng hoặc sai
Byte Giá trị số nguyên một byte từ 0 đến 255
Currency Trường số có thuộc tính đặc biệt để chứa các trí trị tiền tệ
Date/Time Giá trị 8 byte thể hiện ngày hoặc giờ từ ngày 1/1/100 đến ngày31/12/9999
Double Kiể dữ liệu số 8 byte dấu phẩy động
GUID Là một số 128 bye, cũng được gọi là định danh toàn thể duynhất. Ta dùng số này để nhận dạng duy nhất các mẩu tin. Số này được dùng trong các bản sao
Integer Số 2 byte đầu đủ từ -32768 đến 32767
Long Số 4 byte đầy đủ từ -2,147,483,648 đến 2,147,483,647
Long binary Trường giá trị lớn nhất có thể chứa các giá trị thập phân như là hình ảnh hay tập tin
( OLE Object ) Kiểu OLE Object nhúng trong cơ sở dữ liệu có thể lên tới 1gigabyte.
Meno Trường gí trị lớn có thể chứa đến 65,535 ký tự. Ta không cầnthiết phải khai báo trước chiều dài của trường này.
Single type Dữ liệu số 4 byte, dấu phẩy đơn
Text Kiểu dữ liệu cáo chiều dài cố định, đòi hởi ta phải khai báo chiềudài của trường khi ta khai báo kiểu dữ liệu. Trường văn bản có thể dài từ 1 đến 255 ký tự.
VarBinary Mẫu dữ liệu nhị phân biến đổi ( dùng với ODBCDirect )

Không có sự tương đương một-một giữa kiểu dữ liệu Visual Basic và kiểu dữ liệu trường cơ sở dữ liệu. Ví dụ, ta không thể quy định một trường cơ sở dữ liệu là kiểu định nghĩa bởi người dùng hay biến Object của Visual Basic. Hơn nữa nếu ta dùng Microsoft Access để tạo cơ sở dữ liệu sử dụng trong các ứng dụng Visual Basic, lưu ý rằng một số kiểu dữ liệu hữu dụng trong ứng dụng Visual Basic không xuất hiện trong thiết kê bảng của Microsoft Access. Bởi vì Visual Basic hỗ trợ lập trình cơ sở dữ liệu khác với những gì tạo bằng Microsoft Access.

Tạo lược đồ cơ sở dữ liệu

Mặc dù việc tạo danh sách các bảng và trương là cách tốt nhất để xác định cấu trúc cơ sở dữ liệu, ta còn có một cách để xem các bảng và tường dưới dạng đồ hoạ.

Sau đó, không chỉ xem được các bảng và trường hiện có mà còn thấy được mối quan hệ giữa chúng. Để làm được điều này, ta tạo lược đồ.

Lược đồ là sơ đồ các con đường trong cơ sở dữ liệu. Lược đồ thể hiện các bảng, trường và mối quan hệ trong cơ sở dữ liệu. Có lược đồ cơ sở dữ liệu là phần quan trọng trong thết kế phần mềm bởi vì nó cho ta một cách nhìn nhanh về những gì trong cơ sở dữ liệu.

Các lược đồ vẫn có vị trí quan trọng lâu dài sau khi quá trình thiết kế cơ sở dữ liệu hoàn tất. Ta sẽ cần đến lược đồ để thi hành các câu truy vấn trên nhiều bảng. Một lược đồ tốt sẽ trả lời được các câu hỏi như là, “ Những bảng nào cần nối với nhau để đưa ra danh sách các hoá đơn trên $50.00 từ các khách hàng ở Minnesota trong 24 giờ qua ?” Không có phương pháp chính thức để tạo lược đồ, mặc dù cũng có nhiều công cụ để thực hiện. Công cụ vẽ Visio rất uyển chuyển, nhanh và dễ dùng. Hơn nữa nó tích hợp với các ứng dụng Windows khác, nhất là Microsoft Office.

Phần này xem visio như một công cụ vẽ để ghi chếp về cơ sở dữ liệu. Nhung ta còn có thể dùng Visio như một công cụ phát triển. Với Visio Professional, ta có thể thiết kế cơ sở dữ liệu bằng đồ hoạ. Sản phẩm có khả năng lấy thiết kế đồ hoạ và tạo ra cơ sở dữ liệu thực sự. Tham khảo thông tin về Visio tại địa chỉ http://WWW.Visio.Com

Dùng Visual Basic để tạo một cơ sở dữ liệu

Sau khi tạo xong lược đồ và chỉnh sửa thiết kế, đã đến lúc ta phải tạo cơ sở dữ liệu thực sự. Đạo cơ Basic, ta có thể dùng tiện ích gọi là Visual Data Manager. Tiện ích này trong ấn sở dữ liệu Jet dùng Visual bản Visual Basic Professional và Enterprise cho phép ta tạo các cơ sở dữ liệu tương thích với MicrosoftAccess.

Do Visual Basic và Access 97 chia sẻ cùng bộ máy cơ sở dữ liệu ta có thể hoặc là dùng Visual Basic hoặc là dùng Access để tạo một cơ sở dữ liệu. Cơ sở dữ liệu cuối cùng đều như nhau.

Để chạy Visual Data Manager, ta theo các bước sau :

  1. Từ menu của Visual Basic chọn mục Add-ins, VisualDataManager, cửa sổ VisualData Managersẽ xuất hiện.
  2. Từ menu của Visual Data Manager, chọn File, New. Từ menu con, chọn Microsoft Access, Version 7.0 MDB. Một hộp thoại tập tin xuất hiện :
“ Version 2.0 MDB “ là phiên bản của Jet tương thích với phiên bản 16 –bit của Access và Visual Basic
  1. Chọn thư mục ta muốn lưu cơ sở dữ liệu cơ sở dữ liệu mới rồi gõ tên. ( Vì mục đích minh hoạ cho cuốn sách này, bạn có thể chọn tên cơ sở dữ liệu là novelty.mdb)
  2. Nhấn chuột vào nút Save. Cơ sở dữ liệu mới được tạo và Visual Data Manager sẽ hiển thị một vài cửa sổ cho phép ta làm việc với cơ sở dữ liệu được hiển thị như hình dưới đây.

Cửa sổ Visual Data Manager

Sử dụng cửa sổ cơ sở dữ liệu

Cửa sổ DataBase của Visual Data Manager chứa tất cả các thành phần của cơ sở dữ liệu. Trong cửa sổ này ta có thể xem các thuộc tính, kiểm tra các bảng và các phần tử khác và thêm các thành phần mới vào cơ sở dữ liệu.

Để xem các thuộc tính ta vừa tạo, nhấn chuột vào dấu cộng ở bên trái của mục Properties. Mục này sẽ mở ra như hình dưới đây.

Xem các thuộc tính của cơ sở dữ liệu mới.

Tạo bảng

Một đặc tính của Visual Data Manager là nó không thể cho ta cách rõ ràng để tạo bảng mới trong cơ sở dữ liệu mà ta vừa tạo. Bởi vì các phần từ xuất hiện trong cửa sổ Database của Visual Data Manager rất nhạy với việc nhấn chuột phải. Nhưng một khi ta dùng nút chuột phải việc tạo một bảng mới thật là đơn giản. Ví dụ : Để tạo một bảng mới ta theo các bước sau:

1. Trong cửa sổ Database của Visual Data Manager, nhấn chuột phải vào Properties. Menu ngữ cảnh của cửa sổ sẽ xuất hiện.

2. Chọn New Table. Hộp thoại Table Structure sẽ xuất hiện như hình dưới đây.

Hộp thoại Table Structure.

Trong hộp thoại Table Structure, ta có thể tạo cấu trúc bảng, chỉ định các trường, kiểu dữ liệu và chỉ mục. Ví dụ, ta sẽ tạo cấu trúc bảng để chứa khách hàng.

Để làm được điều này, theo các bước sau:

1. Gõ tblCustomer trong ô Table Name.

2. Nhấn chuột vào nút Add Field. Hộp thoại Add Field sẽ xuất hiện, được hiển thị như hình dưới đây.

Hộp thoại Add Field.

Hộp thoại Add field cho phép ta thêm một trường vào một bảng tạo bởi hộp thoại Table structure của Visual Data Manager.

3. Trong ô Name gõ First Name. Đây sẽ là tên của trường mà ta tạo trong bảng khách hàng.

4. Trong ô size gõ 25. Điều này chỉ ra rằng tên có thể lên đến 25 ký tự, nhưng không thể dài hơn. Điều này có nghĩa là cơ sở dữ liệu sẽ chứa các tên hiệu quả hơn.

5. Chọn Fixed Field để chỉ ra rằng đâu không phải là trường có chiều dài biến đổi, rổi nhấn nút OK. ( Lưu ý rằng rất khó sửa đổi một trường một khi ta đã tạo xong nó.Vì vậy, phải chắc chắn rằng mọi thứ ta quy định là chính xác.) Trường được thêm vào cấu trúc cơ sở dữ liệu. Các hộp văn bản trong hộp thoại Add Field sẽ được xoá. Cho phép ta thêm vào một trường khác ngay lập tức.

6. Bây giờ ta có thể thêm các trường khác vào cấu trúc bảng. Sử dụng Add Field, thêm các trường vào tblCustomer các trường sau đây :

Tên trường Kiểu dữ liệu Kích cỡ dữ liệu Fixed
First Name Text 25 Yes
ID Long, AutoInerField=true N/A N/A
LastName Text 45 Yes
Company Text 100 Yes
Address Text 100 Yes
City Text 100 Yes
State Text 2 Yes
Zip Text 9 Yes
Phone Text 25 Yes
Fax Text 25 Yes
Email Text 255 Yes

7. Cần kiểm tra hộp AutoInerField khi tạo trường ID để đảm bảo rằng mọi khách

hàng ta tạo đều có số hiệu duy nhất. Bởi vì bộ máy cơ sở dữ liệu tăng số trong trường một cách tự động, ứng dụng cơ sở dữ liệu sẽ không phải tự sinh ra số hiệu duy nhất.

8. Khi ta hoàn tất việc nhập trường, nhấn nút bấm Close.

Chỉ định chỉ mục và khoá chính

Đến đây ta vừa tạo xong một bảng cơ bản, phần còn lại là ta cần chỉ ra các chỉ mục. Một chỉ mục là một thuộc tính ta có thể gán cho một trường để tạo sự dễ dàng cho bộ máy cơ sở dữ liệu khi lấy về thông tin chứa trong trường đó. Ví dụ, trong cơ sở dữ liệu theo dõi khách hàng, ứng dụng có thể tìm kiếm các khách hàng theo họ, mã Zip và các số hiệu ID cá nhân. Do đó, cần thiết phải tạo các chỉ mục trên những trường này để giúp cho quy trình lấy mẩu tin dựa trên các trường này nhanh hơn.

Một khi ta đã nhận ra lợi ích của các chỉ mục trong việc thiết kế cơ sở dữ liệu, ta có thể tự đặt ra các câu hỏi như : Nếu các chỉ mục giúp việc tìm kiếm nhanh hơn, tại sao ta không đặt một chỉ mục trong tất cả các trường của mọi bảng ? Câu trả lời là các chỉ mục làm cho cơ sở dữ liệu của ta phình to hơn về mặt vật lý, vì vậy, nếu ta có quá nhiều chỉ mục, sẽ lãng phí bộ nhớ và làm cho máy tính của ta chạy chậm hơn. Điều này hiển nhiên làm mất đi các lợi thế ban đầu. Không có quy định về việc nên tạo bao nhiêu chỉ mục cho mỗi bảng, nhưng nói chung, ta nên tạo một chỉ mục dựa trên các trường mà ta nghĩ là dùng thường xuyên trong các câu truy vấn.

Mỗi bảng mà ta thiết kế phải có ít nhất một khoá chính, và nó phải được đánh số chỉ mục trên những trường mà ta mong đợi sẽ được truy vấn nhiều nhất. Trong trường hợp của bảng tblCustomer, cũng như với nhiều bảng cơ sở dữ liệu, khoá chính sẽ là trường ID. Các chỉ mục phụ là trường LastName và FirstName

Để tạo các chỉ mục và các khoá chính, theo các bước sau :

1. Trong hộp thoại Table Structure, nhấn chuột vào nut Add Index. Hộp thoại

Add Index xuất hiện

Hộp thoại Add Index.
Trước hết ta sẽ tạo khoá chính cho bảng.

2. Gõ Primary Key trong hộp văn bản Name

3. Nhấn đúp chuột vào trường ID trong danh sách các trường có sẵn. ID được thêm vào danh sách các trường có chỉ mục. Hộp đánh dấu Primary và Unique phải được chọn theo mặc định.

4. Nhấn OK, Hộp văn bản bị xoá và khoá chính được thêm vào thiết kế bảng.

Lưu ý rằng chỉ mục có tên như tên trường ( mặc dù đã quen với Microsoft Access m ta có thể không biết điều này, bởi vì Access che tên chỉ mục trên giao diện người sử dụng ). Truy cập đến tên của một trường chỉ mục thì thật thuận tiện cho một mục đính nào đó.

Giờ đây ta có thể tạo thêm hai chỉ mục cho các trường FirstName và LastName. Để làm được điều này ta làm theo các bước sau :

1. Gõ tên chỉ mục FirstNameIndex trong hộp văn bản Name

2. Nhấn đúp chuột trên trường FirstName trong danh sách các trường hiện có, FirstName được thêm vào trong danh sách các trường có chỉ mục.

3. Bỏ chọn các hộp đánh dấu Primary và Unique, sau đó nhấn nut OK.

Nếu ta để hộp đánh dấu Unique được chọn, ta sẽ không thể thêm hai người có cùng tên vào cơ sở dữ liệu.

4. Lặp lại quy trình này với truờng LastName, tạo một chỉ mục là LastIndex.

5. Nhấn nút chuột Close. Ta sẽ gặp lại hộp hội thoại Table Structure.

6. Để tạo bảng, nhấn nút Build the Table. Bảng sẽ được tạo và thêm vào cửa sổ

Database của Visual Data Manager

Tạo bảng cho cơ sở dữ liệu.

Thay đổi thuộc tính của các trương có sẵn

Visual Data manager có vẻ hơi khó để sửa đổi phần lới các thuộc tính quan trọng của một bảng ( không giống như Microsoft Access cho phép ta thay hầu hết cấu trúc bảng mọi lúc ). Nói chung, khi ta muốn sửa đổi thuộc tính của trường bằng cách sử dụng Visual Data Manager ta phải xoá trường để tạo lại.

Sửa đổi chiều dài của trường LastName

Giả định rằng ta muốn sửa đổi chiều dài của trường LastName. Để làm được điều này, theo các bước sau :

1. Trong các cửa sổ Database của Visual Data Manager, nhấn chuột phải lên tblCustomer.

2. Từ menu ngữ cảnh, chọn Design. Hộp thoại Table Structure xuất hiện.

Xoá chỉ mục

Để xoá trường LastName, ta phải xoá chỉ mục của nó trước. Để làm được điều này, theo các bước sau :

1. Chọn LastNameIndex trong danh sách các chỉ mục

2. Nhấn nút RemoveIndex

3. Khi một thông điệp hỏi ta muốn xoá chỉ mục này không, nhấn Yes. Chỉ mục được xoá

Xoá trường LastName

Bây giờ ta có thể xoá trường này. Để làm được điều này, theo các bước sau:

1. Chọn trường LastName trong danh sách các trường.

2. Nhấn nút Remove Field. Khi xuất hiện thông điệp hỏi ta muốn xoá trường này hay không, nhấn Yes. Trường này sẽ bị xoá khỏi bảng.

Bây giờ thì ta có thể sửa đổi trường bằng cách thêm nó trở lại bảng, lần này với chiều dài 50. Đừng quên thêm chỉ mục cho trường này sau khi thêm nó trở lại bảng.

Tiến trình sửa một trường có sẵn trong Visual Data Manager có vẻ khá phức tạp. Trong Microsoft Access, việc sửa đổi trên những trường cõ sẵn thật dễ dàng, vì lý do đó, các nhà lập trình cơ sở dữ liệu khéo léo trong Visual Basic sẽ giữ một bản sao của Access ở đâu đó để phòng hờ.

Dùng Visual Data Manager để tạo giao diện

Một ưu điểm của Visual Data Manager so với Microsoft Access là khả năng tạo các biểu mẫu Visual Basic dựa trên cấu trúc dữ liệu được tạo.

Giả định rằng ta đã hoàn tất khâu thiết kế tblCustomer và muốn thêm một biểu mẫu Visual Basic vào đề án dựa trên thiết kế bảng . Để làm được điều này, theo các bước sau :

1. Từ menu Visual Data Manager chọn Utility, Data Form Design. Hộp thoại

Data Form Design xuất hiện.

2. Trong hộp thoại văn bản Form name, gõ Customer

3. Trong hộp kết hợp RecordSource, chọn tblCustomer, DataFormDesignđiền danh sách các trường tìm thấy trong tblCustomer vào Available Fields

Hộp thoại Data Form Design

4. Nhấn nút mũi tên phải cho tất cả các trường hiện có trừ ID để thêm chúng vào biểu mẫu. ( Không được thêm trường ID vào biểu mẫu vì người sử dụng không thể sử trường ID ).

5. Chọn trường và nhấn mũi tên lên, xuống để sắp xếp các trường.

Sắp xếp các trường

6. Nhấn nút Build the Form. Biểu mẫu được tạo trong Visual Basic.

7. Nhấn Close.

Kế tiếp ta muốn thoát khỏi Visual Data Manager để xem biểu mẫu của ta như thế nào. Nhưng ta muốn quay trở lại để thêm các phần tử mới vào cơ sở dữ liệu hoặc muốn sử đổi những cái ta vừa làm. Để thông báo cho Visual Data Manager la ta muốn mở cơ sở dữ liệu lại trong lần kế tiếp, theo các nước sau :

1. Chọn Utility, Preferences. Từ Menu con, chọn Open Last Database từ Startup.

2. Thoát Visual Data Manager bằng cách chọn File, Exit, Khi ta trở về Visual

Basic m ta sẽ thấy biểu mẫu mới gọi là frmCustomer

Thiết kế biểu mẫu theo thiết kế bảng.

Để làm việc với biểu mẫu mới được tạo, ta sẽ phải đặt nó làm biểu mẫu khởi động của đề án. Để làm được điều này, theo các bước sau:

1. Từ menu Project của Visual Basic, chọn Project1 Properties. Hộp thoại Project

Properties xuất hiện.

Hộp thoại Project Properties.

2. Trong hộp kết hợp StartUp Object, chọn frmCustomer và nhấn nút OK.

3. Từ menu Run của Visual Basic, chọn Start. Ứng dụng thi hành, nó sẽ hiển thị giao diện nhập liệu trong frmCustomer.

Bây giờ ta có thể nhập liệu vào giao diện mà Visual Basic cung cấp cho ta. Để làm được điều này, theo các bước sau :

1. Nhấn nút Add. Ta sẽ thấy rằng ứng dụng không có phản hồi một cách trực quan để cho thấy rằng một điều gì đó đã thay đổi . Tuy nhiên, phải tin rằng bạn đang sửa đổi một mẩu tin mới.

2. Nhập dữ liệu vào mỗi hộp văn bản trong biểu mẫu.

3. Khi ta làm xong, nhấn nút Update. Mẩu tin sẽ được lưu trữ. Chỉ có một thông tin phản hồi ta thấy là điều khiển dữ liệu hiển thị “Record 1 “

Chương trình lúc thi hành.

Giao diện nhập liệu cơ bản được tạo bởi Data Form Designer cho ta ý nghĩa của chương trình mà ta phải viết để có một ứng dụng mạnh mẽ bằng chách sử dụng điều khiển Data.Mặc dù điều khiển data được coi là một giải pháp “ Không cần lập trình “, nếu ta cần mởi rộng tính năng của nó ( như thi hành các hành động tìm kiếm, xoá các mẩu tin ) chương trình có thể không trực quan đối với những người mới học. Chúng ta sẽ tìm hiểu thêm thông tin về chương trình này, cách hoạt động và chỉnh sửa nó như thế nào để tạo ra một ứng dụng với đầy đủ tính năng hơn sau này.

Các mối quan hệ

Mối quan hệ là một cách đinh nghĩa chính thức hai bảng liên hệ với nhau như thế nào . Khi ta định nghiẽa một mối quan hệ, ta đã thông báo với bộ máy cơ sở dữ liệu rằng hai trường trong hai bảng liên quan được nối với nhau.

Hai trường liên quan với nhau trong một mối quan hệ là khoá chính đã được giới thiệu ở phần trước và khoá ngoại. Khoá ngoại là khoá trong bảng kiên quan chứa bản sao của khoá chính của bảng chính.

Ví dụ, giả định rằng ra có các bảng cho phòng ban và Nhân viên. Có một mối quan hệ một - nhiều giữa một phòng ban và một nhóm nhân viên. Mỗi phòng ban có một ID riêng, tương tự với nhân viên. Tuy nhiên, để chỉ ra một nhân viên làm việc ở phòng ban nào, ta cần phải tạo một bản sao của ID của phòng ban cho mỗi mẩu tin của nhân viên. Vì vậy, để phân biệt mỗi nhân viên là một thành viên của một phòng ban, bảng Employees phải có một truờng gọi là DepartmentID để chứa ID của phòng ban mà nhân viên đó làm việc. Trường DepartmentID trong bảng Employees được tham chiếu như 1 khoá ngoại của bảng Employees bởi vì nó sẽ chứa bản sao của khoá chính của bảng Departments.

Sau đó mối quan hệ báo cho bộ máy cơ sở dữ liệu hai bảng liên quan với nhau trong mối quan hệ và khoá ngoại nào liên quan với khoá chính nào. Bộ máy Access/Jet không đòi hỏi ta phải khai báo tường minh các mối quan hệ này, nhưng sẽ có lợi hơn nếu làm điều này bởi vì nó làm đơn giản hoá công việc lấy về dữ liệu dựa trên các mẫu tin nối qua hai hay nhiều bảng.

Ngoài việc ghép các mẩu tin liên quan trong các bảng riêng biết, ta còn định nghĩa mối quan hệ để tận dụng thế mạnh của tính toàn vẹn tham chiếu, một thuộc tính của bộ máy cơ sở dữ liệu duy trì các dữ liệu trong một cơ sở dữ liệu nhiều bảng luôn luôn nhất quán. Khi tính toàn vẹn tham chiếu tồn tại trong một cơ sở dữ liệu, bộ máy cơ sở dữ liệu sẽ ngăn cản ta xoá một mẩu tin khi có các mẩu tin khác tham chiếu đến nó trong cơ sở dữ liệu. Sau khi đã định nghĩa một mối quan hệ trong cơ sở dữ liệu, việc định nghĩa mối quan hệ này sẽ được lưu trữ cho đến khi ta xóa nó.

Ta không thể tạo một mối quan hệ cơ sở dữ liệu bằng cách dùng Visual Data Manager tuy nhiên ta có thể tạo một mối quan hệ sử dụng Microsoft Access hay Lập trình.

Sử dụng tính toàn vẹn tham chiếu để duy trì tính nhất quán

Khi các bảng nối kết với nhau thông qua mối quan hệ, dữ liệu trong mỗi bảng phải duy trì sự nhất quán trong các bảng liên kết. Tính toàn vẹn tham chiếu quản lý công việc này bằng cách theo dõi mối liên hệ giữa các bảng và ngăn cấm các kiểu thao tác nào đó trên các mẩu tin.

Ví dụ, giả định rằng ta có một bảng gọi là tblCustomer và một bảng khác là tblOrder. Hai bảng này quan hệ với nhau qua trường chung là ID. Giả thiết ở đây là ta tạo các khách hàng chứa trong tblCustomer rồi tạo các hoá đơn trong tblOrder. Nhưng điều gì sẽ xảy ra nếu ta tiến hành xoá một khách hàng có hoá đơn chưa xử lý chứa trong bàng hoá đơn ? Hoặc là nếu ta tạo một hoá đơn mà không có một CustomerID hợp lệ gắn liền với nó ? Mục hoá đơn không có CustomerID thì không thể gửi đi, bởi vì địa chỉ gửi là một trường của mẩu tin trong tblCustomer. Khi dữ liệu tron các bảng quan hệ gặp phải rắc rối này, ta nói nó ở trọng thái không nhất quán.

Một điểu rất quan trọng là cơ sở dữ liệu không được trở nên không nhất quán, bộ máy cơ sở dữ liệu Jet cung cấp một cách để ta định nghĩa mối quan hệ trong các bảng.

Khi ta định nghĩa một mối quan hệ chính thưc giữa hai bảng bộ máy cơ sở dữ liệu sẽ giám sát mối quan hệ mày và ngăn cấm bất kỳ thao tác nào vi phạm tính toàn vẹn tham chiếu. Hoạt động của cơ chế toàn vẹn tham chiếu là phát sinh ra lỗi mỗi khi ta thi hành một hành động nào đó làm cho dữ liệu rơi vào trạng thái không nhất quán. Ví dụ, trong cơ sở dữ liệu có tính toàn vẹn tham chiếu đang hoạt động, nếu ta cố tạo một hoá đơn chứa một ID của khách hàng đối với một khách hàng không tông tại, ta sẽ nhận một thông báo lỗi và hoá đơn sẽ không thể tạo ra.

Chuẩn hoá

Chuẩn hoá là một khái niệm liên quan đến mối quan hệ. Về cơ bản, nguyên tắc của chuẩn hoá phát biểu rằng các bảng cơ sở dữ liệu sẽ loại trừ tính không nhất quán và giảm thiểu sự kém hiệu quả.

Các cơ sở dữ liệu được mô tả là không nhất quán khi dữ liệu trong một bảng không tương ứng với dữ liệu nhập vào trong bảng khác. Ví dụ, Nếu phân nửa số người nghĩ rằng A ở miền Trung Tây và một nửa nghĩ rằng nó nằm ở phía Nam và nếu cả hai nhóm nhân viên nhập liệu theo ý kiến riêng của họ, khi ấy báo cáo cơ sở dữ liệu trình bày những việc xảy ra ở miền Trung Tây là vô nghĩa.

Một cơ sở dữ liệu kém hiệu quả không cho phép ta trích ra csc dữ liệu chính xác mà ta muốn. Một cơ sở dữ liệu chứa toàn bộ dữ liệu trong một bảng có thể buộc ta phải vất vả duyệt qua một lượng lớn tên các khách hàng, địa chỉ và lịch sử liên hệ chỉ để lấy về 1 số điện thoại của một khách hàng nào đó. Mặt khác, một cơ sở dữ liệu được chuẩn hoá đầy đủ chứa từng mẩu thông tin của cơ sở dữ liệu trong bảng riêng và xa hơn, các định từng mẩu thông tin duy nhất thông qua khoá chính của nó.

Các cơ sở dữ liệu chuẩn hoá cho phép ta tham chiếu đến một mẩu thông tin trong một bảng bất kỳ chỉ bằng khoá chính của thông tin đó.

Ta quyết định cách thức chuẩn hoá của một cơ sở dữ liệu khi ât thết kế và khởi tạo một cơ sở dữ liệu. Thông thường, mọi thứu về ứng dụng cơ sở dữ liệu - từ thiết kế bảng cho đến thiết kế truy vấn, từ giao diện người sử dụng đến cách hoạt động của báo cáo - đều xuất phát từ cách chuẩn hoá cơ sở dữ liệu.

Là một lập trình viên cơ sở dữ liệu, thỉnh thoảng bạn sẽ chợt nảy ra ý nghĩ về cơ sở dữ liệu vẫn chưa được chuẩn hoá vì lý do này hay lý do khác. Sự thiếu chuẩn hoá có thể do chủ ý, hoặc có thể là do kết quả của sự thiếu kinh nghiệm hoặc sự khộng thận trọng trong việc thiết kế cơ sở dữ liệu ban đầu. Dù ở mức độ nào, nếu đã chọn chuẩn hoá một cơ sở dữ liệu đã tồn tại, ta nên thực hiện sớm ( bởi vì mọi thứ khác thực hiện trong cơ sở dữ liệu đều phụ thuộc vào cấu trúc bảng của cơ sở dữ liệu ). Hơn nữa, ta sẽ thấy những câu truy vấn hành động là công cụ rất hữu ích trong việc sắp xếp lại một cơ sở dữ liệu thiết kế thiếu sót. Truy vẫn là hành động cho phép ta đi chuyển các trường từ bảng này sang bảng khác chư là thêm, cập nhậtvà xoá mẩu tin từ các bảng dựa trên các tiêu chỉ nêu ra.

Quan hệ Một - Một

Là loại quan hệ dễ hiểu và dễ thực hiện nhất, bởi vì trong những mối quan hệ như vậy, một bảng sẽ lấy vị trí của một trường trong một bảng khác, trường liên quan cũng dễ nhận dạng. Tuy nhiên, quan hệ một - một không phải là mối quan hệ thông dụng nhất trong ứng dụng cơ sở dữ liệu. Do 2 nguyên nhân:

1. Hầu như ta không cần biểu diễn mối quan hệ một một với hai bảng. Ta có thể dùng nó để cải tiến khả năng hoạt động, ví dụ ta mất tính linh hoạt khi chứa các dữ liệu liên hệ trong một bảng tách biệt. Trong ví dụ trước, thay vì có các bảng nhân viên và công việc chứa trong bảng nhân viên.

2. Thể hiện quan hệ một - nhiều thì cũng khá dễ ( nhưng linh hoạt hơn nhiều ) quan hệ một một.

Quan hệ một - nhiều

Phổ biến hơn quan hệ một - một, trong đó, mối mẩu tin trong một bàng này không có, hoặc có một, hoặc nhiều mẩu tin trong một bảng liên hệ.

Ví dụ, ta gán từng khách hàng cho một người bán hàng. Để thực hiện điều này, ta cần một bảng cho người bán hàng :

Bởi vì một người bán hàng có trách nhiệm với nhiều khách hàng, ta có thể nói đã có mối quan hệ một - nhiều giữa người bán hàng và khách hàng.

Để thực hiện mối quan hệ này trong thiết kế cơ sở dữ liệu, ta phải copy khoá chính của phía một đến bảng chứa phía nhiều trong quan hệ.

Trong một thiết kế giao diện người sử dụng, ta thực hiện quá trình copy khoá chính của một bảng đến khoá ngoại của một bảng liên hệ nhờ một điều khiển hộp danh sách hay hộp kết hợp. Để tìm hiểu thêm thông tin về tổ chức giao diện.

Quan hệ nhiều nhiều

Quan hệ nhiều - nhiều là bước phát triển của quan hệ một - nhiều ví dụ cổ điển của quan hệ nhiều nhiều là học sinh và lớp. Mỗi học sinh có nhiều lới, mỗi lớp có nhiều học sinh ( Tuy nhiên,có lớp không có hoặc chỉ có một học sinh, và có thể học sinh chỉ có một hoặc không có lớp ).

Để thiết lập quan hệ nhiều nhiều, ta có thể sửa lại ví dụ trước sao cho cơ sở dữ liệu có thể chứa nhiều người bán cho một người mua. Mỗi người bán có nhiều khách hàng, và mỗi khách hàng có nhiều người bán.

Giao diện người sử dụng phát triển trong Microsoft Access chủ yếu thực hiện quan hệ một - nhiều và quan hệ nhiều - nhiều bằng cách dùng biểu mẫu con. Đối với một nhà lập trình VB, một biểu mẫu con Access tương tự một biểu mẫu trong biểu mẫu : Biểu mẫu chính hiển thị phía một trong quan hệ một nhiều, trong khi biểu mẫu con hiển thị các mẩu tin ở phía nhiều . Thuận tiện của biểu mẫu con là nó không đòi hỏi phải dữ quan hệ giữa 2 bảng được nhất quán ; ta chỉ quy định thuộc tính để trình bày khoá chính và khoá ngoại.

Khác với MicrosoftAccess, VB không hỗ trợ biểu mẫu con để tự động hiển thị tất cả các mẩu tin liên quan với một mẩu tin nhất định . Thay vào đó, ứng dụng Visual Basic chủ yếu yêu cầu ta lập trình để thực hiện một giao diện người sử dụng dựa trên quan hệ nhiều nhiều.

Sử dụng cửa sổ xem dữ liệu

Điểm mới trong Visual Basic 6.0 là cửa sổ Data View, cho phép ta làm việc với một cơ sở dữ liệu không cần phải sử dụng công cụ bên ngoài hay công cụ bổ xung Add-in.

1. Để dùng cửa sổ DataView, hay nhấn nút DataView trên thanh công cụ chuẩn của VB.

2. Cửa sổ DataView xuất hiện, Cửa sổ cho ta hai thư mục, DataLinksData

Environment Connections.

Để kiểm tra mối quan hệ hoạt động như thế nào, ta theo các bước sau:

1. Đóng và lưu cửa sổ Relationship.

2. Mở bảng tblOrder và nhập và một mẩu tin cho một khách hàng không tồn tại trong bảng tblCustomer.

Bộ máy cơ sở dữ liệu sẽ sinh ra lỗi. Bởi vì lỗi này được sinh ra ở mức bộ máy cơ sở dữ liệu, giống như loại lỗi sinh ra khi có vấn đề về tính toàn vẹn tham chiếu trong Access hoặc trong một ứng dụng Visula Basic sử dụng cơ sở dữ liệu này.

Liên kết dữ liệu ( data link ) là một cách kết nối môi trường phát triển của Visual Basic với một cơ sở dữ liệu nào đó. Một kết nối dữ liệu ( Data Environment connection) là một cách sử dụng cơ sở dữ liệu trong một đề án VB. Điểm khác biệt giữa hai thành phần này là khi tạo một liên kết dữ liệu,nó xuất hiện trong cửa sổ data view mỗi khi cửa sổ hiển thị trong Visual Basic, ngay cả khi ta đóng đề án hiện hành và mở một đề án mới. Trái lại, trình thiết kế nối kết môi trường dữ liệu gắn liền với đề án ta đang làm việc. Nó trở thành một sản phẩm nhị phân tạo ra khi biên dịch và có thể được chia sẻ giữa nhiều đề án.

Muốn dùng một liên kết dữ liệu để duyệt dữ liệu, theo các bước sau:

1. Trong cửa sổ Data View, nhấn nút phải chuột lên thư mục Data Links. Từ menu bật ra, chọn Add a Data Link.

2. Cửa sổ Data Link Properties xuất hiện.

3. Chọn trình cung cấp Microsoft Jet, rồi nhấn Next.

4. Tab Connection xuất hiện. Nhập đường dẫn và tên tập tin cơ sở dữ liệu ta muốn dùng.

5. Nhấn nút Test Connection tạo phần dưới của cửa sổ . Ta sẽ có một thông điệp thông báo kết nối đến cơ sở dữ liệu thành công .

6. Nhấn OK, liên kết dữ liệu được thiết lập, và cửa sổ Data View nhắc ta nhập vào tên của liên kết. Gõ vào Novelty, rồi nhấn Enter.

Liên kết dữ liệu cung cấp một cách nhìn tóm lược về nguồn dữ liệu. Mỗi lần ta tạo một liên kết dữ liệu, ta có thể duyệt bằng cách sử dụng phần tử trong danh sách tóm lược. Thực hiện điều này bằng cách nhấn vào dấu cộng bên trái mỗi phần tử. Cơ sở dữ liệu mở rộng đầy đủ trong cửa sổ xem dữ liệu. ( Tuỳ theo công cụ ta dùng để tạo cơ sở dữ liệu, ta có thể thấy thêm một số bảng trong danh sách. Giờ đây, ta có thể xem các dữ liệu sống động. Thực hiện điều này bằng cách nhấn đúp chuột lên bảng tblCustomer trong cửa sổ Data view. Cách thể hiện khởi đầu của dữ liệu thì không đặc sắc lắm, vì ta chưa nhập mẩu tin nào cả. Tuy nhiên, ta có thể nhập mẩu tin bằng cách gõ vào ô trên lưới.

Tạo trình thiết kế môi trường dữ liệu

Ta có thể tạo một thiết kế DataEnvironment để quản lý một cách trực quan kết nối với một cơ sở dữ liệu. Khi ta có một thiết kế DataEnvironment được chứa trong tập tin nhị phân của ứng dụng lúc biên dịch, vì vậy không cần lo ngại về những phụ thuộc bên ngoài.

Là điểm mới trong VB6, thiết kế DataEnvironment vờ một quan niệm tương tự như thiết kế UserConnection của RDO (Đối tượng dữ liệu từ xa – Remove Data Object ) ta từng dùng trong VB5. Tuy nhiên, thiết kế DataEnvironment dựa trên ADO và cung cấp nhiều chức năng hơn. Nếu ta cso một ứng dụng hiện hành dùng RDO, ta có thể tiếp tục dùng thiết kế UserConnection.

Chương này trình bày cách dùng thiết kế DataEnvironment để tạo một giao diện người sử dụng được điều khiển với cơ sở dữ liệu. Tuy nhiên, có nhiều cách thực hiện. Để thêm một thiết kế DataEnvironment vào ứng dụng dùng cửa sổ Data View, theo các bước sau :

1. Trong của sổ Data View, nhấn nút Add Data Environment.

2. Thiết kế DataEnvironment mới sẽ xuất hiện trong đề án. Một kết nối mặc định, gọi là Connection1 xuất hiện trong thiết kế

Thiết kế DataEnvironment.

Có thể điều chỉnh một cách thủ công kết nối mặc định trong một thiết kế dataenvironment để nó trỏ đến cơ sở dữ liệu. Nhung nếu có sở dữ liệu đã có sẵn trong cửa sổ Data View, ta chỉ cần kéo và thả bảng vào thiết kế . Để thực hiện điều này, ta làm như sau:

1. Khởi động cửa sổ Data view, chọn một bảng trong thư mục Tables ( như là tblCustomer )

2. Kéo bảng lên trên thiết kế DataEnvironment.

3. Một kết nối mới gọi là Connection2 xuất hiện trong thiết kế, với bảng xuất hiện dưới đây.

Đến đây, ta có thể kéo các bảng khác vào thiết kế nếu thích. Khi hoàn tất, ta có :

Kéo bảng vào cửa sổ thiết kế.

Tạo một giao diện người sử dụng vớithiếtkế dataenvironment

Ta có thể tạo một giao diện người sử dụng nhanh chóng bằng cách dùng thiết kế DataEnvironment. Thiết kế kết hợp với cơ chế biểu mẫu của VB, cho phép ta dùng kỹ thuật kéo và thả để tạo một giao diện người sử dụng điều khiển bằng cơ sở dữ liệu. Để thực hiện điều này, ta theo các bước sau :

1. Mở biểu mẫu ta muốn dùng làm giao diện người sử dụng.

2. Chọn bảng trong thiết kế Data Environment ( Không phải trong cửa sổ Data View ).

3. Thả bảng vào biểu mẫu.

Một giao diện người sử dụng rằng buộc dữ liệu sẽ được tạo trên biểu mẫu.

Thi hành ứng dụng để xem mẩu tin thứ nhất trong cơ sở dữ liệu. Tuy nhiên, không có chức năng duyệt từ mẩu tin này sang mẩu tin khác. Để thực hiện điều đó, ta phải lập trình hoặc dùng một điều khiển dữ liệu, mô tả trong phần sau.

Sử dụng điều khiển dữ liệu để tạo giao diện người sử dụng

Ta có thể dùng một điều khiển dữ liệu để quản lý kết nối giữa biểu mẫu Visual Basic và một cơ sở dữ liệu. Điều khiển dữ liệu còn cung cấp chức năng duyệt dữ liệu đơn giản, cho phép ứng dụng duyệt qua một recordset, thêm và cập nhật mẩu tin.

Phiên bản trước của VB cung cấp 2 loại điều khiển dữ liệu. DAO Data, thường được kết nối với cơ sở dữ liệu trên máy cá nhân như Microsoft Access và điều khiển Remove Data ( RDC ), dùng cho dữ liệu Client / Server. VB6 thêm một điều khiển dữ liệu mới , ADO Data, cho phép ta truy cập mọi loại dữ liệu và không thuộc mô hình quan hệ.

Vậy ta nên dùng điều khiển dữ liệu nào ? Đối với các ứng dụng cơ sở dữ liệu mới trong VB6, ta có thể dùng ADO Data. Nhung ta cũng có thể dùng mô hình cũ hơn, như là DAO hay RDO để bảo trì một cơ sở chương trình hiện hành. Vì các kiểu điều khiển dữ liệu hoạt động tương tự nhau, ta chỉ trình bày điều khiển dữ liệu ADO.

Điều khiển Data có sẵn cho mọi ấn bản của Visual Basic. Trong phiên bản Learning, tính năng của điều khiển này rất hạn chế. Ví dụ, ta không thể dùng đối tượng Recordset của điều khiển Data để tạo một đối tượng recordset khác.

Do hạn chế này của điều khiển data trong ấn bản Learning, để sử dụng điều khiển với đầy đủ chức năng, ta giả sử rằng điều khiển data ở đây là bản dành cho Professional vàEnterprise.

Điều khiển dữ liệu là cách đơn giản nhất để truy cập đến cơ sở dữ liệu trong Visual Basic, dù cho đó là Access hay một hệ Client / Server. Hình sau đây minh hoạ cách thức điều khiển ADO Data đã kết nối ứng dụng với một cơ sở dữ liệu.

Cách thức của một điều khiển ADO Data kết nối với cơ sở dữ liệu trong ứng dụng. Mặc dù điều khiển ADO Data là giải pháp dễ dàng để kết nối ứng dụng với một cơ sở dữ liệu, nhung đó không phải là giải pháp duy nhất. Sau khi đã quen với cách truy cập cơ sở dữ liệu trong Visual Basic, ta sẽ xem xét việc dùng chương trình để quản lý kết nối với vơ sở dữ liệu.

Kết nối với một cơ sở dữ liệu và làm việc với các mẩu tin

Tạo một ứng dụng dùng điều khiển ADO Data rất đơn giản . Thực ra, nếu những gì ta quan tâm chỉ là duyệt cơ sở dữ liệu thì ta không cần phải lập trình gì cả . Đây là một quy trình gồm 2 bước – quy định thuộc tính ConnectionString và RecordSourse của điều khiển Data, sau đó rằng buộc điều khiển với điều khiển giao diện người sử dụng. Để thực hiện điều này ta theo các bước sau :

1. Bắt đầu một đề án mới của Visual Basic.

2. Dùng menu Project Components, lập một tham chiếu đến “ Microsoft ADO Data Control 6.0 ( OLEDB )” bằng cách chọn vào hộp đánh dấu trong danh sách.

3. Nhấn nút OK, điều khiển ADO Data xuất hiện trên thanh công cụ của Visual Basic. Nhấn đúp chuột lên điều khiển để tạo một instance của điều khiển trên biểu mẫu.

4. Di chuyển và điều chỉnh điều khiển để cho nó nằm ở góc phải dưới của biểu mẫu, chiếm càng ít khoảng trống càng tốt.

5. Nhấn nút phải chuột lên điều khiển. Từ menu bật ra, chọn ADODC Properties.

6. Hộp thoại Properties của điều khiển xuất hiện. Chọn nút tuỳ chọn “User

Connection String “ rồi nhấn Build.

7. Hộp thoại DataLinkProperties xuất hiện. Đây là hộp thoại ta dùng để kết nối với cơ sở dữ liệu trong ví dụ “Sử dụng Data View” ở phần trước. Sử dụng cùng các bước kế nối đến cơ sở dữ liệu Noveltyvà nhấn OK khi hoàn tất.

8. Đến đây bạn đã quay lại hộp thoại Properties Pages của điều khiển ADO Data. Kế tiếp, ta thông báo cho điều khiển bảng nào sẽ được dùng. Chọn tab RecordSource, rồi chọn 2 –adCmdTable từ hộp kết hợp CommandType.

9. Chọn hộp kết hợp TableorStoredProcedureName. Hộp kết hợp hiển thị danh sách tất cả các bảng trong cơ sở dữ liệu. Chọn tblCustomerrồi nhấn OK.

Kết nối đến cơ sở dữ liệu xảy ra khi ứng dụng thi hành. Tuy nhiên, kết nối không có thông báo, bởi vì không có cách nào để hiển thị dữ liệu. Để hiển thị dữ liệu trả về từ một điều khiển dữ liệu, ta phải tạo các điều khiển kết nối rằng buộc với điều khiển dữ liệu. Để thực hiện điều này, theo các bước sau :

1. Tạo 2 hộp văn bản trên biểu mẫu.

2. Quy định thuộc tính DataSource của hộp văn bản là ADODC1, tên của điều khiển.

3. Chọn hộp văn bản thứ nhất và quy đinh thuộc tính DataField của nó là một trường của bảng trong cơ sở dữ liệu, chẳng hạn ta chọn FistName, một lần nữa giống như với thuộc tính RecordSourcecủa cơ sở dữ liệu ta chọn một thuộc tính DataField của điều khiển rằng buộc sẽ hiển thị là một danh sách xổ xuống trình bày danh sách những gì có sẵn trong cơ sở dữ liệu.

4. Quy định thuộc tính DataField của hộp văn bản thứ hai là tên của một trường khác trong cơ sở dữ liệu, chẳng hạn như là LastName.

5. Thi hành ứng dụng.

Sử dụng điều khiển Data để kết nối với một cơ sở dữ liệu.

Sau khi đặt điều khiển ADO Data trên biểu mẫu, người sử dụng có thể duyệt qua các mẩu tin bằng cách nhấn các nút của điều khiển. Điều khiển gồm 4 nút. Lưu ý rằng ở trạng thái mặc đinh, điều khiển dữ liệu không cho phép người sử dụng thêm,xoá mẩu tin. Nếu muốn thực hiện điều này hay làm một hành động nào khác, ta phải lập trình.

Một số điều khiển ActiveX của các nhà cung cấp thứ 3 được thiết kế để thay thế và mở rộng khả năng của điều khiển dữ liệu cung cấp bởi Visual Basic. Sử dụng điều khiển ADO Data để cập nhật mẩu tin

Ta không cần lập trình với điều khiển ADO Data để thực hiện việc cập nhật một cơ sở dữ liệu. Khi người sử dụng sửa đổi một mẩu tin hiển thị bởi điều khiển, mẩu tin đó được cập nhật ngay khi người sử dụng di chuyển sang mẩu tin khác ( giả định rằng recordset có thể cập nhật được ). Nếu đã quen thuộc với cách cập nhật mẩu tin dưới dạng biểu mẫu và lưới của Microsoft Access, chắc chắn bạn sẽ chờ đợi một phản ứng như vậy. Còn có những cách khác để thao tác trên một RecordSet bằng chương trình. Cách dễ nhất để thực hiện điều này là sửa đổi giá trị của điều khiển giao diện người sử dụng rằng buộc với điều khiển dữ liệu ; ta còn có thể thao tác với đối tượng Recordset chứa trong điều khiển dữ liệu để cập nhật mẩu tin.

Tạo một giao diện người sử dụng cơ bản

Trong phần trước, ta đã tìm hiểu về cách dùng trang thuộc tính của điều khiển ADO Data để tạo một giao diện người sử dụng đơn giản. Trong phần này, ta tự tạo một giao diện người sử dụng, cũng dùng điều khiển ADO Data, nhưng bằng cách đặt thủ công các thuộc tính quả lý đường dẫn của cơ sở dữ liệu. Qunh trình này cho phép ta hiệu chỉnh ứng dụng và thêm chức năng bổ xung cho nó. Để kết nối một điều khiển cần dùng dữ liệu với một điều khiển dữ liệu, ta theo các bước sau:

1. Bảo đảm rằng biểu mẫu chứa một điều khiển ADO Data mà thuộc tính RecordSource và ConnectionString của chúng được quy địn là nguồn dữ liệu hợp lệ. Chuỗi kết nối tối thiểu ta cần dùng là :

Provider = Microsoft.Jet.OLEDB.3.51; Data Source = App.parth & "\novelty.mdb"

2. Quy định thuộc tính DataSource của điều khiển cần dùng dữ liệu là tên của điều khiển Data. ( Khi ta dùng cửa sổ Properties của Visual Basic để thực hiện điều này, thuộc tính DataSource hiển thị tên của tất cả các điều khiển Data trên biểu mẫu hiện hành).

3. Nếu điều khiển cần dùng dữ liệu có một thuộc tính DataField, quy định nó là tên trường ta muốn điều khiển hiển thị. Một lần nữa, ta lưu ý rằng nếu mọi thứ được thiết lập đúng, một danh sách các trường sẽ được xổ xuống trong thuộc tính DataField khi ta chọn thuộc tính này trong cửa sổ Properties của Visual Basic.

Phần lớn nhưng không phải mọi điều khiển cần dùng dữ liệu đều có thuộc tính DataField. Ví dụ điều khiển DataGrid đi kèm với Visual Basic không có thuộc tính DataField, bởi vì điều khiển có thể hiển thị tất cả các trường trong một nguồn dữ liệu.

Điều khiển cần dùng dữ liệu

Một điều khiển cần dùng dữ liệu là một điều khiển bất kỳ có thuộc tính DataSource. Thuộc tính DataSource tham chiếu đến một điều khiển dữ liệu ; thuộc tính này kết nối điều khiển giao diện người sử dụng với điều khiển dữ liệu (đến phiên nó lại kết nối, hay rằng buộc giao diện người sử dụng với cơ sở dữ liệu ). Điều khiển giao diện người sử dụng đó được nói là rằng buộc với cơ sở dữ liệu thông qua điều khiển dữ liệu.

Sau đây là danh sách của các điều khiển cần dùng dữ liệu đi kèm với Visual Basic:

CheckBox: Điều khiển cung cấp một điều kiện đúng / sai. Nó chủ yếu rằng buộc với trường Boolean, hay Yes/ No trong một cơ sở dữ liệu.

ComboBox: Đây là hộp kết hợp xổ xuống chuẩn của Visual Basic. Ta không dùng điều khiển này cho mục đính truy cập dữ liệu, bởi vì phần danh sách của nó không thể rằng buộc với một nguồn dữ liệu, chỉ có phần văn bản mà thôi. Nếu ta muốn dùng một điều khiển giao diện người sử dụng rằng buộc cho mục đích này, ta cân nhắc để dùng điều khiển mạnh hơn, DBCombo.

DBCombo:Điều khiển cần dùng dữ liệu này hỗ trợ một danh sách xổ xuống tương tự điều khiển hộp kết hợp chuẩn của Visual Basic, nhưng nó có thể điền vào danh sách các dữ liệu lấy từ một bảng của cơ sở dữ liệu.

DataGrid:Lưới hiển thị dữ liệu của cơ sở dữ liệu theo dòng và cột. Phiên bản thương phẩm của điều khiển này là điều khiển Apex True DB Grid. DateTimePicker:Điều khiển này có thể rằng buộc ngày hoặc giờ trong một cơ sở dữ liệu. Nó giúp người sử dụng chọn ngày, giờ một cách dễ dàng dưới dạng đồ hoạ.

DBList: Điều khiển hộp danh sách này tương tự điều khiển hộp danh sách chuẩn của Visual Basic, nhưng nó có thể điền dữ liệu vào danh sách từ một bảng cơ sở dữ liệu.

Hierarchical FlexGrid: Tương tự điều khiển FlexGrid trong VB5, điều khiển này cho phép thao tác với nhiều mẩu tin quan hệ trong một điều khiển lưới. Image: Điều khiển này tương tự điều khiển PictureBox, nhưng thiếu một vài tính năng của nó.

Label: Điều khiển này cho phép trình bày văn bản từ một trường cơ sở dữ liệu, nhnhưng ngăn cản người sử dụng sử đổi nó.

ListBox : Đây là hộp danh sách chuẩn của Visual Basic, ta không sử dụng điều khiển này cho mục đích truy cập cơ sở dữ liệu mà sử dụng điều khiển mạnh hợ DBList.

MaskedEdit: Điều khiển này tương tự một hộp văn bản, nhưng cung cấp một chức năng kiểm tra nội tại cũng như một hiển thị mặc định gợi ý cho người sử dụng điều kiện nhập vào hộp văn bản.

MSChart : Điều khiển Mschart là một điều khiển chuẩn đi kèm với Visual Basic. Cái khác trong VB6 là khả năng rằng buộc biểu đồ trực tiếp với một điều khiển dữ liệu.

MSFlexGrid: Điều khiển này cho ta trình bày dữ liệu dưới dạng lưới. Ta còn có thể sử dụng điều khiển để xử lý dữ liệu, gộp nhóm và sắp xếp. Phiên bản thương phẩm của điều khiển này là VideoSoft VSLEX.

TextBox: Điều khiển thông dụng này cho phép người sử dụng nhập dữ liệu trực tiếp.

Các điều khiển cần dùng dữ liệu của các nhà cung cấp thứ 3

Ngoài các điều khiển cần dùng dữ liệu đi kèm với Visual Basic, ta còn có các điều khiển được cung cấp bởi các nhà cung cấp thứ ba. Thông thường, khi một điều khiển là nhận thức dữ liệu, nhà cung cấp thường dùng từ “ cần dùng dữ liệu” hay “rằng buộc”, để chỉ rõ điều khiển có thể rằng buộc với một nguồn dữ liệu.

Thao tác trên các mẩu tin thông qua điều khiển ADO Data

Ngoài khả năng cho phép duyệt qua Recordset, điều khiển ADO Data cho phép ta thi hành các hoạt động không đòi hỏi lập trình. Ta có thể dùng chương trình với điều khiển dữ liệu để duyệt qua từng mẩu tin, xoá mẩu tin, và tạo mẩu tin mới.

Phần lớn, chương trình phải viết khi làm việc với điều khiển dữ liệu đều tập trung trên đối tượng Recordset. Một đối tượng Recordset trở nên sẵn sàng khi ta quy định thuộc tính ConnectionString và RecordSource cho nó. Để truy cập một thuộc tính hay phương thức của một đối tượng Recordset của điều khiển dữ liệu trong chương trình, ta tham chiếu đến điều khiển dữ liệu, rồi tham chiếu đến đối tượng Recordset.

Ví dụ: Để di chuyển đến mẩu tin thư nhất của Recordset chứa trong điều khiển dữ liệu tên là datCustomer, ta dùng đoạn chương trình sau:

DatCustomer.Recordset.MoveFirst

Tại sao không dụng datCustomer.MoveFirst ? Câu trả lời là điều khiển dữ liệu không giống như dữ liệu, thao vào đó, điều khiển dữ liệu dưới dạng đối tượng Recordset.

Các thuộc tính bản thân của điều khiển dữ liệu gắn liền với sự xuất hiện và các phản

ứng của nó, trong khi đối tượng Recordset có các thuộc tính và phương thức gắn liền với chính dữ liệu.

Dùng điều khiển dữ liệu để tạo mẩu tin mới

Để tạo một mẩu tin mới ta có 2 tuỳ chọn:

Quy định thuộc tính EOFAction của điểu khiển dữ liệu là 2 AddNew. Giải pháp này không đòi hỏi lập trình.

Dùng phương thức AddNew và Update của đối tượng Recordset của điều khiển dữ liệu. Giải pháp này phức tạp hơn, nhung cho ta khả năng điều khiển trên những gì xảy ra khi người sử dụng muốn tạo mẩu tin mới. Nó cũng thích hợp cho trường hợp ta muốn che dấu điều khiển dữ liệu đối với người sử dụng.

Để cho phép điều khiển dữ liệu tạo mẩu tin mới mà không cần lập trình, ta làm như sau:

1. Trong đề án điều khiển Data, quy định thuộc tính EOFAction của điều khiển Data là 2 – AddNew.

2. Thi hành đề án.

3. Nhấn nút MoveLast của điều khiển data, rồi nhấn Next, Thay vì di chuyển đến mẩu tin cuối cùng trong Recordset, điều khiển dữ liệu tạo một mẩu tin mới. Ta có thể nói rằng mẩu tin này mới vì tất cả các điều khiển rằng buộc trên biểu mẫu đều rỗng.

4. Nhập dữ liệu trong các điều khiển rằng buộc.

5. Dùng nút Previous của điều khiển Data, di chuyển đến mẩu tin trước đó. Mẩu tin mới được lưu vào cơ sở dữ liệu.

Muốn sử dụng phương thức AddNew và Update để tạo một mẩu tin mới, ta làm như sau :

1. Thêm các nút lệnh và các điều khiển khác và giao diện để thể hiện phương thứuc AddNew và Update.

2. Trong sự kiện Click của nút Update, đưa vào dòng chương trình sau DatCustomer.Recordset.Update

3. Trong sự kiện Click của nút Update, đưa vào dòng chương trình sau: DatCustomer.Recordset.AddNew

4. Khi người sử dụng nhập liệu, họ có thể tuỳ chọn nhấn UpdateRecord để ghi nhận mẩu tin mới vào cơ sở dữ liệu. Họ còn có thể di chuyển sản mẩu tin khác để lưu nó, điều này cũng đúng với cập nhật mẩu tin.

Điểm quan trọng cần cần hiểu là khi người sử dụng tạo một mẩu tin mới trong giao diện nhập liệu sử dụng điều khiển dữ liệu, nhiều hoạt động sẽ là không hợp lệ bởi vì chưa có mẩu tin hiện hành.

Ví dụ, nếu ứng dụng cho phép người sử dụng tạo một mẩu tin bằng cách quy định thuộc tính EOFActioncủa điều khiển dữ liệu là AddNew, rổi cho phép người sử dụng thi hành phương thức Delete trên mẩu tin hiện hành, ứng dụng sẽ báo lỗi.

Lỗi xảy ra bởi vì không có mẩu tin bị xoá. Để tránh tình huống này, ta có một vài lựa chọn. Nếu ta đã quen với Visual Basic, lựa chọn hiển nhiên là bẫy lỗi và cấm phương thức Delete. Nhưng có một phương thức tốt hơn để tránh rắc rối này : vô hiệu hoá nút Delete để ngăn cản người sử dụng nhấn nó trong lần đầu tiên .

Dùng sự kiện moveComplete để cập nhật giao diện người sử dụng

Ta có thể dùng sự kiện MoveComplete của điều khiển ADO Data để khởi động sửa đổi trong ứng dụng khi người sử dụng di chuyển từ mẩu tin này sang mẩu tin khác.

Sự kiện MoveComplete được kích hoạt sau khi một mẩu tin mới trở thành hiện hành. Đây là một trong vài sự kiện được kích hoạt khi điều khiển di chuyển từ một mẩu tin này sang mẩu tin khác. Các sự kiện khác bao gồm WillChange, được kích hoạt khi điều khiển di chuyển từ mẩu tin này san mẩu tin khác, hay thay đổi một mẩu tin và sự kiện RecordChangeComplete, xảy ra khi một mẩu tin được sửa đổi thành công trong cơ sở dữ liệu như một kết quả của hoạt động trong điều khiển dữ liệu.

Ta chủ yếu dùng sự kiện RecordChangeComplete để thực hiện các tác vụ sau:

Thi hành một câu truy vấn trên các mẩu tin liên quan đến mẩu tin chính

Microsoft Access gọi nó là giao diện “biểu mẫu chính/ biểu mẫu con”. Tính toán một giá trị dẫn xuất từ một hay nhiều giá trị trong mẩu tin.

Quản lý nhiều vấn đề về giao diện người sử dụng để đáp ứng với trạng thái Recordset của điều khiển dữ liệu, thi hành những công việc như là che giấu hoặc vô hiệu hoá tính năng nào đó nếu một mẩu tin hợp lệ vắng mặt.

Điều khiển DAO Data cung cấp các sự kiện tương tự những sự kiện mô tả ở đây. Các sự kiện “Will” của điều khiển ADO Data ( như là WillMove và WillChange ) gắn giống với sự kiện Validate của điều khiển DAO Data, trong khi các sự kiện “Complete” của điều khiển ADO Data ( như là RecordChangeComplete và MoveComplete ) thì tương tự với sự kiện Reposition của điều khiển DAO Data.

Ta quan tâm đến vùng mà khách hàng cư ngụ. Ta có thể viết chương trình để quy định chia các Tiểu bang, mỗi tiều bang là một vùng. Các Tiểu bang không có quan hệ kinh doanh sẽ được gắn giá trị Aunassigned. Ta có thể dùng điều khiển ADO Data để trình bày vùng của từng mẩu tin trong biểu mẫu như sau:

1. Trên biểu mẫu của ứng dụng điểu khiển dữ liệu, ta tạo một điều khiển nhân và đặt tên nó là lblRegion.

2. Trong thủ tục sự kiện MoveComplete của điều khiển ADO Data, đưa vào đoạn chương trình sau:

Option Explicit

Private Sub datCusstomer_MoveComplete ( ByVal AddReason as ADODB.EventReasonEnum, ByVal pError Ass ADODB.Error, asStatus As ADODB.EventStatusEnum, ByVal Rs as ADODB.Recordset )

Dim strST as String

Dim StrRegion as String

If rs.BOF = false and Rs.EOF =False Then strST = RS.Field(“State”) & “”

end if

‘Display region

Select Case strST

Case "VT", "NH", "CT"

strRegion = "Northeast" Case "NC", "KY","AR"

strRegion = "South"

Case "OK", "MN", "MI", "OH"

strRegion = "Midwest" Case "MT"

strRegion = "West" Case Else

strRegion = "Unassigned" End Select

lblRegion.Caption = strRegion

End Sub.

3. Thi hành ứng dụng, ta sẽ thấy các vùng được hiển thị khi ta thay đổi từ màu này sang màu khác.

Dùng điều khiển Data để xoá mẩu tin

Để xoá mẩu tin trong một ứng dụng sử dụng điều khiển dữ liệu, ta dùng phương thức Delete của đối tượng Recordset của điều khiển dữ liệu:

datCustomer.Recordset.Delete

Có một cảnh báo quan trọng liên quan đến việc sử dụng phương thức Delete của đối tượng Recordset với điều khiển Data. Khi xoá một mẩu tin, không có mẩu tin hiện hành xuất hiện để thay thế, recordset không có chỗ đứng. Vì vậy, để giải quyết rắc rối này, ta phải di chuyển sang mẩu tin khác trong Recordset ( chủ yếu dùng phương thức MoveNext hay MoveLast của Recordset )

Như đã nói trong phần tạo mẩu tin và dùng các sự kiện của điều khiển dữ liệu, ta phải bảo đảm rằng có một mẩu tin hiên hành trong recordset của điều khiển dữ liệu khi ta thi hành phương thức Delete, hoặc là ứng dụng sẽ báo lỗi. Để tránh lỗi này ta phải thiết kế giao diện người dùng sao cho người sử dụng không thể xoá mẩu tin không hiện hữu . Giải pháp hữu hiệu là kiểm tra thuộc tính EOF và BOF của recordset trước khi tiến hành phương thức Delete, nếu BOF hay EOF là True, thì phương thức Delete sẽ thất bại.

Dùng sự kiện WillChangeRecord để bảo đảm dữ liệu hợp lệ

Trong lập trình cơ sở dữ liệu, việc kiểm tra dữ liệu hợp lệ (Validation) để đảm bảo rằng dữ liệu nhập vào hệ thống tuân thủ các điều kiện xác định bởi thiết kế ứng dụng.

Một cách để thi hành việc kiểm tra này khi lập trình với điều khiển ADO Data là viết chương trình trong sự kiện WillChangeRecord của điểu khiển. Sự kiện này được kích hoạt ngay sau khi mẩu tin được hiển thị bởi điều khiển dữ liệu bị thay đổi. Một tình huống hay gặp là người dùng kích hoạt sự kiện bằng cách di chuyển sang mẩu tin khác sau khi sửa đổi hay tạo một mẩu tin.

Khác với phiên bản trước của Visual Basic vốn sử dựng điều khiển DAO Data, điều khiển ADO Databáo lỗi theo từng kiểu hoạt động của điều khiển Data. Điều khiển DAO Data chỉ phát sự kiện Validate Repositionvốn được kịch hoạt với một số lý do. Chương trình phải xử lý thêm để xác định tại sao sự kiện được kích hoạt.

Validation ở mức bộ máy cơ sở dữ liệu

Ngoài việc xử lý các Validation bổ xung khi dữ liệu được nhập, ta còn có thể thi hành Validation ở mức bộ máy cơ sở dữ liệu. Các validationnày tin cậy hơn, bởi vì nó được áp dụng bất chấp quá trình sửa đổi dữ liệu gì. Nhưng validation ở mức này kém linh hoạt, bởi vì nó gần như không can thiệp được. Hơn nữa ta chỉ có thể thi hành validation trên cơ sở dữ liệu chỉ với mức trường, ta không thể tiến hành validation để so sánh giữa 2 trường.

Validation ở mức bộ máy cơ sở dữ liệu là một chức năng của thiết kế cơ sở dữ liệu. Đối với cơ sở dữ liệu Jet, tạo các quy tắc cho validation trong phần design view của bảng trên Access là dễ dàng nhất.

Ví dụ, ta muốn bảo đảm mẫu tồn kho không bao giờ được nhập vào bảng Inventorymà không có số catolog. Để thực hiện điều này đối với Microsoft Access ta đặt trong thuộc tính Allow Zero Lengthlà No.

Làm cho validation rõ ràng hơn bằng Validation Text

Do người nhập liệu thiếu kinh nghiệm sẽ gặp thông báo lỗi do bộ máy cơ sở dữ liệu phát ra khi họ vi phạm quy tắc Validation. ta có thể hiển thị thông báo quen thuộc hơn khi người dùng nhập dữ liệu sai. Ta thực hiện điều này bằng thuộc tính Validation Text của cửa sổ định nghĩa bảng.

Để thông báo một cách thân thiện hơn khi người sử dụng phạm quy tắc validation của CatalogNumber, ta làm như sau:

1. Trong Access, mở thiết kế của bảng tblInventory.

2. Trong thuộc tính Validation Text của trường CatalogNumber, nhập vào chuỗi ký tự sau

Bạn phải gõ một số catalog bắt đầu bằng một ký tự từ A đến M

3. Lưu và đóng thiết kế bảng và trở về Visual Basic.

Khi ta cố sửa giá trị trong trường Catolog Number thành một giá trị hợp lệ -. Ví dụ, sửa thành “Z12” một thông báo lỗi xuất hiện.

Các thuộc tính quan trọng khác của điều khiển ADO DATA

Điều khiển ADO Data có một số thuộc tính bổ sung quản lý cách hoạt đọng của nó, ta có thể quy đinh hầu hết các thuộc tính vào lúc thiết kế. Vì vậy, ta không cần lập trình.

Thuộc tính CommandType

Thuộc tính CommandType xác định kiểu lệnh mà điều khiển ADO Data phát ra trên nguồn dữ liệu để lấy về các mẩu tin. Ví dụ trong chương này sử dụng CommandType là 2- adCmdTable để mở và làm việc trực tiếp với bảng. Tuy nhiên, ta có thể dùng lệnh dạng văn bản hay thủ tục đã lưu trữ để cung cấp dữ liệu cho điều khiển dữ liệu.

Lệnh dạng văn bản là một chuỗi, được tạo ra trong mã nguồn của ứng dụng, và được đưa vào bộ máy cơ sở dữ liệu để xử lý.Đối với các cơ sở dữ liệu quan hệ ( như Microsoft Jet, cũng như nhiều hệ cơ sở dữ liệu khác ), chuỗi này được cấu tạo dưới câu truy vấn SQL. Tuy nhiên ADO cho phép ta dùng ngôn ngữ bất kỳ mà nguồn dữ liệu có thể hiểu được như là lệnh danh văn bản.

Một thủ tục đã lưu trữ là một câu truy vấn hay các lệnh khác được nhúng trong bản thân cơ sở dữ liệu. Ta chủ yếu tạo một thủ tục đã lưu trữ ( store procedure ) để tận dụng khả năng quản lý tạp trung của thủ tục truy cập cơ sở dữ liệu, cũng như cải tiến khả năng hoạt động của cấu trúc truy vấn. Cơ sở dữ liệu Jet của Microsoft cung cấp một dạng cơ bản của thủ tục đã lưu trữ gọi là QueryDef. Microsoft SQLServer cung cấp một bộ máy đầy đủ các mở rộng đến SQL để cho phép ta lập trình các thủ tục đã lưu trữ.

Thuộc tính EOFAction

Thuộc tính EOFAction xác định những gì điều khiển dữ liệu thực hiện khi người sử dụng di chuyển đến cuối của Recordset. Nếu ta quy định thuộc tính là 2 – AddNew, điều khiển tạo một bản ghi mới khi người sử dụng đi qua phần cuối cùng của mẩu tin hiện hành. ( Nói cách khác, giá trị này làm cho giao diện hoạt động tương tự biểu mẫu của Microsoft Access ). Tuy nhiên, nhớ rằng giá trị này không phải là hoạt động mặc định của điều khiển dữ liệu của Visual Basic ; ta phải thay đổi thuộc tính lúc thiết kế để đảm bảo rằng điều khiển có phản ứng như vậy. Để tạo một mẩu tin mới khi thuộc tính EOFAction của điều khiển dữ liệu được quy đinh AddNew, ta nhấn nút MoveLast, rồi nhấn nút MoveNext.

Dùng thuộc tính Mode để kiểm soát truy cập đến dữ liệu

Bằng cách quy định thuộc tính Mode của điều khiển ADO Data, ta có thể kiểm soát xem những người sử dụng khác có truy cập cơ sở dữ liệu hay không khi ứng dụng đang thi hành. Ví dụ, bằng cách quy định thuộc tính Mode là 12 – adModeShareExclusive, ứng dụng sẽ được tăng cường khả năng truy cập loại trừ đến dữ liệu - không người sử dụng nào khác có thể truy cập đến nó khi ứng dụng đang thi hành.

Ta còn có thể mở một nguồn dữ liệu chỉ đọc ( Read only ) bằng cách quy định thuộc tính Mode là 1 – adModeRead ; ứng dụng của bạn sẽ nhận được khả năng truy cập chỉ được đọc dữ liệu. Ưu điểm của giá trị này là, cải tiến khả năng hoạt động, bởi vì bộ máy cơ sở dữliệu không cần quan tâm đến những vấn đề rắc rối như là khoá mẩu tin hay kết nối nhiều người sử dụng xảy ra khi có nhiều hơn một ứng dụng truy cập đến cùng một mẩu tin.

Tổng kết

Chương này trình bày những khái niệm cơ bản của cơ sở dữ liệu nói chung, cũng như cách thức kết nối dễ dàng nhất của ứng dụng Visual Basic với cơ sở dữ liệu Microsoft Access.

Cần nhớ rằng, mặc dù Visual Basic và Microsoft Access chia sẻ cùng một bộ máy cơ sở dữ liệu, cơ sở dữ liệu kiểu Access không phải là khả năng duy nhất của Visual Basic.

Hỏi và Đáp

Hỏi: Ta thấy rằng Visual Data Manager không mạnh và dễ sử dụng như Microsoft Access, vậy tại sao ta lại dùng nó ?

Đáp: Nếu ta không có hoặc không thể dùng Microsoft Access thì ta có thể dùng nó.

Hỏi: Thế còn điều khiển DAO Data thì sao ?

Đáp: Trong quyển sách này, ta tập trung vào phiên bản ADO của điều khiển bởi vìnó mạnh hơn điều khiển DAO Data. Mặc dù vậy, ta vẫn có thể dùng DAO khi không thể dùng DAO khi không thể dùng ADO. Để tìm hiểu chi tiết về điều này, tham khảo một số mẹo liên quan đến điều khiển DAO Data.

Hỏi: Điều khiển dữ liệu có vẻ dễ sử dụng nhưng chúng có vẻ bị hạn chế và rối rắm trong vài trường hợp. Có cách nào để thực hiện các chức năng cơ sở dữ liệu trong Visual Basic.

Đáp: Chắc chắn bạn đã được Microsoft cung cấp điều khiển DAO Data ( kể từ Visual Basic 3.0 ) như là một giải pháp không cần lập trình. Đối với các hạn chế của điều khiển dữ liệu, ta có thể có giải pháp là kết hợp 1 hay nhiều điều khiển dữ liệu với lập trình hoặc chỉ sử dụng chương trình.

Hỏi: Có cách nào dùng các điều khiển cần dùng dữ liệu mà không dùng điều khiển dữ liệu không ?

Đáp: Có, mặc dù, nếu ta không dùng điều khiển dữ liệu, ta sẽ phải viết chương trình để quản lý kết nối với cơ sở dữ liệu một cách thủ công hay dùng thiết kế DataEnvironment ( như trình bày trong phần “Dùng thiết kế DataEnvironment để tạo giao diện người sử dụng “ trong chương này ). Điều này không phải là không làm được nhưng hơi phức tạp. Ta sẽ dùng chương trình đối tượng ( DAO, RDO hay ADO ) để xử lý việc trả về và cập nhật mẩu tin. ( Ta còn có thể dùng kiểu lập trình này để cho phép các điều khiển không cần dùng dữ liệu, như là điều khiển TreeView của Visual Basic, để trình bày dữ liệu từ cơ sở dữ liệu ).

Hỏi: Ta có thể dùng đối tượng Recordset của điều khiển dữ liệu vào mục đích khác không ?

Đáp: Được, đối tượng Recordset của điều khiển ADO Data tương tự các đối tượng Recordset khác trong ADO. Ta có thể gán một recordset tạo ra trong chương trình ADO với một đối tượng Recordset của đối tượng ADO Data.

Từ khóa » Cửa Sổ Cơ Sở Dữ Liệu Là Gì