tượng DataTable; khi ta sử dụng phương thức Fill của lớp SqlDataAdapter để thêm dữ liệu vào DataSet, như vậy ta đã thực sự đang tạo một đối tượng DataTable bên trong DataSet này. DataView cung cấp view thông dụng của DataTable; ta có thể sắp xếp và lọc dữ liệu, như ta thực hiện trên truy vấn SQL.
Ta có thể tạo một DataView từ dữ liệu được chứa trong DataTable mà đang chỉ chứa dữ liệu mà ta muốn hiển thị. Ví dụ, nếu dữ liệu trong DataTable chứa tất cả các thí sinh được sắp xếp bởi họ tên, ta có thể tạo một DataView chứa tất cả khách hàng được sắp xếp bởi họ tên. Hoặc, nếu muốn, ta có thể tạo một DataView chỉ chứa một vài thí sinh chứa tên nào đó.
Mặc dù ta có thể hiện thị dữ liệu trong DataView trong nhiều cách khác nhau từ DataTable cơ bản, nó vẫn là cùng dữ liệu. Các thay đổi với DataView sẽ ảnh hưởng tới DataTable cơ bản một cách tự động và các thay đổi với DataTable cơ bản tự động ảnh hưởng bất kỳ đối tượng DataView mà đang hiển thị DataTable đó. Kiến trúc cho một lớp DataView khởi tạo một thể hiện mới của lớp DataView và lấy DataTable là một đối số.
Cú pháp:
Dim ODV = New DataView(ODS.Tables(“Name_Table”)) Trong đó:
- ODV là đối tượng DataView
- ODS là đối tượng DataSet
- Name_Table: Tên bảng
Ví dụ: Tạo một đối tượng DataView và khởi tạo nó đang sử dụng bảng Thisinh từ DataSet có tên là ODS.
Dim ODV = New DataView(ODS.Tables(“Thisinh”)) Các thuộc tính của DataView:
- Thuộc tính Sort: Được dùng để sắp xếp dữ liệu trong DataView bằng cách chỉ định cột hoặc các cột mà ta muốn sắp xếp.
Cú pháp:
ODV.Sort=”Name_Columns ASC/DESC”
Ví dụ: Sắp xếp danh sách thí sinh theo chiều giảm dần của điểm toán, điểm lý, điểm hóa.
ODV.Sort = “dtoan, dly, dhoa DESC”
- Thuộc tính RowFilter: Xác định một điều kiện lọc mà có thể áp dụng được trên DataView, chỉ những hàng thỏa mãn điều kiện sẽ được giữ lại trên DataView. Cú pháp cũng tương tự như mệnh đề SQL WHERE. Ta có thể sử dụng các phép toán logic And và Or trong biểu thức điều kiện
Cú pháp:
ODV.RowFilter =”Expression_Condition”
Trong đó: Expression_Condition là biểu thức điều kiện. Ví dụ: Đưa ra danh sách thí sinh có họ “Lê” ODV.RowFilter =”Hoten like „Lê%‟”
Các phương thức:
- Phương thức Find:
Nếu ta muốn tìm kiếm cho một hàng dữ liệu trong DataView, ta sử dụng phương thức Find. Phương thức Find tìm kiếm dữ liệu trong cột khóa sắp xếp của DataView. Nhưng trước khi gọi phương thức Find, ta phải sắp xếp DataView trên cột chứa dữ liệu mà ta muốn tìm kiếm. Cột trong DataView đã được sắp xếp trở thành cột khóa sắp xếp trong đối tượng DataView.
Cú pháp:
intPosition = objDataView.Find(“Value”) Trong đó:
+ intPosition: là vị trí tìm thấy, có giá trị nguyên.
+ Value: Giá trị cần tìm
Phương thức Find tìm kiếm và trả về vị trí của bản ghi trong DataView. Trong trường hợp ngược lại, DataView trả về giá trị Null nếu không tìm thấy. Nếu phương thức Find tìm thấy một bản khớp thì nó sẽ dừng tìm kiếm và trả về vị trí của bản ghi đầu tiên tìm thấy. Nếu ta muốn có nhiều hơn một bản ghi trong Data Store, ta phải lọc dữ liệu trong DataView, dữ liệu của ta sẽ được hiển thị. Phương thức Find không phân biệt dạng chữ hoa, chữ thường. Phương thức Find tìm chính xác từng cụm từ, nghĩa là ta phải nhập toàn bộ cụm từ đó.
Ví dụ: Tìm thí sinh có họ tên là Nguyễn Văn An. Dim intPosition as Integer
ODV.Sort = “Hoten”
intPosition = objDataView.Find(“Nguyễn Văn An”)
DataView có thể được sắp xếp trên nhiều hơn một cột tại cùng một thời điểm. Nếu ta muốn sắp xếp nhiều hơn một cột, ta cần cung cấp một mảng các giá trị để phương thức Find thay cho chỉ một giá trị đơn.
Ví dụ: Tìm kiếm thí sinh „Nguyễn Văn An‟ quê quán „Nam Định‟. Dim intPosition As Integer
Dim arrValues(1) As Object objDataView.Sort = “Hoten,quequan” arrValues(0)= “Nguyễn Văn An”
arrValues(1) = “Nam Định”
intPosition = objDataView.Find(arrValues)
8.2. Ví dụ minh họa
Thiết kế và lập trình các Form cho bài toán quản lý điểm trên nền Visual Basic.Net. Trên form có các nút điều khiển: Di chuyển, tìm kiếm, thêm, sửa, xóa, thoát.
Ví dụ 1: Thiết kế và lập trình Form quản lý thông tin của sinh viên theo mẫu
sau
Hình 8.6. Form quản lý thông tin sinh viên
Bước 1: Chọn File/New Projects/Visual Basic/Windows/Windows Forms Application/Nhập tên dự án tại hộp Name.
Hình 8.7. Cửa sổ tạo dự án
Bước 2: Tạo và thiết kế Form Quản lý thông tin sinh viên (frm_sinhvien)
Đối tượng | Thuộc tính | Giá trị | |
1 | Form | Name | Frm_Sinhvien |
Text | Quản lý thông tin sinh viên | ||
2 | Lable | Text | Mã sinh viên |
3 | Lable | Text | Họ tên |
4 | Lable | Text | Ngày sinh |
5 | Lable | Text | Giới tính |
6 | Lable | Text | Quê quán |
7 | Lable | Text | Mã lớp |
8 | Text Box | Name | Txt_masv |
9 | Text Box | Name | Txt_hoten |
10 | Text Box | Name | Txt_ns |
11 | Text Box | Name | Txt_gt |
12 | Text Box | Name | Txt_qq |
13 | Text Box | Name | Txt_mal |
14 | Button | Name | Btn_MoveFirst |
Text | Về đầu | ||
15 | Button | Name | Btn_MovePre |
Text | Trước | ||
16 | Button | Name | Btn_MoveNext |
Text | Tiếp | ||
17 | Button | Name | Btn_MoveLast |
Text | Về cuối | ||
18 | Button | Name | Btn_Add |
Text | Thêm | ||
19 | Button | Name | Btn_Update |
Text | Sửa | ||
20 | Button | Name | Btn_Delete |
Text | Xóa | ||
21 | Button | Name | Btn_Close |
Text | Thoát |
Có thể bạn quan tâm!
- Nhập Thông Số Cho Tài Khoản Trong Windows
- Các Mô Hình Kết Nối Ứng Dụng Đến Sql Server
- Mối Liên Hệ Giữa Lớp Command Và Các Lớp Khác
- Form Sắp Xếp Và Tìm Kiếm Sinh Viên
- Xác Định Các Thông Số Của Cơ Sở Dữ Liệu
- Xác Định Các Thông Số Của Khóa Ngoại
Xem toàn bộ 323 trang tài liệu này.
Bước 3: Tạo kết nối bằng file config
- Tạo bằng notepad
server =Admin-0812qix; initial catalog =QLDiem; Integrated Security=true
form.
- Lưu bằng đuôi *.ini với tên là config trong thư mục binDebug của ứng dụng. Bước 4: Lập trình các sự kiện và thủ tục
- Khai báo của tên miền: Imports System.Data
Imports System.Data.SqlClient Imports System.Configuration
- Khai báo các đối tượng sử dụng trong phạm vi của form: Dim cnn As New SqlConnection()
Dim da As New SqlDataAdapter Dim oDS As DataSet
Dim oDV As DataView
- Thủ tục gán giá trị của các trường trong bảng sinh viên lên các đối tượng trên
Private Sub Display(ByVal i As Integer)
txt_masv.Text = tb.Rows(i).Item(0) txt_hoten.Text = tb.Rows(i).Item(1) txt_ns.Text = tb.Rows(i).Item(2) txt_gt.Text = tb.Rows(i).Item(3) txt_qq.Text = tb.Rows(i).Item(4) txt_mal.Text = tb.Rows(i).Item(5)
End Sub
- Thủ tục hiện thị thông tin sinh viên lên trên form. Private Sub DisplayTable()
Dim da As New SqlDataAdapter("Select * from sinhvien", cn) da.Fill(tb)
n = tb.Rows.Count i = 0
Display(i) Btn_MoveFirst.Enabled = False Btn_MovePre.Enabled = False
End Sub
- Thủ tục Load của form.
Private Sub frm_sinhvien_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cnnstr As String
cnnstr = My.Computer.FileSystem.ReadAllText("config.ini")
cn.ConnectionString = cnnstr cn.Open()
DisplayTable() End Sub
- Sự kiện click của nút Về đầu
Private Sub Btn_MoveFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_MoveFirst.Click
If n <> 0 Then i = 0 Display(i)
Btn_MoveNext.Enabled = True Btn_MoveLast.Enabled = True Btn_MovePre.Enabled = False Btn_MoveFirst.Enabled = False
End If End Sub
- Sự kiện click của nút Về cuối
Private Sub Btn_MoveLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_MoveLast.Click
If n > 0 Then i = n - 1 Display(i)
Btn_MoveNext.Enabled = False Btn_MoveLast.Enabled = False Btn_MovePre.Enabled = True Btn_MoveFirst.Enabled = True
End If
End Sub
- Sự kiện click của nút Trước
Private Sub Btn_MovePre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_MovePre.Click
If i > 0 Then i = i - 1 Display(i)
Btn_MoveNext.Enabled = True Btn_MoveLast.Enabled = True
If i = 0 Then Btn_MovePre.Enabled = False Btn_MoveFirst.Enabled = False
End If End If
End Sub
- Sự kiện click của nút Tiếp
Private Sub Btn_MoveNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_MoveNext.Click
If i < n - 1 Then i = i + 1 Display(i)
Btn_MoveFirst.Enabled = True Btn_MovePre.Enabled = True If i = n - 1 Then
Btn_MoveLast.Enabled = False Btn_MoveNext.Enabled = False
End If End If
End Sub
- Thủ tục thiết lập giá trị của các đối tượng Text box trở thành trống Private Sub Set_Null()
txt_masv.Text = "" txt_hoten.Text = "" txt_gt.Text = "" txt_ns.Text = "" txt_qq.Text = "" txt_mal.Text = ""
End Sub
- Thủ tục thiết lập giá trị của các nút lệnh Private Sub Set_Enabled(ByVal lc As Boolean)
Btn_Delete.Enabled = lc Btn_MoveFirst.Enabled = lc Btn_MoveLast.Enabled = lc Btn_MoveNext.Enabled = lc Btn_MovePre.Enabled = lc
End Sub
- Sự kiện click của nút Thêm
Private Sub Btn_Add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Add.Click
Dim sqlStr As String = "insert into sinhvien(Masv,hoten,ns, gt,diachi,malop) values (@Masv,@hoten,@ns, @gt,@diachi,@mal) "
Dim cd As New SqlCommand(sqlStr, cn) If Btn_Add.Text = "Thêm" Then
Btn_Add.Text = "Lưu" Btn_Update.Text = "Hủy" Set_Null() Set_Enabled(False)
Else
Btn_Add.Text = "Thêm" Btn_Update.Text = "Sửa"
Set_Enabled(True)
cd.Parameters.Add("@masv", SqlDbType.VarChar).Value
= txt_masv.Text
cd.Parameters.Add("@hoten", SqlDbType.VarChar).Value = txt_hoten.Text cd.Parameters.Add("@ns", SqlDbType.Date).Value
= DateAndTime.DateValue(txt_ns.Text) cd.Parameters.Add("@gt", SqlDbType.Varchar).Value
= txt_gt.Text
cd.Parameters.Add("@diachi", SqlDbType.VarChar).Value = txt_qq.Text cd.Parameters.Add("@mal", SqlDbType.Varchar).Value
= txt_mal.Text cd.ExecuteNonQuery() DisplayTable()
End If End Sub
- Sự kiện click của nút Sửa
Private Sub Btn_Update_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Update.Click
Dim sqlstr As String = "update sinhvien set hoten=@hoten,ns=@ns, gt=@gt,diachi=@diachi, malop=@mal where masv=@masv"
Dim cd As New SqlCommand(sqlstr, cn)