1 Mục lục 1 2 Làm quen với visual basic 0 9


Sử dụng dữ liệu với đối tượng rdorerultset



tải về 1.69 Mb.
trang38/39
Chuyển đổi dữ liệu09.10.2016
Kích1.69 Mb.
#32631
1   ...   31   32   33   34   35   36   37   38   39

15.6 Sử dụng dữ liệu với đối tượng rdorerultset


Ta sử dụng đối tượng rdoresultset để thao tác với dữ liệu trả về do tương tác với server.

Mỗi đối tượng rdoresultset thuộc về tập hợp rdoresultsets. Đối tượng rdoresultset chứa tập hợp rdoColumn.

Đối tượng rdoresultset gần như đồng nhất với đối tượng Recordset cuẩ DAO. Có thể tạo đối tượng rdoresultset theo một số cách điển hình, nó được tạo như một kết quả của câu truy vấn.

Hình

15.7Thi hành truy vấn với đối tượng rdoQuery


Trong RDO 2.0 đối tượng RDOQuery là một thay thế cho đối tượng rdoprepareStatment trong RDO 1.0. Ta có thể vẫn dùng các đối tượng rdoPrepareStatment trong RDO 2.0 vì nó vẫn tương thích với các phiên bản trước. Tuy nhiên, với chương trình viết mới, ta nên dùng rdoQuery.

Từng đối tượng rdoQuery thuộc về tập hợp rodQueries. Đối tượng rodQuery chứa tập hợp các đối tượng rdoColumn và rdoParameter.


16Truy cập cơ sở dữ liệu với lớp


  • Làm việc với lớp và đối tượng.

  • Sử dụng lứp và đối tượng với truy cập cơ sở dữ liệu.

  • Tạo lớp cần sử dụng dữ liệu.

  • Tạo lớp xuất dữ liệu.

  • Triển khai lớp như là các Activex Server.

Các ứng dụng truy cập dữ liệu thường phức tạp hơn nhiều so với các ứng dụng thông thường. Lý do Visual Basic đưa ra các công nghệ DAO, ADO, ODBC là nhằm giúp giải quyết tính phức tạp này.

Nhưng các công nghệ này chỉ mới giải quyết những phức tạp nảy sinh trong quá trình phát triển phần mềm. Mô hình đối tượng cơ sở dữ liệu như ADO chẳng hạn, giúp ta trừu tượng hoá cơ sở dữ liệu và do đó tạo sự dễ dàng khi cập nhật một bản ghi hoặc sửa đổi định nghĩa bảng trong chương trình. Tuy nhiên, nó không giúp ta tính thuế trên doanh thu bán hàng hay từ chối một mẩu dữ liệu khách hàng bởi vì nó không có ID hợp lệ.

Visual Basic cho phép ứng dụng củng cố các quy luật kinh doanh vào các lớp. Lớp là một kiểu mô – dun chương trình cho phép ta tạo đối tượng. Các đối tượng ta tạo với mô-dun lớp tương tự các đối tượng truy cập dữ liệu ta sử dụng để giao tiếp với cơ sở dữ liệu, ngoại trừ chúng được dùng cho mục đích bất kỳ. Trong ngữ cảnh truy cậ cơ sở dữ liệu, ta chú yếu dùng lớp cùng với các đối tượng cơ sở dữ liệu để tạo nên một ứng dụng truy cập cơ sở dữ liệu.

Giả sử ta tạo một ứng dụng xử lý hoá đơn và khách hàng. Trong một ứng dụng không theo hướng đối tượng, ta phải viết các hàm hay thủ tục ghi thông tin khách hàng và hoá đơn, trả về các thông tin từ cơ sở dữ liệu, in thông tin, v.v.. Nếu viết bằng Visual Basic, ta còn phải xử lý rải rác trên hàng chục thủ tục sự kiện.

Là người lập trình theo hướng đối tượng, ta sẽ bắt đầu bằng cách phân tích và thiết kế các thành phần, hay là đối tượng khái quát hoá vấn đề xử lý khách hàng và hoá đơn. Anh ta hay cô ta sẽ xác định một đối tượng khách hàng có những thông tin gì và đối tượng khách hàng đó có thể thực hiện những hành động nào trên dữ liệu; tương tự với đối tượng hoá đơn. Sau khi đối tượng được phân tích và thể hiện thành lớp, nó sẽ được sử dụng trong ứng dụng. Ta có thể dùng lại đối tượng khách hàng và đối tượng hoá đơn trong ứng dụng bất kỳ sau này. Bởi vì mã nguồn của đối tượng tồn tại trong nơi chứa rất dễ truy cập đến là mô-dun lơp thay vì trong rất nhiều thủ tục sự kiện rải khắp ứng dụng, ta cũng có thể dễ dàng gỡ rối và bảo trì các đối tượng này.

