Do trong chuyên mục Hàm, mình không thấy nút Tạo chủ đề, nên mình để tạm bài viết ở đây
Hàm SWITCH:
-
Công dụng: Lượng giá 1 danh sách biểu thức và trả về 1 trị hoặc biểu thức tương ứng đâu tiên trong danh sách có trị True
-
Cú pháp:
SWITCH(Biểu thức 1, Kết quả 1 [, Biểu thức 2, Kết quả 2…..[,Biểu thức n, Kết quả n]])
- *Switch xét các biểu thức lần lượt từ trái qua phải. Nếu biểu thức 1 là True thì Switch trả về kết quả 1
Nếu biểu thức 1 là False, Biểu thức 2 là True thì Switch trả về Kết quả 2
Nếu biểu thức 1 là True mà biểu thức 5 bị lỗi (Ví dụ chia cho 0) thì hàm sẽ báo lỗi chứ không trả về kết quả 1
Nếu mọi biểu thức đều là False thì hàm sẽ trả về giá trị Null
Muốn chọn giá trị còn lại khi mọi biểu thức đều False, (cũng giống như chọn tình huống còn lại (Else của lệnh IF; hoặc Case Else của Select Case) thì ta dùng hằng True cho biểu thức cuối cùng;
VD: Trong Query SWITCH(DiemTB<5, “Yếu”,
DiemTB>=5 and DiemTB <=6.5, “Trung Bình”,
DiemTB>6.5 and DiemTB <8, “Khá”,
DiemTB>=8 and DiemTB <9, “Giỏi”,
True, “Xuất xắc”)
************
Bài Toán Ví dụ:
Cập nhật tiền thưởng vào bảng tblBanhang cho nhân viên
-
Nếu bán dưới 1.000 sp thì được thưởng 500.000 đ
-
Nếu bán từ 1.000 sp đến dưới 2.000 sp thì được thưởng 1.000.000 đ
-
Nếu bán từ 2.000 sp đến dưới 3.000 sp thì được thưởng 3.000.000 đ
-
Nếu bán từ 3.000 sp đến dưới 4.000 sp thì được thưởng 5.000.000 đ
-
Từ 4.000 sp trở lên thì được thưởng 7.000.000 đ
[img]
[/img]
=> Nếu dùng Query Update:
Mã PHP:
UPDATE tblBanHang SET tblBanHang.TienThuong = Switch([doanhsoban]<1000,500000,[doanhsoban]>=1000 And [doanhsoban]<2000,1000000,[doanhsoban]>=2000 And [doanhsoban]<3000,3000000,[doanhsoban]>=3000 And [doanhsoban]<4000,5000000,True,7000000);
=> Nếu dùng Code VBA:
Mã PHP:
Function TinhThuong()
Dim rs As DAO.Recordset, soluong As Single
Set rs = CurrentDb.OpenRecordset("tblBanhang")
rs.MoveFirst
Do While Not rs.EOF
soluong = rs("doanhsoban")
rs.Edit
rs("TienThuong") = Switch(soluong < 1000, 500000, _
soluong >= 1000 And soluong < 2000, 1000000, _
soluong >= 2000 And soluong < 3000, 3000000, _
soluong >= 3000 And soluong < 4000, 5000000, _
True, 7000000)
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Function
=>>>>>>KẾT QUẢ:
[img]
[/img]