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


Sử dụng đối tượng Field để thao tác với các trường



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

13.3 Sử dụng đối tượng Field để thao tác với các trường


Đối tượng Field thể hiện một trường trong một cấu trúc dữ liệu. Các đối tượng TableDef, Recordset, Relation Index đều chứa các tập hợp trường.

Ta có thể lấy giá trị của một trường bằng cách kiểm tra giá trị của thuộc tính Value của một đối tượng Field . (Bởi vì thuộc tính Value là thuộc tính mặc định của đối tượng Field, ta chỉ cần tham chiếu đến đối tượng Field; ta không nhất thiết phải tham chiếu tường minh đến thuộc tính Value).


13.4Sửdụng các phương thức duyệt với đối tượng Recorset


Sau khi tạo xong một đối tượng Recordset, ta có thể dùng các phương thức duyệt để di chuyển qua từng mẩu tin trong recordset. Ta chủ yếu thực hiện điều này trong trường hợp cần lấy về dữ liệu từ mọi mẩu tin trong một recordset, mặc dù ta còn có thể sử dụng chúng để cho phép người sử dụng chỉ duyệt qua các mẩu tin.

Các phương thức duyệt của một đối tượng Recrdset gồm có:



  • MoveFirst : di chuyển đến mẩu tin đầu tiên trong recordset.

  • MoveNext : di chuyển đến mẩu tin kế tiếp trong recordset.

  • MovePrevious : di chuyển về mẩu tin trước đó trong recordset.

  • MoveLast: di chuyển đến mẩu tin cuối cùng trong recordset.

  • Move : di chuyển một số mẩu tin đã được chỉ định trước.

13.4.1Sử dụng BOF và EOF để duyệt qua Recordset


Ngoài các phương thức trên, đối tượng Recordset cung cấp 2 thuộc tính cho ta biết khi ta di chuyển về đầu hoặc về cuối recordset.

  • Thuộc tính EOF(end of file) là True khi ta di chuyển quá mẩu tin cuối cùng của recordset.

  • Thuộc tính BOF(begin of file) True khi ta di chuyển đến một vị trí trước mẩu tin thứ nhất trong recordset.



Hình 13.2 BOF và EOF trong một Recordset.

Do until EOF

‘perform action on the data or read values from fields

rs.MoveNext

Loop

13.4.2Dùng BOF và EOF để xác định một Recordset có rỗng hay không


Thuộc tính BOFEOF luôn có sẵn, thậm chí trong một recordset không có mẩu tin. Trên thực tế, cách tốt nhất để xem recordset có chứa mẩu tin hay không là kiểm tra giá trị của cả hai thuộc tính EOFBOF. Nếu cả BOFEOF đều là True, recordset không chứa mẩu tin.

13.4.3Dùng thuộc tính RecordCout để xác định số mẩu tin trong một recordset


Ta dùng thuộc tính RecordCount để xác định số mẩu tin trong một recordset. Nhưng lưu ý rằng giá trị của RecordCount sẽ không hợp lệ nếu ta chưa chuyển đến mẩu tin cuối cùng trong Recordset.

Bởi vì Jet xử lý truy vấn trên 2 giai đoạn. Giai đoạn đầu chỉ trả về dữ liệu đủ cho ứng dụng hoạt động mà không bị chậm trễ trong xử lý. Giai đoạn thứ hai thi hành bên dưới, trả về toàn bộ dữ liệu yêu cầu để truy vấn hoàn chỉnh. Jet thực hiện điều này chỉ nhằm mục tiêu tăng khả năng hoạt động, vì vậy, việc thi hành ứng dụng không bị cản trở trong khi chờ trả về một khối lượng dữ liệu lớn. Ta không điều khiển trực tiếp quá trình này, nhưng ta cần biết rằng nó tồn tại và cách thức làm việc với nó khi ta muốn biết chính xác có bao nhiêu mẩu tin đang có trong một recordset chẳng hạn.

Option Explicit

' References: Microsoft DAO 3.51 Object Library

Dim db As Database

Private Sub Form_Load()

Set db = OpenDatabase("..\..\db\novelty.mdb")

End Sub


Private Sub cmdCount_click()

Dim rs As Recordset

Set rs = db.OpenRecordset("tblInventory")

rs.MoveLast

MsgBox "There are " & rs.RecordCount & _

" items in inventory.", vbInformation

End Sub

Lưu ý : Nếu muốn xác định số mẩu tin là 0 dùng thuộc tính BOF EOF thay vì dùng RecordCount


13.4.4Dùng phương thức Edit để sửa đổi giá trị trong một mẩu tin


Ta có thể sửa đổi mâu tin hiện hành trong một đối tượng Recordset cập nhật được bằng cách dùng phương thức Edit Update của recordset. muống sửa đổi giá trị của một trường trong một Recordset, theo các bước sau :

  1. Dùng các phương thức duyệt của đối tượng Recordset để di chuyển đến mẩu tin cần sửa đổi.

  2. Thi hành phương thức Edit của recordset.

  3. Dùng tập hợp Fields của đối tượng Recordset để gán giá trị cho trường trong mẩu tin :

