Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] adOpenKeySet vs adOpenDynamic
#1
Dear all,

- Mình đang tìm hiểu về phương pháp ADO access và đang thắc mắc về sự khác biệt và trường hợp sử dụng 02 loại giá trị CursorType là: adOpenKeySet và adOpenDynamic.

- Theo tài liệu mình có thì nó định nghĩa như sau:

adOpenDynamic
– Có thể di chuyển tới - lui, cập nhật mẩu tin
Thấy được các mẩu tin do người khác thêm, xoá, sửa vào CSDL

adOpenKeySet
– Có thể di chuyển tới - lui, cập nhật mẩu tin
– Mẩu tin
• Thêm bởi người khác: Không thấy
• Xoá bởi người khác: không truy cập được
• Sửa bởi người khác: thấy


-Nhờ các bạn giải thích và cho ví dụ giúp mình để mình dễ thông não các dòng tô đỏ, nên dùng cái nào trong trường hợp nào ? Nó có liên quan gì tời việc quản lý phân quyền account không ?

Thanks,
Chữ ký của dinh_trong_hoa
Reply
Những người đã cảm ơn
#2
(30-08-16, 04:13 PM)dinh_trong_hoa Đã viết: adOpenDynamic
– Có thể di chuyển tới - lui, cập nhật mẩu tin
Thấy được các mẩu tin do người khác thêm, xoá, sửa vào CSDL

adOpenKeySet
– Có thể di chuyển tới - lui, cập nhật mẩu tin
– Mẩu tin
• Thêm bởi người khác: Không thấy
• Xoá bởi người khác: không truy cập được
• Sửa bởi người khác: thấy

-Nhờ các bạn giải thích và cho ví dụ giúp mình để mình dễ thông não các dòng tô đỏ, nên dùng cái nào trong trường hợp nào ? Nó có liên quan gì tời việc quản lý phân quyền account không ?

Trả lời:

+ Ý1: Hai thằng trên liên quan đến tốc độ truy xuất dữ liệu khi có nhiều User cùng sử dụng. Còn chỉ có vài người sử dụng thì sẽ không nhận ra sự khác biệt nào, nhất là hiện nay cấu hình máy tính thì quá xá mạnh.
+ Ý 2: Nên dùng cái nào: Cái này tùy mục đích truy xuất để làm gì ta mới cho nó kết nối bằng phương thức Dynamic hay KeySet

* Ta có khả năng tạo 4 kiểu con trỏ khác nhau

  1. Forward-only([adOpenForwardOnly]): Không dùng con trỏ - ta chỉ có thể chuyển về phía trước Recordset; sử dụng phương thức MovePrevious và MoveFirst sẽ sinh lỗi.
  2. Keyset(Trong ADO được gọi là dynaset)[adOpenKeyset]: Ta không thể tháy các bản ghi mới do người dùng khác thêm vào, nhưng khi họ sửa đổi hay xoá tin sẽ làm ảnh hưởng đến Recordset ta đang làm việc; đây là kiểu con trỏ hiệu quả nhất, đặc biệt là khi Recordset khá lớn.
  3. Dynamic ([adOpenDynamic]): Ta có thể thấy toàn bộ thay đổi trên dữ liệu do những người sử dụng khác thực hiện trong khi ta đang mở Recordset; đây là kiểu con trỏ ít hiệu quả nhất nhưng mạnh mẽ.
  4. Static(Trong DAO gọi là snapshot) [adOpenStatic]:  Bản sao của toàn bộ dữ liệu của một Recordset; kiểu này đặc biệt hữu dụng khi ta đang tìm kiếm dữ liệu hay khi thi hành báo cáo; kiểu con trỏ này rất hữu dụng cho các Recordset nhỏ.

* 4 loại trên được gọi là Curcor Type chẳng qua nó chỉ là tên gôi khác của Recordset

Ví dụ:
1. Mở kết nối tới bảng bằng DAO (Workstation)
Mã PHP:
Dim rs As DAO.Recordset
Set rs 
CurrentDb.OpenRecordset("tblPeople"dbOpenDynaset)
' hoặc
Set rs = CurrentDb.OpenRecordset("SELECT pkPeopleID, LastName FROM tblPeople", dbOpenDynaset) 

2. Mở kết nối tới bảng bằng ADO (Workstation)

Mã PHP:
Dim rs As New ADODB.Recordset
rs
.Open "tblPeople"CurrentProject.ConnectionadOpenStatic
' hoặc
rs.Open "SELECT pkPeopleID, LastName FROM tblPeople", CurrentProject.Connection, adOpenStatic 

3. Mở kết nối tới bảng bằng ADO (Server)

Mã PHP:
Dim ObjConn
Dim rs
Dim strConn
Set ObjConn 
Server.CreateObject("ADODB.Connection")
strConn="Microsoft.Jet.OLEDB.4.0;Data Source=" 
   server
.mappath("/MIS333K-YourInstructor/FirstName.LastName/db/")&"\sample.mdb;"
ObjConn.Open strConn
Set rs 
Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection ObjConn
rs
.Open "SELECT * FROM tblSample"ObjConnadOpenKeysetadLockPessimisticadCmdText 


* Ngoài phương thức tạo kết nối ta còn lồng nó vào các sự kiện như Thêm, Sửa, Xóa...
* So sanh tốc độ:
adOpenDynamic: Chậm, nhưng ít lỗi xảy ra khi có các sự kiện Thêm, Sửa, Xóa...
adOpenKeySet: Nhanh, Dễ lỗi...khi có các sự kiện Thêm, Sửa, Xóa...

Ngoài ra còn có các tham số khác để áp dụng nửa:
Link tham khảo: Hướng Dẫn So sánh Cú pháp kết nối của DAO và ADO

Chi tiết các bạn có thể vào Nguồn tham khảo này: http://www.classanytime.com

Thân mến! Và Xin vài ý kiến của các cao thủ khác.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn dinh_trong_hoa , Minh Tiên
#3
Trả lời bổ sung ý:

* Ta có khả năng tạo 4 kiểu con trỏ khác nhau

  1. Forward-only([adOpenForwardOnly]): Không dùng con trỏ - ta chỉ có thể chuyển về phía trước Recordset; sử dụng phương thức MovePrevious và MoveFirst sẽ sinh lỗi.
  2. Keyset(Trong ADO được gọi là dynaset)[adOpenKeyset]: Ta không thể tháy các bản ghi mới do người dùng khác thêm vào, nhưng khi họ sửa đổi hay xoá tin sẽ làm ảnh hưởng đến Recordset ta đang làm việc; đây là kiểu con trỏ hiệu quả nhất, đặc biệt là khi Recordset khá lớn.
  3. Dynamic ([adOpenDynamic]): Ta có thể thấy toàn bộ thay đổi trên dữ liệu do những người sử dụng khác thực hiện trong khi ta đang mở Recordset; đây là kiểu con trỏ ít hiệu quả nhất nhưng mạnh mẽ.
  4. Static(Trong DAO gọi là snapshot) [adOpenStatic]:  Bản sao của toàn bộ dữ liệu của một Recordset; kiểu này đặc biệt hữu dụng khi ta đang tìm kiếm dữ liệu hay khi thi hành báo cáo; kiểu con trỏ này rất hữu dụng cho các Recordset nhỏ.

* 4 loại trên được gọi là Curcor Type chẳng qua nó chỉ là tên gôi khác của Recordset

Thân mến!
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên


Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