SQL Server - 31


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 1

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 2

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)


STT

Đố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!

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)

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

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