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


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



tải về 1.69 Mb.
trang26/39
Chuyển đổi dữ liệu09.10.2016
Kích1.69 Mb.
#32631
1   ...   22   23   24   25   26   27   28   29   ...   39

12.4Sử 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.

Lưu ý : Đ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.

Lưu ý: 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.


12.4.1Kế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 Data Link Properties 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 Novelty và 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 Table or Stored Procedure Name. 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 tblCustomer rồ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 RecordSource củ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.



12.4.1.1Sử 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.



Chú ý: 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.

12.4.1.2Sử 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.


12.4.2Tạ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”


  1. 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).

  2. 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.

Lưu ý: 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.

12.4.2.1Đ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.

12.4.2.2Cá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.

12.4.3Thao 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.

12.4.3.1Dù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

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

DatCustomer.Recordset.AddNew

  1. Khi người sử dụng nhập liệu, họ có thể tuỳ chọn nhấn Update Record để 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 EOFAction củ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 .



12.4.3.2Dù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.

Lưu ý: Đ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.

Ví dụ : 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.



    1. 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.

12.4.3.3Dù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 )

Lưu ý: 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.

12.4.3.4Dù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 Data bá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 ValidateReposition vố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.

12.4.3.5Validation ở 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 validation nà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 Inventory mà 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 Length là No.


12.4.3.6Là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.

Ví dụ : Để 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 :

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

  1. 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.


12.4.4Cá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.

12.4.4.1Thuộ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 SQL Server 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ữ.

12.4.4.2Thuộ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.


12.4.4.3Dù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ải về 1.69 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   22   23   24   25   26   27   28   29   ...   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