04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

24
SẮP XẾP, TÌM KIẾM, LỌC DỮ LIỆU Chương 4

Upload: huynhtrong774129

Post on 13-Apr-2017

121 views

Category:

Education


0 download

TRANSCRIPT

Page 1: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

SẮP XẾP, TÌM KIẾM, LỌC DỮ LIỆU

Chương 4

Page 2: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

2

Nội dung

Sắp xếp, tìm kiếm, lọc trong DataTable

Lớp DataRelation

Lớp DataView

Page 3: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

3

Sắp xếp, tìm kiếm, lọc trong DataTable

Tìm 1 dòng Chọn một số dòng Cột tính toán Hàm nhóm trên cột

Page 4: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

4

Sắp xếp, tìm kiếm, lọc trong DataTableTìm 1 dòng

“Tìm 1 dòng”: Là lấy thông tin chi tiết của 1 ID hay khóa chính nào đó

Ví dụ:• Tìm thông tin chi tiết của một khách hàng có

mã khách hàng cho trước • Tìm thông tin chi tiết của hóa đơn có mã hóa

đơn cho trước

Page 5: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

5

Sắp xếp, tìm kiếm, lọc trong DataTableTìm 1 dòng

Database: Thực thi câu lệnh SQLSelect … From tenBangWhere CotKhoaChinh=giatri