Ngoài ra, lớp và đối tượng còn tận dụng các tính năng ngôn ngữ mạnh của Visual Basic. Ví dụ, có một quan hệ giữa khách hàng và hoá đơn – ta có thể nói một khách hàng thuộc về một hoá đơn, hay chính xác hơn, tập hợp các hoá đơn thuộc về một khách hàng. Visual Basic hỗ trợ tập hợp các đối tượng.

Một hệ thống hướng đối tượng có 3 đặc điểm :



  • Trừu tượng hoá : rút gọn vấn đề đến mức dễ hiểu nhất.

  • Đa hình : cho phép đối tượng thi hành cùng phương thức và chứa cùng dữ liệu với các đối tượng khác. Điều này tạo sự dễ dàng khi lập trình, giúp ta không cần xử lý lại với từng đối tượng, bởi vì các đối tượng vẫn có cùng phương thức và thuộc tính.

  • Tóm lược : đây là cơ chế qua đó logic chương trình và dữ liệu được nhóm lại với nhau.

  • Kế thừa : đối tượng hiện hữu có thể sinh ra một đối tượng mới. Tính năng này trong Visual Basic còn bị hạn chế, nó được cung cấp dưới dạng các giao diện và thông qua đại diện.

16.1Làm việc với lớp và đối tượng


Bạn nên xem lại chương 2 : Tìm hiều Visual Basic và chương 10 : Lập trình hướng đối tượng.

16.1.1Tạo cây phân nhánh lớp với tiện ích xây dựng lớp


Khi ta thiết kế lớp chứa lớp, nhất là lớp có tập hợp – chương trình trở nên khó viết vì rất khó quản lý chúng. Tiện ích xây dựng lớp (Class Builder utility) giúp ta thiết lập và quản lý các quan hệ giữa tập hợp các lớp bao bọc chúng dễ dàng hơn.

  • Ví dụ mẫu - Tạo một lớp tập hợp cho phép làm việc với tập hợp của đối tượng Order

  1. Khởi động Visual Basic và nạp đề án chứa lớp COrder.

  2. Từ menu Add-Ins, chọn Add-Ins Manager.

  3. Nhấn Class Builder Utility trong hộp thoại Add-In Manager. Trong bảng Load Behavior, nhấn Loaded/Unloaded.

  4. Nhấn OK. Tiện ích xây dựng lớp được nạp và xuất hiện trên menu Add-Ins.

  5. Để phóng tiện ích xây dựng lớp, chọn menu Add-Ins,Class Builder Utility

  6. Tiện ích xây dựng lớp cảnh báo rằng đề án hiện hành chứa lớp hiện hành chưa được xây dựng với tiện ích này. Nhấn OK.

  7. Cửa sổ Tiện ích xây dựng lớp xuất hiện.



Hình 16.1 : Dùng nút New Collection (nút thứ hai từ trái sang) của tiện ích xây dựng lớp để tạo một lớp tập hợp.

  1. Bây giờ, ta dùng Tiện ích xây dựng lớp để tạo lớp tập hợp. Nhấn nút Add New Collection trên thanh công cụ:

Hình 16.2 : Nút Add New Collection

  1. Hộp thoại Collection Builder xuất hiện. Trong ô Name, nhập tên của lớp tập hợp – colOrder.

  2. Chọn COrder trong bảng có chữ “Collection Of “.Điều này cho biết lớp tập hợp này là một tập hợp của đối tượng COrder. Nó tạo sự an toàn về kiểu cho lớp – khác với các tập hợp thông thường, chỉ đối tượng COrder mới được thêm vào tập hợp này.

  3. Nhấn OK. Lớp tập hợp được thêm vào tiện ích xây dựng lớp.

  4. Ta có thấy tiện ích xây dựng lớp phát sinh các thuộc tính và phương thức để hỗ trợ 4 phương thức của tập hợp (Add, Count, Item và Remove) cũng như là NewEnum.

Lưu ý :Tiện ích xây dựng lớp tạo thuộc tính NewEnum cho phép lớp tập hợp hỗ trợ phép lặp xuyên qua tập hợp dùng cấu trúc điều khiển For Each..Next. Không nhất thiết phải dùng thuộc tính này trong chương trình, nhưng ta biết sẽ dùng nó với For Each..Next.



Hình 16.3 Cửa sổ tiện ích xây dựng lớp sau khi nó tạo một lớp tập hợp.

  1. Bây giờ ta định nghĩa lớp tập hợp, ta có thể yêu cầu tiện ích xây dựng lớp phát sinh chương trình bằng chọn menu File Update Project hoặc dùng phím tắt Ctrl+S.

  2. Tiện ích tự động xây dựng lớp tập hợp. Đóng tiện ích bằng cách chọn File, Exit. Ta thấy lớp Orders được tạo ra do tiện ích xây dựng lớp.

