I. TRUY XUẤT DỮ LIỆU BẰNG ĐỐI TƯỢNG ĐK CÓ KẾT NỐI CSDL
3. Các đối tượng điều khiển có kết nối cơ sở dữ liệu
Đối tượng điều khiển có kết nối cơ sở dữ liệu là các đối tượng điều khiển có thêm các thuộc tính (Datasource, DataField) cho phép kết nối với một field của bảng dữ liệu để trình bày hoặc cập nhật nội dung của field.
Trong Visual Basic, các đối tượng điều khiển có kết nối cơ sở dữ liệu gồm:
Các đối tượng chuẩn (Intrinsic)
• Check box
• Image
• Label
• Picture box
• Text box
• List box
• Combo box
Các đối tượng mở rộng (Extended)
• Data-bound list box
• Data-bound combo box
• Data-Bound Grid (DBGrid)
Các thuộc tính được sử dụng khi truy xuất cơ sở dữ liệu Thuộc tính Ý nghĩa
DataChanged True/False: Cho biết nội dung field có thay đổi hay không
DataField Tên vùng dữ liệu.
Datasource Tên nguồn dữ liệu, thường là tên của Datacontrol.
Ví dụ:
Thiết kế form duyệt bảng Employee chứa trong cơ sở dữ liệu Access NWIND.mdb.
Các Field muốn trình bày dữ liệu gồm:
Họ tên : FirstName + LastName Ngày sinh: Birth Date
Mã số nhân viên: Employee ID
Hình 8.1: Duyệt bảng Employees trong cơ sở dữ liệu NWIND.MDB
Đối tượng, thuộc tính và giá trị thuộc tính của các đối tượng được tóm tắt trong bảng sau
Đối tượng Thuộc tính Giá trị Ý nghĩa Form Name FrmData
Caption Bound Browser
Data Name datEmployees Tên DataControl
Caption Employees
DatabaseName C:\Program Files\VB6\NWIND.MDB
Cơ sở dữ liệu NWIND.MDB RecordSource Employees Bảng Employees
TextBox Name TxtLastName
DataField LastName Vùng họ (LastName)
DataSource DatEmployees
TextBox Name TxtFirstName
DataField FirstName Vùng tên (FirstName)
DataSource DatEmployees
TextBox Name TxtBirthDate
DataField BirthDate Vùng ngày sinh (BirthDate)
DataSource DatEmployees
TextBox Name TxtEmployeeId
DataField EmployeeID Vùng mã nhân viên
DataSource DatEmployees
Enabled False
Label Name Label1
Caption Employee:
Label Name Label2
Caption Birth Date:
Label Name Label3
Caption Employee ID:
Bấm phím F5 để chạy chương trình, sử dụng các phím mũi tên trên DataControl để duyệt xem các mẫu tin.
4. Sử dụng data-bound listbox (DBList) và combobox (DBCombo) Giả sử có 2 bảng dữ liệu cho như sau:
- Publishers chứa thông tin về các nhà xuất bản sách, thông tin chứa trong bảng gồm các field PubID (Mã NXB) và Name (Tên NXB),
- Titles chứa thông tin về mỗi quyền sách , thông tin chứa trong bảng gồm các field PubID (Mã NXB), AU_ID (Mã tác giả), Title (Tựa sách), Year_Published (Năm XB) và ISBN.
Hình 8.2: Quan hệ giữa các bảng Publishers và Titles
Người ta muốn xem các thông tin về một quyển sách gồm tựa (Title), năm XB (Year_Published), ISBN và tên NXB (Name) với vùng Name có thể chọn để cập nhật từ danh sách các nhà xuất bản. Form dữ liệu có dạng như hình 8.3.
Hình 8.3: Xem thông tin sách có thể điều chỉnh tên nhà xuất bản
Databound ListBox (DBList) và Databound ComboBox (DBCombo) là các đối tượng được thiết kế để thực hiện chức năng này, chúng là các Listbox và ComboBox có thêm một số thuộc tính đặc biệt để kết nối với cơ sở dữ liệu. Hai đối tượng điều khiển này chứa trong Microsoft Databound List Control. Để sử dụng, nạp lên ToolBox bằng cách bấm tổ hợp phím CTRL+T và chọn trong hộp thoại Components.
Các thuộc tinh kết nối cơ sở dữ liệu của DBList và DBCombo Datasource Tên nguồn dữ liệu, thường là tên của Datacontrol
DataField Tên vùng dữ liệu chứa trong Recordset đã mở bằng Datacontrol.
Khi giá trị mới được chọn, nội dung vùng tương ứng trong CSDL sẽ được tự động cập nhật khi di chuyển sang mẫu tin mới.
Rowsource Tên Datacontrol kết nối với table có nội dung được sử dụng để điền vào DBList/DBCombo
BoundColumn Tên vùng thuộc recordset được chỉ định bởi Rowsource được sử dụng để cập nhật Recordset trong Datasource
ListField Tên vùng thuộc Recordset trong Rowsource được sử dụng để điền vào DBList/DBCombo
Lưu ý:
• Tên các vùng DataField và BoundColumn nên giống nhau trong 2 cơ sở dữ liệu.
Thường đó là các vùng có thiết lập quan hệ (Relationship).
• Trong trường hợp chỉ sử dụng 1 Datacontrol các thuộc tính Datasource và Rowsource sẽ có cùng giá trị. Khi đó BoundColumn và DataField cùng có giá trị là tên vùng cần cập nhật trong cơ sở dữ liệu.
Ví dụ
Muốn tạo form duyệt bảng Titles với mã NXB (PubID) và Name được lấy từ bảng Publishers. Giá trị các vùng gán được tóm tắt theo hình 8.4 .
Hình 8.4: Sử dụng DBCombo và DBList để duyệt bảng Titles và Publishers Các đối tượng điều khiển sử dụng và giá trị thuộc tính đuợc tóm tắt theo bảng sau:
Ðối tượng Thuộc tính Giá trị
Data1 Connect Access
DatabaseName Biblio.mdb
Recordsettype 0-dbOpenTable
RecordSource Titles
Data2 Connect Access
DatabaseName Biblio.mdb
Recordsettype 2-dbOpenSnapshot
RecordSource SELECT PubID, Name FROM Publishers ORDER BY PubID
TextBox Name TxtTitle
Datasource Data1
DataField Title
TextBox Name TxtYear
Datasource Data1
DataField Year Published
TextBox Name TxtISBN
Datasource Data1
DBCombo Name DBCombo1
Datasource Data1
DataField PubID
Rowsource Data2
BoundColumn PubID
ListField Name
5. Sử dụng Databound Grid Control (DBGrid)
Databound Grid control là đối tượng điều khiển giúp trình bày nội dung bảng dữ liệu dưới dạng bảng (dòng, cột), nó có các thuộc tính kiểm soát thao tác trên bảng dữ liệu như sửa chữa (edit), thêm mới (addnew) hoặc xóa một mẫu tin trong bảng. Hình dưới trình bày một form sử dụng DBGrid để thao tác trên bảng Pulishers (Nhà xuất bản) của cơ sở dữ liệu BIBLIO.MDB.
Hình 8.5: Trình bày dữ liệu bằng DBGrid
Phần này trình bày các bước sử dụng DBGrid để thao tác trên bảng dữ liệu kết hợp với Data control mà không cần viết lệnh.
Bước 1: Đặt Datacontrol lên form, điều chỉnh các thuộc tính:
Database Name: Tên cơ sở dữ liệu, Recordsource: Tên bảng dữ liệu , Bước 2: Nạp đối DBGrid lên ToolBox
Bấm tổ hợp phím Ctrl+T để mở hộp thoại Components, Check tại đối tượng Microsoft Databound Grid Control 5.0 Bấm nút OK
Biểu tương DBGrid xuất hiện trên Toolbox.
Bước 3: Đặt DBGrid lên form
Click tại biểu tượng DBGrid trên ToolBox,
Click , kéo để xác định kích thước DBGrid trên form.
Bước 4: Liên kết DBGrid với DataControl
Điều chỉnh thuộc tính Datasource của DBGrid thành tên của Datacontrol, Bấm phím phải trên DBGrid rồi chọn Retrieve fields
Tên các vùng của bảng dữ liệu sẽ xuất hiện trên dòng tiêu đề của DbGrid.
Hình 8.6: DBGrid sau khi nạp các vùng của bảng dữ liệu Bước 5: Điều chỉnh các thuộc tính của DBGrid
Bấm phím phải trên DBGrid, chọn properties để mở Property Pages,
Hình 8.7: Thẻ General Thẻ General
Ý nghĩa các tùy chọn được tóm tắt trong bảng sau:
AllowAddnew Cho phép nhập thêm mẫu tin mới trên DBGrid
AllowDelete Cho phép xóa mẫu tin ngay trên DBGrid bằng cách chọn mẫu tin rồi bấm phím Delete
AllowUpdate Cho phép thay đổi nội dung các mẫu tin ngay trên DBGrid ColumnHeaders Có tiêu đề hay không
Headlines Kích thước dòng tiêu đề tính theo dòng
RowHeight Chiều cao dòng
RowdividerStyle Kiểu đường phân cách các mẫu tin trong DBGrid Datamode DBGrid có kết nối với bảng dữ liệu hay không Thẻ Keyboard
Định nghĩa cách sử dụng phím Tab trong DBGrid
Hình 8.8: thẻ Keyboard
Thẻ Columns
Thứ tự trình bày các Field trên các cột của DBGrid và định dạng giá trị trên mỗi cột.
Hình 8.9: Thẻ Columns Thẻ Layout
Độ rộng cột và chế độ căn nội dung trong cột của DBGrid, kiểu của vạch phân cách cột
Hình 8.10: Thẻ Layout
Thẻ Color
Chọn màu chữ, màu nền trong DBGrid
Hình 8.11: Thẻ Color Thẻ Font
Chọn kiểu chữ tiêu đề và nội dung DBGrid
Hình 8.12: Thẻ Font Ví dụ :
Sử dụng DBGrid để duyệt bảng Title trong cơ sở dữ liệu Biblio.mdb. Các bước thực hiện như sau:
Bước 1: Đặt DataControl lên form, điều chỉnh các thuộc tính theo bảng sau:
Thuộc tính Giá trị
Name Data1 Connect Access DatabaseName Biblio.mdb
Recordsettype 1-dbOpenDynaset RecordSource Titles
Bước 2: Đặt DBGrid lên form, điều chỉnh các thuộc tính theo bảng sau:
Thuộc tính Giá trị DataSource Data1
AllowAddNew False AllowDelete False AllowUpdate False
Bước 3: Nạp các vùng của bảng dữ liệu Title lên DBGrid
Right-Click, chọn Retrieve Fields để lấy thông tin của và vùng thành các cột trong DBGrid.
Bấm F5 chạy chương trình. Di chuyển qua các mẫu tin trong DBGrid bằng các phím mũi tên hoặc sử dụng Datacontrol để di chuyển. Chương trình có dạng như hình 8.12.
Hình 8.13: Sử dụng DBGrid duyệt bảng Title
Thêm DBCombo chọn nhà xuất bản (Publisher) để người dùng có thể chọn chỉ xem các tựa sách theo một nhà xuất bản . Thêm TextBox chọn năm xuất bản để người dùng có thể chọn xem các tựa sách xuất bản trong một năm nào đó.
Đặt thêm các đối tượng lên form và qui định các thuộc tính như cho trong bảng sau:
Đối tượng Thuộc tinh Giá trị
Data2 Connect Access
DatabaseName Biblio.mdb
Recordsettype 2-dbOpenSnapshot
RecordSource SELECT PubID, Name FROM Publishers ORDER BY PubID
TextBox Name TxtFlt
ComboBox Name cbFlt
List Year Published
Publisher
DBCombo Name cbPublisher
Datasource Data2
DataField PubID
Rowsource Data2
BoundColumn PubID
ListField Name
Button Name CmdApply
Caption Apply
Hình 8.14: Thêm đối tượng để thực hiện chức năng lọc Viết lệnh cho sự kiện click trên ComboBox
Private Sub CbFlt_Click() Select Case CbFlt.ListIndex Case 0
FltMode = 0
txtFlt.Visible = True
cbPublisher.Visible = False Case 1
FltMode = 1
txtFlt.Visible = False cbPublisher.Visible = True End Select
End Sub
Trong đó biến FltMode là biến chung được dùng để chọn chế độ xem theo năm xuất bản hay nhà xuất bản
Viết lệnh cho nút lệnh Apply Private Sub CmdApply_Click()
QryStr = "SELECT * FROM Titles WHERE "
Select Case FltMode Case 0
QryStr = QryStr & "[Year Published]= " & txtFlt.Text Case 1