Truy Xuất Dữ Liệu Thông Qua Data Control

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.

5.4. Truy xuất dữ liệu thông qua Data Control

Để làm việc với CSDL ta có thể dùng điều khiển Data. Điều khiển này cho phép ta truy cập đến một CSDL bất kì trong Windows. Để có thể truy cập đến CSDL ta thực hiện như sau:

Trong hộp công cụ ToolBox, ta chọn điều khiển Data và đặt nó lên Form.

Xác định các thuộc tính cho điều khiển.

Viết các lệnh để truy xuất dữ liệu.


5.4.1. Các thuộc tính

Điều khiển Data có các thuộc tính sau:

Name: Tên của điều khiển, nếu ta không đặt lại tên thì tên của nó là Data1, Data2...

Connect: Thuộc tính này qui định môi trường CSDL mà ta muốn truy cập, môi trường ngầm định là Access. Ta có thê thay đổi thuộc tính này để kết nối đến các CSDL khác như Foxpro, Excel, Dbase v.v...

DataBase: Tên CSDL mà ta muốn truy cập. Muốn làm việc với CSDL nào đó ta phải gán tên cùng đường dẫn của nó cho thuộc tính này. Các CSDL ngầm định là được tạo bởi Access. Các CSDL trong Access có đuôi là *.mdb. Ví dụ ta chọn QTKD.mdb. Để gán cho điều khiển một CSDL nào đó khi thiết kế thì tại thuộc tính này ta kích nút Build và chọn CSDL trong một thư mục nào đó. Nếu khi thi hành đề án mà ta muốn thay đổi CSDL thì ta có thể dùng lệnh sau:

Data1.DataBase = TenCSDL

Trong đó TenCSDL là một chuỗi kí tự chứa đường dẫn và tên của CSDL cần mở. Ví dụ:

Data1.DataBase = “D:DH SPKT NDQTKD.mdb”

RecordSource: Sau khi chọn CSDL ta phải chọn một bảng cụ thể trong CSDL. Mỗi CSDL có tập hợp các bảng khác nhau. Ta chỉ việc mở thuộc tính này và chọn một bảng nào đó. Nếu không muốn chọn ta có thể bỏ trống thuộc tính này và viết câu lệnh sau:

Data1.RecordSource = TableName

Trong đó Data1 là tên của điều khiển, còn TableName là tên của một bảng nào đó trong CSDL. Ngoài ra ta có thể gán cho thuộc tính này một biểu thức là một câu lệnh SQL.

RecordSetType: Xác định kiểu tệp dữ liệu của điều khiển dữ liệu. Thuộc tính này có thể nhận một trong 3 giá trị sau: Table, Dynaset, SnapShot. Nếu ta chọn thuộc tính này là Table thì ta có thể thao tác với một bảng của CSDL. Nếu ta chọn Dynaset thì ta có thể thao tác với một Query thành lập từ nhiều bảng của CSDL và có thể thay đổi tập dữ liệu (RecordSet). Còn nếu ta chọn SnapShot thì ta có thể làm việc với tệp các bảng dữ liệu tĩnh mà không thay đổi được chúng. Giá trị ngầm định của thuộc tính này là Dynaset.

ReadOnly: Thuộc tính này có 2 giá trị là True và False (ngầm định). Nếu chọn True thì ta không thể cập nhật được dữ liệu của RecordSet.

Visible: Thuộc tính này cho phép (True) hay không cho phép (False) hiện ra điều khiển dữ liệu. Nếu ta không muốn điều khiển dữ liệu hiện ra khi thi hành thì ta gán thuộc tính này là False.

Exclusive: Thuộc tính này dùng để cho phép (False) hay không cho phép (True) nhiều người dùng CSDL hiện tại.

5.4.2. Cách sử dụng điều khiển Data

a) Thao tác với CSDL

Khi thay đổi một CSDL (thay DataBaseName, thay Connect) hoặc thay một bảng mới (thay đổi tính chất của RecordSource) hoặc thay đổi tính chất của ReadOnly, Exclusive... thì ta phải kích hoạt phương pháp Refresh của điều khiển dữ liệu như sau:

Data1.Refresh

Sự thay đổi trong CSDL của điều khiển dữ liệu được thực hiện bằng lệnh trong thời gian thực hiện project. Sự thay đổi được thực hiện bằng cách gán các thuộc tính DataBaseName, Connect, RecordSetType, RecordSource của Data Control bằng một giá trị mới. Mỗi khi có sự thay đổi như thế thì phải Refresh( ) lại điều khiển dữ liệu.

b) Đối tượng RecordSet