Ta cũng thấy rằng tiện ích đã định nghĩa lại cú pháp của phương thức Add của tập hợp. Thay vì lấy đối tượng làm tham biến như phương thức Add của tập hợp quy ước, phương thức Add mới lấy biến làm tham biến. Những biến này gắn với các thuộc tính của đối tượng COrder. Điều này cho phép ta tạo đối tượng, thêm nó vào tập hợp, gán giá trị cho nó - những cải tiến đáng kể so với cách thức thực hiện thông thường.
Dim MyOrder as COrder

Dim MyOrders as colOrder

Set MyOrders= New colOrder

set MyOrder= MyOrders.Add(2.99, “Cheese”, 201, #6/5/99#)


Mặc dù vậy, đây chưa phải là cú pháp tốt nhất để thêm mộ phần tử vào tập hợp. Có thể dùng cách gọn gàng hơn:

Dim MyOrder as COrder

Dim MyOrders as colOrder

Set MyOrders= New colOrder

set MyOrder= MyOrders.Add()

MyOrder.Price = 2.99

MyOrder.ItemOrdered = “Cheese”

MyOrder.CustomerID = 201

MyOrder.OrderDate = #6/5/99#
Cả hai cách đều đưa về cùng kết quả: một đối tượng được thêm vào tập hợp và thuộc tính được gán giá trị. Cách thứ hai, dùng thuộc tính thay vì tham biến trông rõ ràng, vì vậy ta sử dụng nó rộng rãi hơn.

Một trường hợp dùng tham biến thuận tiện hơn thuộc tính là khi lớp tập hợp tồn tại trong một thành phần triển khai từ xa qua mạng. Theo kịch bản đó, mỗi lần gọi đến thuộc tính là sinh ra một truy cập 2 lượt đi về qua mạng. Vì vậy, để ứng dụng hoạt động tốt hơn, ta nên dùng tham biến và chỉ gọi một lần.



  • Ví dụ mẫu - Sửa đổi phương thức Add của lớp tập hợp để bỏ qua tham biến

Public Function Add(Optional sKey as String) as COrder

Dim objNewMember as COrder

Set objNewMember = New COrder

If Len(sKey) =0 Then

mCol.Add objNewMember

Else


mCol.Add objNewMember, sKey

End If


Set Add = objNewMember

Set objNewMember = Nothing

End Function

16.1.1.1Dùng lớp tập hợp để thao tác với các phần tử dữ liệu


Để xây dựng ứng dụng dùng lớp COrdercolOrder, ta theo các bước sau :

  1. Tạo đề án Standard Exe mới. Thêm lớp COrder colOrder.

  2. Trong đề án, tạo một biểu mẫu cho phép người sử dụng đưa vào Date, CustomerID, Item, Price. Thêm 2 nút lệnh vào giao diện, nút thứ nhất nhập dữ liệu, trong khi nút thứ hai tính toán tổng số hoá đơn được nhập.



Hình 16.4 Giao diện của mô hình của hệ thống nhập hoá đơn hướng đối tượng có 2 nút lệnh.

  1. Trong biểu mẫu, khai báo 2 biến mức mô-dun, một cho đối tượng COrder và một cho tập hợp colOrder.

Option Explicit

Private ThisOrder as COrder

Private AllOrders as colOrder


  1. Tạo instance cho tập hợp colOrder trong sự kiện Load của biểu mẫu.

Private Sub Form_Load ()

Set AllOrders = New colOrder

End Sub


  1. Viết chương trình cho sự kiện Click của nút Add để thêm hoá đơn vào tập hợp, rồi khởi động lại giao diện người sử dụng của ứng dụng.

Private Sub cmdAdd_Click ()

Creates a new order and adds

‘ it to the collection

Set ThisOrder = AllOrders.Add
ThisOrder.OrderDate = txtOrderDate.Text

ThisOrder.CustomerID = txtCustomerID.Text

ThisOrder.ItemOrdered = txtItemOrdered.Text

ThisOrder.Price = txtPrice.Text

‘ Reset the user Interface

txtOrderDate.Text = “ ”

txtCustomerID.Text = “ ”

txtItemOrdered.Text = “ ”

txtPrice.Text = “ ”

txtOrderDate.SetFocus


End Sub


  1. Sau cùng, trong sự kiện Click của nút Total, viết chương trình để trả về tổng số hoá đơn đã nhập dùng vòng lặp

For Each.. Next.

Private Sub cmdTotal_Click()


Dim curTotal As Currency
For Each ThisOrder In AllOrders

curTotal = curTotal + ThisOrder.Price

Next

MsgBox "The total is " & curTotal, vbInformation



End Sub

16.1.1.2Tham chiếu đến phần tử trong tập hợp


Dùng vòng lặp For Each.. Next để duyệt qua tập hợp không phải là cách duy nhất để làm việc với tập hợp. Sau khi thiết lập và đưa vào các đối tượng, ta có thể lấy ra phần tử từ tập hợp. Nếu thêm đối tượng vào tập hợp với một khoá hay giá trị chuỗi duy nhất, ta có thể lấy về đối tượng mà không không cần xác định vị trí của nó trong tập hợp - một ưu điểm so với mảng.

Ví dụ, Để lấy về hoá đơn thứ 4 trong tập hợp :

Set MyOrder = AllOrders(4)

Để tham chiếu đến thuộc tính của đối tượng Order thứ 4 trong tập hợp, ta truyền vào chỉ mục của tập hợp :

AllOrders(4).OrderDate = #6/5/98#

Dòng lệnh này hoạt động nhờ thủ tục mặc định của tập hợp trả về một tham chiếu đến phần tử được đánh số. Thủ tục mặc định này là phương thức Item. Vì là mặc định, nên ta không cần gọi nó một cách tường minh. Nếu không, có thể dùng:

AllOrders.Item(4).OrderDate= #6/5/98#

THẬN TRỌNG Phần tử đầu tiên trong tập hợp được đánh số 1, không có phần tử thứ 0. Nó cũng khách với tập hợp của các đối tượng Form hay Control trong Visual Basic; các tập hợp này đánh số từ 0. Như vậy, tập hợp do ta tự tạo được đánh số từ 1; trong khi tập hợp do Visual Basic tạo đánh số từ 0. Đây cũng là trường hợp của tập hợp các đối tượng truy cập dữ liệu, như là tập hộp TableDefs của đối tượng Database.

Để trả về một phần tử từ tập hợp sử dụng một khoá trước đó, ta phải thêm nó vào tập với một khoá. Để thực hiện điều này, truyền một chuỗi duy nhất cho phương thức Add :

AllOrders.Add “ORD193”).prive