rs.Fields(“LastName”)= “Smith”

hoặc


rs!LastName = “Smith”

  1. Lưu mẩu tin vào cơ sở dữ liệu bằng cách dùng phương thức Update của Recordset.

13.4.5Sử dụng phương thức AddNew và Update để tạo mẩu tin mới


Ta có thể tạo một mẩu tin mới trong đối tượng Recordset cập nhật được bất kỳ bằng cách dùng phương thức AddNew Update. Tạo một mẩu tin mới trong một recordset là quá trình 3 bước:

  1. Thi hành phương thức AddNew của RecordSet. Nó thêm một mẩu tin mới, trắng vào cuối của recordset.

  2. Gán giá trị cho mẩu tin mới bằng cách sử dụng câu lệnh gán mà ta thường dùng với các trường cơ sở dữ liệu.

  3. Dùng phương thức Update để ghi mẩu tin vào cơ sở dữ liệu.

Option Explicit

' References: Microsoft DAO 3.51 Object Library

Private Enum TextBoxes

txtProduct = 0

txtCatalogNumber = 1

txtWholesalePrice = 2

txtRetailPrice = 3

End Enum


Private db As Database

Private rs As Recordset

Private x As Integer

Private Sub Form_Load()

Set db = OpenDatabase("..\..\DB\novelty.mdb")

Set rs = db.OpenRecordset("tblInventory")

For x = txtProduct To txtRetailPrice

TextBox(x).Enabled = False

Next x

cmdSave.Enabled = False



cmdNew.Enabled = True

End Sub


Private Sub cmdNew_Click()

' Create a new record

rs.AddNew

' Enable data entry controls

For x = txtProduct To txtRetailPrice

TextBox(x).Enabled = True

Next x

TextBox(txtProduct).SetFocus



cmdSave.Enabled = True

cmdNew.Enabled = False

End Sub

Private Sub cmdSave_Click()



' Map UI controls to fields

rs.Fields("Product") = TextBox(txtProduct)

rs.Fields("CatalogNumber") = TextBox(txtCatalogNumber)

rs.Fields("WholesalePrice") = TextBox(txtWholesalePrice)

rs.Fields("RetailPrice") = TextBox(txtRetailPrice)

' Commit data to database

rs.Update

' Clear out UI

For x = txtProduct To txtRetailPrice

TextBox(x).Text = ""

TextBox(x).Enabled = False

Next x


cmdSave.Enabled = False

cmdNew.Enabled = True

End Sub

13.4.6Sử dụng AppendChunk để nối dữ liệu vào một trường nhị phân


Ta có thể chứa dữ liệu nhị phân vào trong cơ sở dữ liệu. Dữ liệu nhị phân bao gồm hình ảnh hay tập tin âm thanh – nghĩa là bất kỳ những gì ta muốn chứa không chỉ là giá trị số hay chuỗi ký tự.

Lưu ý: Microsoft Access tham chiếu đến trường nhị phân như là trường OLE Object (đối tượng OLE). Ngoài ra, ta có thể dùng kỹ thuật AppendChunk này để nối thêm dữ liệu vào một trường memo cũng như trường nhị phân. Các phương thức thao tác trên trường nhị phân tồn tại gần như đồng dạng trong cả 3 mô hình đối tượng truy cập dữ liệu –DAO, RDO ADO.

Khi ta gán một giá trị cho trường nhị phân trong chương trình, ta cần thi hành một số bước bổ sung để lấy dữ liệu trong trường. Bởi vì dữ liệu nhị phân không có chiều dài cố định như các kiểu dữ liệu khác; một mẩu dữ liệu nhị phân có thể lên đến hàng mega- byte hoặc hơn.

Vì vậy, để đặt một mẩu dữ liệu nhị phân trong cơ sở dữ liệu, trước hết ta phải chia nó thành nhiều đoạn dữ liệu nhị phân, ta nối nó vào trường bằng cách dùng phương thức AppendChunk của đối tượng Field của recordset.

13.4.7Sử dụng phương thức Close để đóng Recordset


Ta thực hiện điều này khi chương trình hoàn tất sử dụng đối tượng Recordset:

rs.Close


Điểm đặc biệt quan trọng khi đóng một đối tượng Recordset là nếu đối tượng đặt một khoá (lock) trên bảng . Đóng một Recordset sẽ nhả khoá ứng dụng thiết lập trên đối tượng cơ sở dữ liệu, cho phép người sử dụng khác truy cập đến nó.

Lưu ý rằng trong DAO, Workspace, Connection, Database và QueryDef đều có phương thức Close




tải về 1.69 Mb.

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