Tập hợp các dữ liệu được chọn thông qua thuộc tính RecordSource được gọi là RercodSet của điều khiển dữ liệu. Hay nói cách khác RecordSet là tập dữ liệu đã chọn của điều khiển dữ liệu. Dù thuộc tính RecordSource có thay đổi như thế nào thì tập dữ liệu của điều khiển dữ liệu vẫn là RecordSet. Đây là một đối tượng quan trọng nhất của điều khiển dữ liệu.

Điều khiển CSDL chính là thực hiện thao tác trên RecordSet. Để điều khiển RecordSet ta sử dụng các phương pháp và thuộc tính của nó.

Sau đây ta xét một số phương thức và thuộc tính của nó:

Thuộc tính BOF và EOF

Các thuộc tính EOF và BOF của RecordSet cho ta biết trạng thái cuối hay đầu của RecordSet. Nếu con trỏ đang ở cuối File thì giá trị RecordSet.EOF = True. Còn nếu con trỏ đang ở đầu RecordSet thì giá trị RecordSet.BOF = True.

Ví dụ:

If not Data1.RecordSet.BOF Then Data1.RecordSet.MovePrevious

hoặc

If not Data1.RecordSet.EOF Then Data1.RecordSet.MoveNext

Các phương thức di chuyển trong CSDL

Muốn di chuyển trong CSDL ta sử dụng các phương pháp sau:

MoveFirst: Chuyển đến đầu RecordSet

MoveLast: Chuyển đến cuối RecordSet MovePrevious: chuyển đến bản ghi trước RecordSet MoveNext: Chuyển đến bản ghi sau RecordSet

Đối tượng Fields

RecordSet có các đối tượng con khác nhau trong đó có một đối tượng quan trọng và hay được dùng đó là đối tượng Fields. Đối tượng này của RecordSet cho phép ta truy cập đến từng trường của bảng dữ liệu. Để trỏ tới trường thứ i nào đó ta viết Fields(i). Số hiệu của các trường bắt đầu từ 0 đến n-1, trong đó n là số lượng các trường. Ngoài ra ta có thể thay đổi số hiệu trường bằng tên trường. Ví dụ trường số 1 có tên là Makh thì 2 lệnh sau là tương đương.

Print Data1.RecordSet.Fields(1)

Print Data1.RecordSet.Fields(“Makh”)

Cả 2 lệnh này đều cho ta nội dung trường “Makh” của bản ghi hiện thời

Thuộc tính RecordCount

Số lượng các bản ghi trong một bảng được lưu trữ trong thuộc tính RecordCount.

Số hiệu các bản ghi được bắt đầu từ 0 đến RecordCount – 1

Sửa và bổ sung dữ liệu

Để thêm mới, bổ sung, sửa chữa các bản ghi của CSDL ta dùng các phương thức sau:

AddNew: Thêm bản ghi mới vào cuối bảng. Khi thực hiện phương pháp này thì ta sẽ có một bản ghi trống và ta có thể bổ sung dữ liệu cho bản ghi này.

Edit: Cho phép sửa bản ghi hiện hành. Sau phương pháp này ta có thể thay đổi nội dung của bản ghi hiện tại.

Update: Cập nhật bản ghi vừa được tạo hoặc sửa chữa.

Delete: Xoá bản ghi hiện hành. Sau khi xoá bản ghi ta phải di chuyển đến bản ghi khác bằng các phương pháp di chuyển đã nêu ở trên.

Close: Dùng để đóng một bảng.

5.4.3. Ví dụ minh hoạ

Tạo cơ sở dữ liệu qltv.mdb gồm 3 bảng: Sach(Mas, Tens, Tacgia, Nhaxb, Namxb) Docgia(Madg, Tendg, Diachi, Dienthoai) Muontra(Madg, Mas, Ngaym, Ngayht, Ngayt)

sử dụng Visual Data Manager. Sau đó, lập một chương trình gồm 3 form: Sách- thao tác trên bảng Sach, Độc giả- thao tác trên bảng Docgia, Mượn trả- thao tác trên bảng Muontra theo mẫu:

Yêu cầu  Form Sách tạo bằng công cụ tạo form tự động  Form Độc giả 1


Yêu cầu  Form Sách tạo bằng công cụ tạo form tự động  Form Độc giả 2


Yêu cầu  Form Sách tạo bằng công cụ tạo form tự động  Form Độc giả 3

Yêu cầu:

Form Sách tạo bằng công cụ tạo form tự động

Form Độc giả sử dụng công cụ Data ở mức độ đơn giản

Form Mượn trả lập trình sử dụng các thuộc tính, phương thức của điều khiển Data, đối tượng Recordset, đối tượng Fields

Giải:

Bước 1.Tạo cơ sở dữ liệu qltv.mdb sử dụng Visual Data Manager (VisData)

