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

Bài giảng lập trình trực quan bài 6 tính toán thống kê

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 (653.73 KB, 10 trang )

1, Mục đích :
- Dùng khi muốn thống kê trên RecordSet : Tổng, Max, Min…
- Thống kê trên một số bản ghi thoả mãn điều kiện
2, Duyệt RecordSet :
- Hành động Clone của RecordSet : tạo một RecordSet tạm dựa
trên RS cần tính toán để duyệt mẩu tin. Do đó, sẽ không ảnh hưởng
đến mẩu tin hiện hành và tình trạng dữ liệu trong RS chính.


2, Duyệt RecordSet :
- Cấu trúc vòng lặp duyệt RecordSet :
+ Sử dụng vòng lặp Do While … Loop
If <rst>.RecordCount >0 then <rst>.MoveFirst
Do While Not <rst>.EOF
<Các lệnh tính toán>
<rst>.MoveNext
Loop
+ Sử dụng vòng lặp For … Next
For i = 1 to <rst>.RecordCount
<rst>.AbsolutePosition = i
<các lệnh tính toán>
Next


Ví dụ : hàm RSUM để tính tổng
Function RSum(rst As ADODB.RecordSet, field As
String, dk As String)
Dim tong, rs as ADODB.RecordSet
tong = 0
Set rs = rst.Clone
rs.Filter = dk


Do While Not rs.EOF
tong = tong + rs(field).Value
rs.MoveNext
Loop
Rsum = tong
End Function


3, Tập hợp Fields và đối tượng Field của RecordSet :
- Count : cho biết số field của RecordSet
- Item : chỉ đến một field trong tập hợp
- Append : cho phép thêm một field vào tập hợp Fields
- Delete : Xoá bỏ một field khỏi tập hợp Fields
Ví dụ : tạo một RS gồm 3 trường
Dim Rs as ADODB.RecordSet
Set rs = New ADODB.RecordSet
Rs.Fields.Append "ma",adChar,5,adFldUpdatable
Rs.Fields.Append "hoten",adChar,30,adFldUpdatable
Rs.Fields.Append "phai",adBoolean,,adFldUpdatable
Rs.Open


1, Mô tả các ràng buộc toàn vẹn thường gặp :
- ràng buộc khoá chính : không thể có hai mã giống nhau
- ràng buộc khoá ngoại : nhân viên không thể thuộc về một
phòng ban chưa có trong danh mục phòng ban.
- ràng buộc logic phức tạp : khi thực hiện cập nhật trên nhiều
bảng dữ liệu.
2, Ví dụ cách xử lý các ràng buộc đơn giản :
VD1 : xử lý ràng buộc khoá chính khi trùng mã

If DCOUNT(select * from NhanVien Where manv=’” &
rstNV(“manv”).Value &”’”) > 0 Then
MsgBox “Mã này đã tồn tại trong CSDL”
...
End If


VD2 : Xử lý ràng buộc khoá ngoại
kiểm tra xem phòng nhập đã có chưa
If DCOUNT(Select * From PHONG WHERE maph =’” &
rstNV(“maph”).Value &”’”)= 0 then
MsgBox “Phòng này chưa có trong CSDL”
...
End If
VD3 : Xử lý ràng buộc miền giá trị :
Kiểm tra nhập ngày đã đúng chưa
If IsDate(rstNV(“ngaysinh”).Value))= False then
MsgBox “Ngày sinh không hợp lệ”
...
End If


VD4 : Xử lý ràng buộc liên thuộc tính
+ Nhân viên nhận vào phải trên 18 tuổi
If (Year(Date()) - Year(rstNV(“Ngaysinh”).Value) ) < 18 Then
MsgBox “Nhân sự không đủ tuổi làm việc”
...
End If
+ Ngày chuyển công tác bao giờ cũng lớn hơn ngày nhận công
tác.



3, Xử lý các ràng buộc phức tạp :
3.1, Các Field cần chú ý trong CSDL :
+ Các Field mang ý nghĩa : số lượng, thời điểm …
+ Các Field tính toán : số lượng, thành tiền,…
3.2, Xây dựng hàm kiểm tra cho các ràng buộc phức tạp :
+ ưu điểm : độc lập, sử dụng cho nhiều nơi khác nhau
+ cách xây dựng : mỗi hàm kiểm tra một ràng buộc


3.3, Các hàm nên xây dựng :
RSum(rst As RecordSet, field As String, dk As String)
RMin(rst As RecordSet, field As String, dk As String)
RMax(rst As RecordSet, field As String, dk As String)
RAvg(rst As RecordSet, field As String, dk As String)
RCount(rst As RecordSet, field As String, dk As String)
.........


VD : xây dựng hàm tính tổng
Function DCount(field As String, table As String, Optional dk As
String)
Dim rs As New ADODB.Recordset
rs.Open "select count(" & field & ") from " & table & _
IIf(dk <> ‘’ “,” where " & dk, dk), cnn
DCount = rs(0).Value
End Function
Private Sub cmdKiemTra_Click()
If DCount(“MaSV”,”SinhVien”) = 0 Then

MsgBox (“Chưa có sinh viên nào”)
End If
End Sub



×