Kiểm tra quan hệ có thuộc về DataSet:

Một phần của tài liệu Giáo trình lập trình cơ sở dữ liệu (Trang 150 - 153)

- Về thái độ:

q. Kiểm tra quan hệ có thuộc về DataSet:

<DataSet>.Relations.Contains(<tên quan hệ>)

Phương thức trả về True nếu trong Relations có quan hệ tên <tên quan hệ>, ngược lại là False.

5.6.3 Ví dụ minh họa làm việc với DataSet

150 trình form sẽ thể hiện các thông tin như hình dưới đây. Người sử dụng có thể sử dụng các nút đầu, cuối, trước, sau hoặc bấm trực tiếp trên lưới để xem thông tin sản phẩm.

Hướng dẫn tạo form: Sử dụng công cụ datagridview để thêm lưới dg1 vào form. Các button Đầu, Trước, Sau, Cuối lần lượt có tên là btdau, btt, bta, btc. Các hộp textbox tương ứng với mã sản phẩm là txtmsp; tên sản phẩm là txttensp, đơn giá là txtdg; nhà cung cấp là txtncc.

Trong phần code chúng ta sẽ định nghĩa một đối tượng dataset có tên dst, tầm vực đơn thể class và một đối tượng dataAdapter có tên da1 lấy dữ liệu từ bảng sanpham của cơ sở dữ liệu De1 trên server HTC-VAIO\Huyen. Module khai báo kết nối và chuỗi kết nối được tạo như trong ví dụ 5.2b.

Để di chuyển con trỏ bản ghi ta sử dụng lớp có tên là BindingContext của form. BindingContext là đối tượng quản lý các BindingManagerBase. Các đối tượng kế thừa từ lớp Control đều có thể có BindingContext. Tuy nhiên, chỉ có Form và các điều khiển chứa các điều khiển khác như Groupbox, TabControl, Panel mới có thể tạo một BindingContext để quản lý các BindingManagerBase hiển thị dữ liệu của các điều khiển chứa trong nó.

Vị trí của con trỏ bản ghi được xác định hoặc thiết lập thông qua đối tượng Position của BindingContext bằng cách sử dụng một trong hai cú pháp sau:

Me.BindingContext()(datasource).Position Hoặc

Me.BindingContext()(datasource,datamember).Position Phần code của form:

151

Public Class FrmDataSet_1

Dim dst As New DataSet

Private Sub FrmDataSet_1_Load...

Dim lenh As String = "select masp as 'Mã SP', _ tensp as 'Tên SP',dongia as 'Đơn giá', _

nhacc as 'Nhà CC' from sanpham"

Dim da1 As New SqlClient.SqlDataAdapter(lenh, Chuoi_ket_noi) dst.Clear() 'xóa nội dung dataset

da1.Fill(dst, "sanpham") 'đổ DL vào bảng sản phẩm của dst

'khai báo thuộc tính cho lưới dg1

dg1.DataSource = dst

dg1.DataMember = "sanpham"

End Sub

Private Sub btdau_Click...

'chuyển con trỏ về bản ghi đầu tiên

Me.BindingContext()(dst, "sanpham").Position = 0 End Sub

Private Sub btt_Click ...

'chuyển con trỏ về bản ghi trước

Me.BindingContext()(dst, "sanpham").Position -= 1

End Sub

Private Sub bts_Click ...

'chuyển con trỏ về bản ghi tiếp theo

Me.BindingContext()(dst, "sanpham").Position += 1 End Sub

Private Sub btc_Click...

'chuyển con trỏ về bản ghi cuối cùng

Me.BindingContext()(dst, "sanpham").Position = _ Me.BindingContext()(dst, "sanpham").Count - 1 End Sub

'thủ tục in thông tin của sản phẩm khi thay đổi bản ghi hiện thời

Private Sub dg1_SelectionChanged...

Dim dong%

'lấy giá trị dòng hiện thời của lưới dg1

dong = dg1.CurrentCellAddress.Y

152

txtmsp.Text = dg1.Item(0, dong).Value txttensp.Text = dg1.Item(1, dong).Value txtdg.Text = dg1.Item(2, dong).Value txtncc.Text = dg1.Item(3, dong).Value End Sub

End Class

Visual Basic.NET cung cấp một tính năng có thể tự động chèn các DataAdapter và DataSet vào project.

Chẳng hạn trong ví dụ 5.9 trên chúng ta có thể thêm các điều khiển DataAdapter và DataSet như sau:

Một phần của tài liệu Giáo trình lập trình cơ sở dữ liệu (Trang 150 - 153)