16.3Tạo các lớp cần sử dụng dữ liệu
Lớp có khả năng ràng buộc trực tiếp với cơ sở dữ liệu. Đây là tính năng mới trong Visual Basic 6.0. Ta không cần giới hạn các điều khiển dữ liệu thành nguồn dữ liệu cho ứng dụng cơ sở dữ liệu.
Ngoài việc cung cấp nguồn dữ liệu mới, Visual Basic 6 còn loại bỏ những hạn chế về cách thức kết nối của ứng dụng với nguồn dữ liệu. Ta không cần thiết lập ràng buộc dữ liệu vào lúc thiết kế, như với điều khiển DAO Data. Thay vào đó, ta có thể gán một nguồn dữ liệu (như là điều khiển ADO Data,thiết kế DataEnvironment,hay lớp cung cấp dữ liệu ) cho phần tiêu thụ dữ liệu (như là một điều khiển giao diện nguời sử dụng ràng buộc ) lúc thi hành. Điều này cho phép đóng gói mô-dun lớp truy cập dữ liệu.
Để tạo một lớp làm nguồn dữ liệu truy cập cơ sở dữ liệu Novelty, ta theo các bước sau:
-
Tạo một đề án Standard EXE.
-
Dùng menu Project để thêm một mô-dun lớp vào đề án. Đặt tên mô-dun lớp là CCustData.
-
Dùng cửa sổ Properties để đổi thuộc DataSourceBehavior thành 1-vbDataSource.
-
Dùng menu Project, References để thiết lập một tham chiếu đến Microsoft ActiveX Data Objects.
-
Trong phần khai báo của lớp, tạo một đối tượng Recordset (private). Đối tượng này sẽ xử lý truy cập cơ sở dữ liệu.
Private mrsCustomer As ADODB.Recordset
-
Trong sự kiện Initialize của lớp, viết chương trình để tạo đối tượng Recordset:
Set mrsCustomer = New ADODB.Recordset
mrsCustomer.Source = "select * from tblCustomer"
mrsCustomer.CursorType = adOpenKeyset
mrsCustomer.LockType = adLockOptimistic
mrsCustomer.ActiveConnection = "DSN=JetNovelty;"
mrsCustomer.Open
-
Trong sự kiện Initialize của lớp, viết chương trình đăng ký nguồn dữ liệu với tập hợp DataMembers do thư viện Microsoft Data Binding cung cấp. Điều này cho phép phần tiêu thụ dữ liệu (như là các điều khiển ràng buộc) dùng lớp này như là một nguồn dữ liệu :
-
Viết chương trình cho sự kiện GetDataMember của lớp để trả về một đối tượng Recordset dựa trên tham số DataMember của sự kiện ( Sự kiện GetDataMember sẽ hiện diện sau khi ta quy định giá trị cho thuộc tính DataSourceBehavior ). Bởi vì sự kiện GetDataMember được tham số hoá, ta có thể kết nối ứng dụng với vô số các recordset;tuy nhiên, lớp này chỉ trả về một danh sách khách hàng.
Lưu ý : Tham số Data của sự kiện GetDataMember là một đối tượng, không phải một recordset. Do đó, trong sự kiện có thể truy cập đối tượng khác thay vì đối tượng Recordset của ADO.
-
Kế đến, viết phương thức (public) trong lớp CCustData để điều khiển recordset. Trong ví dụ này, ta tạo 4 phương thức di chuyển được cung cấp bởi một điều khiển dữ liệu:
Public Sub MoveFirst()
mrsCustomer.MoveFirst
End Sub
Public Sub MoveLast()
mrsCustomer.MoveLast
End Sub
Public Sub MoveNext()
mrsCustomer.MoveNext
If mrsCustomer.EOF Then
mrsCustomer.MoveLast
End If
End Sub
Public Sub MovePrevious()
mrsCustomer.MovePrevious
If mrsCustomer.BOF Then
mrsCustomer.MoveFirst
End If
End Sub
-
Dùng menu Project Components, thêm một điều khiển Microsoft DataGrid Control 6.0 (OLE DB) vào đề án.Nó cho phép ta hiển thị dữ liệu trong một lưới (grid). Tạo một instance của điều khiển lưới trên biểu mẫu.
-
Trên biểu mẫu, tạo 4 nút lệnh để duyệt qua dữ liệu. Đặt tên chúng là cmdFirst, cmdPrevious, cmdNext, cmdLast.
-
Trong sự kiện Load của biểu mẫu, khai báo một instance của lớp nguồn dữ liệu. Viết chương trình cho sự kiện Click để gọi các phương thức di chuyển :
Private Sub Form_Load()
' Create the data source object
Set mCustData = New CCustData
' Bind the object to grid
Set DataGrid1.DataSource = mCustData
DataGrid1.DataMember = "Customers"
End Sub
Private Sub cmdFirst_Click()
mCustData.MoveFirst
End Sub
Private Sub cmdLast_Click()
mCustData.MoveLast
End Sub
Private Sub cmdNext_Click()
mCustData.MoveNext
End Sub
Private Sub cmdPrevious_Click()
mCustData.MovePrevious
End Sub
-
Thi hành ứng dụng.
Chia sẻ với bạn bè của bạn: |