Bước 2. Tạo các bảng: Sach, Docgia, Muontra, trong đó: Mas là khoá chính của bảng Sach, Madg là khoá chính của bảng Docgia, Mas và Madg là khoá ngoại của bảng Muontra. Khi tạo xong cơ sở dữ liệu qltv.mdb, ta thu được kết quả sau trong cửa sổ VisData.



Bước 3 Tạo form Sach sử dụng công cụ Data Form Designer Từ cửa sổ VisData 4

Bước 3. Tạo form Sach sử dụng công cụ Data Form Designer

- Từ cửa sổ VisData chọn Utility/Data Form Designer

- Trên cửa sổ Data Form Designer, nhập tên form trong mục Form name, chọn bảng sach trong mục RecordSource, đưa tất cả các trường trong bảng Sach trong mục Available Fields sang mục Included Fields, như hình sau:

Nhấn nút Build Form sau đó nhấn Close ta thu được form sau Gán lại giá trị 5

- Nhấn nút Build Form, sau đó nhấn Close ta thu được form sau

Gán lại giá trị thuộc tính Caption của form frmSach và các label ta thu được 6

- Gán lại giá trị thuộc tính Caption của form frmSach và các label, ta thu được form sau:

Bước 4 Tạo form Độc giả và lập trình sự kiện cho các nút lệnh  Từ menu 7

Bước 4. Tạo form Độc giả và lập trình sự kiện cho các nút lệnh

Từ menu hệ thống chọn Project/Add Form/Open để bổ sung một form mới vào project hiện hành, sau đó bổ sung vào form các điều khiển và gán cho một số điều khiển các giá trị theo bảng sau:

TT

Điều khiển

Thuộc tính

Giá trị

Ghi

chú

1

Form

Name

frmDocgia


Caption

Độc giả

2

CommandButton

Name

cmdfirst


Caption

Về đầu

3

CommandButton

Name

cmdpre


Caption

Về trước

4

CommandButton

Name

cmdadd


Caption

Thêm

5

CommandButton

Name

cmdedit


Caption

Sửa

6

CommandButton

Name

cmddel


Caption

Xóa

7

CommandButton

Name

cmdnext


Caption

Về sau

Có thể bạn quan tâm!

Xem toàn bộ 248 trang tài liệu này.

CommandButton

Name

cmdlast


Caption

Về cuối

9

Label

Caption

Mã độc giả


10

Label

Caption

Họ và tên


11

Label

Caption

Địa chỉ


12

Label

Caption

Điện thoại


8




13


Data

Databasename

D:Bai tap VB

QLTVqltv.mdb


Name

DataDocgia

RecordSource

Docgia

Visible

False


14


TextBox

Name

txtmadg


DataSource

DataDocgia


DataField

Madg



15


TextBox

Name

Txttendg


DataSource

DataDocgia


DataField

Tendg



16


TextBox

Name

txtDiachi


DataSource

DataDocgia


DataField

Diachi



17


TextBox

Name

txtDienthoai


DataSource

DataDocgia


DataField

Dienthoai


Sau khi thiết lập giá trị cho các thuộc tính ta thu được form kết quả như sau:

 Lập trình sự kiện cho các nút lệnh Mở cửa sổ Code của form frmDocgia và 8

Lập trình sự kiện cho các nút lệnh: Mở cửa sổ Code của form frmDocgia và gò vào các dòng lệnh sau:

Private Sub cmdAdd_Click()

If cmdadd.Caption = "Thêm" Then datadocgia.Recordset.AddNew cmdadd.Caption = "Lưu" txtmadg.SetFocus

Else

datadocgia.UpdateRecord

datadocgia.Recordset.Bookmark = datadocgia.Recordset.LastModified cmdadd.Caption = "Thêm"

End If End Sub

„-------------------------------------------------------------------------------

Private Sub cmddel_Click()

Dim traloi As Byte

traloi = MsgBox("Bạn muốn xoá bản ghi này", vbYesNo + vbQuestion, "Xoá dữ liệu")

If traloi = 6 Then

If cmddel.Caption = "Xoá" Then datadocgia.Recordset.Delete cmddel.Caption = "Lưu"

Else

datadocgia.UpdateRecord cmddel.Caption = "Xoá" cmdnext_Click

End If End If

End Sub

„---------------------------------------------------------------------------------------Private

Sub cmdedit_Click()

If cmdedit.Caption = "Sửa" Then datadocgia.Recordset.Edit cmdedit.Caption = "Lưu" txtmadg.SetFocus

Else datadocgia.UpdateRecord

datadocgia.Recordset.Bookmark = datadocgia.Recordset.LastModified cmdedit.Caption = "Sửa"

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 16/07/2022