DataTable: Dùng phương thức Find của DataTable.Rows (đối tượng của lớp DataRowCollection

Page 6: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

6

Sắp xếp, tìm kiếm, lọc trong DataTableTìm 1 dòng

Cú pháp phương thức FindDataRow DataRowCollection.Find(object key)

Chú ý• Hàm Find tìm giá trị key chỉ trên cột khóa

chính table phải có khóa chính • Để tạo khóa chính:

– Dùng DataSet có kiểu mạnh– Dùng hàm FillSchema – Tự tạo khóa bằng code

Page 7: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

7

Sắp xếp, tìm kiếm, lọc trong DataTableTìm 1 dòng

Ví dụ

myTable.PrimaryKey = new DataColumn[] { myTable.Columns["CustomerID"] };

string s = "primaryKeyValue";

DataRow foundRow = myTable.Rows.Find(s);

if (foundRow != null) MessageBox.Show(foundRow[1].ToString());else MessageBox.Show("A row with the primary key of " +

s + " could not be found");

Page 8: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

8

Sắp xếp, tìm kiếm, lọc trong DataTableTìm 1 dòng

DataSet kiểu mạnh: Cung cấp sẵn phương thức FindBy<TenCotkhoaChinh>(...)

NhanVienDataTable nv;…string s = "primaryKeyValue";

NhanVienRow foundRow = nv.FindByMaNV(s);

if (foundRow != null) MessageBox.Show(foundRow.MaNV);else MessageBox.Show("A row with the primary key of " +

s + " could not be found");

Page 9: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

9

Sắp xếp, tìm kiếm, lọc trong DataTableChọn một số dòng

“Chọn một số dòng”: truy vấn 1 số dòng từ 1 bảng cho trước theo 1 điều kiện nào đó

Database: Thực thi câu lệnh SQLSelect … From tenBangWhere tenCot=giatri

Select * From NhanVienWhere Ten like ‘Ta%’

Ví dụ:

Page 10: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

10

Sắp xếp, tìm kiếm, lọc trong DataTableChọn một số dòng

DataTable: Dùng phương thức Select của đối tượng DataTable

DataRow[] rows = tenBang.Select();DataRow[] rows = tenBang.Select(string dk);DataRow[] rows = tenBang.Select(string dk, string sort);DataRow[] rows = tenBang.Select(string dk, string sort,

DataRowState state);

DataRow[] rows = dt.Select("ho like '%Tr%'");DataRow[] rows = dt.Select("ho like '%Tr%'“, “ten asc”);

Ví dụ

Page 11: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

11

Sắp xếp, tìm kiếm, lọc trong DataTableCột tính toán

“Cột tính toán”: là cột được sinh ra từ các phép toán trên các cột khác

Database: Thực thi câu lệnh SQLSelect …, cot1 <pheptoan> cot2 … as TenCot, …From tenBang…

Ví dụSelect ProductID,Price,Tax,(Price+Price*Tax) as TotalPriceFrom Products

Page 12: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

12

Sắp xếp, tìm kiếm, lọc trong DataTableCột tính toán

DataTable: Chỉ ra expression (biểu thức) cho cột mới (thuộc tính Expression của lớp DataColumn)

DataTable table;…DataColumn col = new DataColumn(“TenCot”);col.Expression = “bieu thuc”;

table.Columns.Add(col);

Ví dụDataColumn totalPrice = new DataColumn(“Total Price”);totalPrice.Expression = “Price + Price*Tax”;

table.Columns.Add(col);

Page 13: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

13

Sắp xếp, tìm kiếm, lọc trong DataTableCột tính toán

Chú ý• Cột tính toán trên DataSet có kiểu làm tương tự• Điều kiện rất quan trọng để cột tính toán có thể

hoạt động được là các cột tham gia vào biểu thức phải có kiểu tương ứng với phép toán (các cột mặc định có kiểu string)

– Dùng DataSet có kiểu– Chỉ rõ kiểu bằng thuộc tính DataType của lớp

DataColumn

DataColumn col;…col.DataType = typeof(kieu);

Page 14: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

14

Sắp xếp, tìm kiếm, lọc trong DataTableHàm nhóm trên cột

Database: Thực thi câu lệnh SQL• Select min(…) From …• Select max(…) From …• Select avg(…) From …• Select count(…) From …• Select sum(…) From …

Select sum(price) From Products;

Page 15: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

15

Sắp xếp, tìm kiếm, lọc trong DataTableHàm nhóm trên cột

DataTable: Dùng phương thức Compute của lớp DataTable

object table.Compute(“biểu thức”, “bộ lọc”)

• “biểu thức”: giống mệnh đề select – Max(cột)– Min(cột)– Sum(cột)– Count(cột)– Avg(cột)

• “bộ lọc”: giống mệnh đề where

Page 16: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

16

Sắp xếp, tìm kiếm, lọc trong DataTableHàm nhóm trên cột

Ví dụ:int p;p = int.Parse(table.Compute(“sum(Price)”, “”);

Chú ý• Dùng lớp Convert hay hàm Parse để chuyển

sang kiểu dữ liệu tương ứng

int p;p = int.Parse(table.Compute(“sum(Price)”, “Price<100”);

Page 17: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

17

Lớp DataRelation

Database• Cho phép tạo quan hệ giữa các bảng• Cho phép kết (join) giữa các bảng

DataTable:• Cho phép tạo quan hệ giữa các bảng bằng đối

tượng DataRelation• Không cho phép kết (join) giữa các bảng• Cho phép lấy các “dòng con” của 1 dòng• Cho phép lấy “dòng cha” của 1 dòng

Page 18: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

18

Lớp DataRelation

Lấy các “dòng con” và “dòng cha”

DataRow[] rows;DataRow row;

rows = parentTable.Rows[index].GetChildRows(relation);row = childTable.Rows[index].GetParentRow(relation);

Tạo quan hệ (Chương 5)ds.Relations.Add(new DataRelation(…));

Page 19: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

19

Lớp DataView

Khái niệm DataView Tạo DataView Sắp xếp, tìm kiếm, lọc trong DataView Chuyển DataView thành DataTable

Page 20: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

20

Lớp DataViewKhái niệm DataView

Đối tượng DataView thay thế cho câu lệnh Select của đối tượng DataTable

Đặc điểm DataView• DataView có thể binding vào control (Kết quả

của câu lệnh Select thì không thể)• DataView chỉ cho phép làm việc trên 1 bảng –

không cho phép chọn 1 tập con các cột• Nếu DataTable gồm có các DataRows thì

DataView gồm có các DataRowViews

Page 21: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

21

Lớp DataViewTạo DataView

Các cách tạo DataViewDataView vw = new DataView();DataView vw = new DataView(table);DataView vw = new DataView(table, “ĐKLoc”,

“CotSXep”, ĐK RowState);

Trong đó• ĐKLoc: điều kiện lọc dữ liệu• CotSXep: Tên cột dùng để sắp xếp• ĐK RowState:

DataViewRowState.Unchanged, …

Page 22: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

22

Lớp DataView Sắp xếp, tìm kiếm, lọc trong DataView

Thuộc tính của DataView• RowFilter: Chỉ ra điều kiện lọc giống câu lệnh Select.

Ví dụ: “Ho like ‘Tr%’”• Sort: chỉ ra thứ tự sort. Ví dụ: “MaSV asc”

Phương thức của DataView• int Find(object): Trả về chỉ số dòng thỏa điều kiện tìm

kiếm• DataRowView[] FindRows(object hay object[]): Trả về

1 số DataRowView thỏa điểu kiện tìm kiếm • Chú ý: 2 Hàm này chỉ tìm kiếm trên các cột được chỉ ra

trong thuộc tính Sort của DataView

Page 23: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

23

Lớp DataViewChuyển DataView sang DataTable

Cú phápDataTable vw.ToTable()DataTable vw.ToTable("ten bang")DataTable vw.ToTable(boolean, mảng chuỗi cột)DataTable vw.ToTable("ten bang", boolean, mảng chuỗi cột)

Trong đó• boolean: true – loại bỏ những dòng trùng lắp

(distinct)

Page 24: 04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01

24

Tóm tắt chương 4