<< Chapter < Page | Chapter >> Page > |
"SERVER=(local);UID=user;PWD=user;"
cnn1.Open
Set cmdByRoyalty = New ADODB.Command
Set cmdByRoyalty.ActiveConnection = cnn1
cmdByRoyalty.CommandText = "byroyalty"
cmdByRoyalty.CommandType = adCmdStoredProc
cmdByRoyalty.CommandTimeout = 15
' Định nghĩa đối số đầu vào cho thủ tục lưu trữ
intRoyalty = Trim(InputBox( "Enter royalty:"))
Set prmByRoyalty = New ADODB.Parameter
prmByRoyalty.Type = adInteger
prmByRoyalty.Size = 3
prmByRoyalty.Direction = adParamInput
prmByRoyalty.Value = intRoyalty
cmdByRoyalty.Parameters.Append prmByRoyalty
' Tạo một recordset bằng cách thi hành đối tượng Command.
Set rstByRoyalty = cmdByRoyalty.Execute()
' Mở bảng Authors để lấy tên hiển thị
Set rstAuthors = New ADODB.Recordset
rstAuthors.Open "authors", cnn1, , , adCmdTable
Debug.Print "Authors with "&intRoyalty&_
" percent royalty"
Do While Not rstByRoyalty.EOF
strAuthorID = rstByRoyalty!au_id
Debug.Print , rstByRoyalty!au_id&", ";
rstAuthors.Filter = "au_id = '"&_
strAuthorID&"'"
Debug.Print rstAuthors!au_fname&“ - “&_
rstAuthors!au_lname
rstByRoyalty.MoveNext
Loop
rstByRoyalty.Close
rstAuthors.Close
cnn1.Close
End Sub
Dùng đối tượng Field và tập hợp Fields khi ta muốn truy cập giá trị của một trường của một Recordset nào đó, kỹ thuật này tương tự như đối với DAO.
Dịch vụ dữ liệu từ xa của ADO
Đây là kỹ thuật sử dụng thư viện Remote Data Service (RDS) để vận chuyển ADO Recordset từ server đến máy tính client Recordset kết quả được lưu ở máy client và chúng được ngắt kết nối đến server.
RDS là một phần của Microsoft Data Access Components (MDAC). Các thông tin về RDS có thể tìm thấy ở trang (External Link) . RDS gồm 2 phần chính:
- RDS 1.5 server: đi kèm khi cài đặt Internet Information Server (IIS) 4.0.
- RDS 1.5 client đi kèm khi cài đặt Internet Explorer (IE) 4.0.
Thư viện ADODB gồm các thành phần hoạt động chủ yếu phía server (server side) như các đối tượng Connection, Command, Error, Parameters ... Sẽ thật hiệu quả nếu sử dụng các thành phần này giao tiếp với cơ sở dữ liệu. Tuy nhiên trong trường hợp sử dụng các chức năng cần phải có ở phía client thì ta cần phải phân phối kèm theo một số tập tin và sử dụng ODBC cho mỗi máy client. Đối tượng ADODB Recordset không thể phân phối với các thành phần của RDS Client. Thay vào đó thư viện đối tượng Microsoft ActiveX Data Objects RecordSet (ADOR) được sử dụng. Thư viện này gồm các thành phần hoàn toàn nằm ở phía client và cho phép ta có các thao tác trên một recordset thật sự phía client. ADOR không có các đối tượng Connection, Command, Error, hay Parameters. ADOR có các chức năng cho phép phân phối recordset với các thành phần RDS client.
Một ADO Recordset không thể vận chuyển thông qua giao thức http. Thay vào đó RDS được sử dụng để nhận và tương tác dữ liệu từ xa thông qua http. Một proxy RDS được sử dụng để kiểm soát từ xa một ADOR Recordset ngắt kết nối truyền thông qua giao thức http. Như vậy RDS là vật chứa (container) cho phép lưu trữ và truy cập từ xa các ADOR Recordset.
Ta có thể dùng đối tượng DataControl của RDS để nhận về đối tượng Recordset của ADO từ Internet.
Để có thể sử dụng kỹ thuật này, ta cần tham khảo các thuộc tính chủ yếu của đối tượng DataControl.
- Thuộc tính Connect:
DataControl.Connect = "DSN=DSNName;UID=usr;PWD=pw;"
- Thuộc tính Server: Xác định máy chủ Web chứa nguồn dữ liệu bao gồm tên và giao thức nối kết.
- Thuộc tính SQL: Là câu lệnh truy vấn để nhận về đối tượng Recordset
DataControl.SQL = "QueryString"
- Thuộc tính ExecuteOptions: xác định việc thi hành các câu lệnh truy vấn một cách đồng bộ hay không, các giá trị là một trong hai giá trị sau đây:
Hằng | Mô tả |
adcExecSync | Thi hành đồng bộ |
adcExecAsync | Mặc định, Thi hành không đồng bộ. |
- Thuộc tính ReadyState: Xác định trạng thái của điều khiển.
Giá trị | Mô tả |
adcReadyStateLoaded | Câu truy vấn hiện hành vẫn đang còn thực hiện và chưa có một dòng nào được trả về. Đối tượng Recordset của RDS.DataControl chưa thể sử dụng. |
adcReadyStateInteractive | Tập hợp dòng ban đầu đã được trả về và chứa trong đối tượng Recordset, các dòng tiếp theo vẫn đang được trả về. |
adcReadyStateComplete | Tất cả các dòng đều đã được chứa trong đối tượng Recordset. |
- Phương thức Refresh: thi hành câu truy vấn.
- Thuộc tính Recordset: trả về Recordset kết quả.
Recordset = DataControl.Recordset
- Phương thức DoEvents: Đây là hàm của VB, nó sẽ trả điều khiển cho hệ điều hành thực hiện các quá trình khác.
Notification Switch
Would you like to follow the 'Giáo trình visual basic' conversation and receive update notifications?