Ta sẽ gặp thông báo lỗi nếu như chuỗi này không duy nhất. Để tham chiếu đến một thuộc tính của đối tượng này, ta dùng dòng lệnh :

MsgBox AllOrders (“ORD193”).prive

Lưu ý rằng ta không dùng giá trị số cho khoá của một đối tượng, ngay cả khi ta truyền nó cho phương thức Add dưới dạng chuỗi. Bởi vì phương thức Item có thể trả về một đối tượng từ tập hợp bằng khoá hoặc bằng vị trí xếp thứ tự. Nếu phương thức Item nhận số n, nó trả về phần tử thứ n trong tập hợp. Nếu nó nhận một chuỗi, nó trả về đối tượng với khoá là chuỗi đó. Mặc dù vậy, Nếu chuỗi có thể chuyển thành số, ta sẽ có nguy cơ gặp lỗi.



16.1.2Sử dụng biểu mẫu như lớp


-Ví dụ mẫu - Tạo một Instance của biểu mẫu Login

  1. Trong đề án của Visual Basic, nhấn nút phải chuột trên cửa sổ Project Explorer.

  2. Từ menu bật ra, chọn Add. Chọn Form.

  3. Hộp thoại Form xuất hiện. chọn biểu mẫu Login.



Hình 16.5 :Hộp thoại Add Form của Visual Basic cho phép chọn kiểu biểu mẩu định nghĩa sẵn.

  1. Trong hộp thoại Form, nhấn Open. Một biểu mẫu mới được tạo.

  2. Trong cửa sổ Code, đưa vào các thủ tục thuộc tính :

Public Property Get UserName() As String

UserName = txtUserName.Text

End Property


Public Property Let UserName(ByVal strNew As String)

txtUserName.Text = strNew

End Property
Public Property Get Password() As String

Password = txtPassword.Text

End Property
Public Property Let Password(ByVal strNew As String)

txtPassword.Text = strNew

End Property
Public Sub Login()

MsgBox "Logging in user " & UserName & "."

End Sub


  1. Biểu mẫu Login chuẩn của Visual Basic chưa chương trình trong sự kiện nhấn nút OK và Cancel để người sử dụng Login vào hệ thống. Xoá đoạn chương trình đó đi và thay bằng đoạn chương trình sau:

Private Sub cmdCancel_Click()

Me.Hide

End Sub


Private Sub cmdOK_Click()

UserName = txtUserName.Text

Password = txtPassword.Text

Login


Me.Visible = False

End Sub
Điều này sẽ tận dụng thế mạnh của các thuộc tính và phương thức hiệu chỉnh của chúng ta. Ngoài ra, Form này sẽ được ứng dụng rộng rãi trong ứng dụng “Clien/Server” sẽ được trình bày trong phần sau.





tải về 1.69 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   31   32   33   34   35   36   37   38   39




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương