Tải bản đầy đủ (.ppt) (23 trang)

Chương 4 3 sắp xếp, tìm KIẾM, lọc dữ LIỆU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (146.75 KB, 23 trang )

SẮP XẾP, TÌM KIẾM,
LỌC DỮ LIỆU
Chương 4
2
Nội dung

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

Lớp DataRelation

Lớp DataView
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
4
Sắp xếp, tìm kiếm, lọc trong DataTable
Tì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
5
Sắp xếp, tìm kiếm, lọc trong DataTable
Tìm 1 dòng

Database: Thực thi câu lệnh SQL
Select …
From tenBang
Where CotKhoaChinh=giatri

DataTable: Dùng phương thức Find của
DataTable.Rows (đối tượng của lớp
DataRowCollection
6
Sắp xếp, tìm kiếm, lọc trong DataTable
Tìm 1 dòng

Cú pháp phương thức Find
DataRow 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
7
Sắp xếp, tìm kiếm, lọc trong DataTable
Tì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");
8
Sắp xếp, tìm kiếm, lọc trong DataTable
Tì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");
9
Sắp xếp, tìm kiếm, lọc trong DataTable
Chọ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 SQL
Select …
From tenBang
Where tenCot=giatri
Select *
From NhanVien
Where Ten like ‘Ta%’

Ví dụ:
10
Sắp xếp, tìm kiếm, lọc trong DataTable
Chọ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ụ
11
Sắp xếp, tìm kiếm, lọc trong DataTable
Cộ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 SQL
Select …, cot1 <pheptoan> cot2 … as TenCot, …
From tenBang


Ví dụ
Select ProductID,Price,Tax,(Price+Price*Tax) as TotalPrice
From Products
12
Sắp xếp, tìm kiếm, lọc trong DataTable
Cộ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);
13
Sắp xếp, tìm kiếm, lọc trong DataTable
Cộ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);
14
Sắp xếp, tìm kiếm, lọc trong DataTable
Hà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;
15
Sắp xếp, tìm kiếm, lọc trong DataTable
Hà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
16
Sắp xếp, tìm kiếm, lọc trong DataTable
Hà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”);
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
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(…));
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
20

Lớp DataView
Khá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
21
Lớp DataView
Tạo DataView

Các cách tạo DataView
DataView 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, …
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
23
Lớp DataView
Chuyển DataView sang DataTable

Cú pháp

DataTable 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)

×