Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Nhờ các cao bạn giúp về cách tính điểm trung bình cho học sinh trung học cơ sở
04-10-13, 03:11 PM
Bài viết: #1
Nhờ các cao bạn giúp về cách tính điểm trung bình cho học sinh trung học cơ sở
Mình làm phần mềm tính điểm trung bình môn học cho học sinh trung học cơ sở như sau:
Kiểm tra miệng và 15 phút thì hệ số 1, kiểm tra 1 tiết hệ số 2, kiểm tra học kì hệ số 3.
mình cần làm một hàm tính tổng các cột không rỗng của ktra: miệng + 15 phút + 2 x (số cột ktra 1 tiết) + 3
sau đó tính tổng điểm: (tổng miệng + 15 phút) + tổng 1 tiết x 2 + kiểm tra học kì x 3
sau đó tính điểm trung bình: tổng điểm:tổng cột không rỗng
nhưng làm mãi vẫn không ra nhờ các anh em trên diễn đàn giúp. Đây là cơ sở dữ liệu
http://www.mediafire.com/download/rrqp6w...U+LIEU.mdb

Chữ Ký của phamthainguyen86Xin chào, mình là phamthainguyen86, Tham gia http://thuthuataccess.com/forum từ ngày 08-05 -11.
Trả lời
05-10-13, 09:18 PM
Bài viết: #2
RE: Nhờ các cao bạn giúp về cách tính điểm trung bình cho học sinh trung học cơ sở
(04-10-13 03:11 PM)phamthainguyen86 Đã viết:  Mình làm phần mềm tính điểm trung bình môn học cho học sinh trung học cơ sở như sau:
Kiểm tra miệng và 15 phút thì hệ số 1, kiểm tra 1 tiết hệ số 2, kiểm tra học kì hệ số 3.
mình cần làm một hàm tính tổng các cột không rỗng của ktra: miệng + 15 phút + 2 x (số cột ktra 1 tiết) + 3
sau đó tính tổng điểm: (tổng miệng + 15 phút) + tổng 1 tiết x 2 + kiểm tra học kì x 3
sau đó tính điểm trung bình: tổng điểm:tổng cột không rỗng
nhưng làm mãi vẫn không ra nhờ các anh em trên diễn đàn giúp. Đây là cơ sở dữ liệu
http://www.mediafire.com/download/rrqp6w...U+LIEU.mdb

Các bạn ơi giúp mình với, vấn đề là làm sao tạo query có cột đếm, sẽ đếm các cột không trống từ m1 đến t5 nhưng mình xài hàm count trong query nó cứ báo sai hoài hà

Chữ Ký của phamthainguyen86Xin chào, mình là phamthainguyen86, Tham gia http://thuthuataccess.com/forum từ ngày 08-05 -11.
Trả lời
05-10-13, 11:21 PM (Được chỉnh sửa: 06-10-13 09:01 AM bởi paulsteigel.)
Bài viết: #3
RE: Nhờ các cao bạn giúp về cách tính điểm trung bình cho học sinh trung học cơ sở
(05-10-13 09:18 PM)phamthainguyen86 Đã viết:  Các bạn ơi giúp mình với, vấn đề là làm sao tạo query có cột đếm, sẽ đếm các cột không trống từ m1 đến t5 nhưng mình xài hàm count trong query nó cứ báo sai hoài hà
[1. Câu hỏi 1]
Bạn có thể sử dụng cấu trúc sau với việc dùng hàm nz để kiểm soát các cột có số liệu rỗng
Mã PHP:
SELECT a.MSHSnz(a.M1,0)+nz(a.M2,0)+nz(a.[15P1],0)+nz(a.[15P2],0)+nz(a.[15P3],0)+nz(a.[15P4],0)+nz(a.T1,0)+nz(a.T2,0)+nz(a.T3,0)+nz(a.T4,0)+nz(a.T5,0) AS Tongdiem11-Int((nz(a.M1,1000)+nz(a.M2,1000)+nz(a.[15P1],1000)+nz(a.[15P2],1000)+nz(a.[15P3],1000)+nz(a.[15P4],1000)+nz(a.T1,1000)+nz(a.T2,1000)+nz(a.T3,1000)+nz(a.T4,1000)+nz(a.T5,1000))/1000) AS Socot
FROM 
[T-DIEM] AS a
Cách này sẽ không chính xác nếu số liệu =0. Nếu muốn giải quyết tình huống số liệu = 0 thì bạn dùng cấu trúc
iif(a.M1>0,a.M1,0)+....
Bạn thử tìm hiểu tại sao ở trên tôi lại có số phép toàn rất lạ 11-Int(nz(...,1000)) sau đó lại có phép chia lấy phần nguyên INT(..../1000)

Nếu không muốn dùng cách đó, bạn có thể sử dung VBA, nhưng với cách bạn đặt câu hỏi cho thấy bạn chưa thể dùng VBA được vì thế cách tôi giới thiệu ở trên là một phương án khả dĩ.
Tuy nhiên để giúp bạn, tôi xin giới thiệu một hàm đơn giản để phục vụ tính toán như dưới đây

Bạn viết thêm một hàm CalculateMark, hàm đơn giản như trong đoạn mã này:
Mã PHP:
Function CalculateMark(theText As String) As Single
    Dim Arr 
As VariantAs LongSumVal As SinglexCounter As Long
    
' Tach chuoi dau vao thanh mang
    Arr = Split(theText, ",")
    
    ' 
Duyet qua mang
    
For 0 To UBound(Arr)
        
' Kiem tra xem du lieu co gia tri khong, neu co thi tinh tong va dem
        If Val(Arr(i)) > 0 Then
            SumVal = SumVal + Val(Arr(i))
            xCounter = xCounter + 1
        End If
    Next
    If xCounter > 0 Then
        ' 
Chi thuc hien phep chia khi co so lieu
        CalculateMark 
SumVal xCounter
    End 
If
End Function 
Sau đó bạn gọi hàm đó trong truy vấn với dạng thức sau:
Mã PHP:
SELECT a.MSHSCalculateMark(a.M1 "," a.M2 "," a.[15P1] & "," a.[15P2] & "," a.[15P3] & "," a.[15P4] & "," a.T1 "," a.T2 "," a.T3 "," a.T4 "," a.T5) AS Diemtrungbinh
FROM 
[T-DIEM] AS a

Chữ Ký của paulsteigel====================
Cái chai không đầu
Mà sao có cổ
====================
A fan of Alice Cooper!
Trả lời
06-10-13, 10:32 PM
Bài viết: #4
RE: Nhờ các cao bạn giúp về cách tính điểm trung bình cho học sinh trung học cơ sở
(05-10-13 11:21 PM)paulsteigel Đã viết:  
(05-10-13 09:18 PM)phamthainguyen86 Đã viết:  Các bạn ơi giúp mình với, vấn đề là làm sao tạo query có cột đếm, sẽ đếm các cột không trống từ m1 đến t5 nhưng mình xài hàm count trong query nó cứ báo sai hoài hà
[1. Câu hỏi 1]
Bạn có thể sử dụng cấu trúc sau với việc dùng hàm nz để kiểm soát các cột có số liệu rỗng
Mã PHP:
SELECT a.MSHSnz(a.M1,0)+nz(a.M2,0)+nz(a.[15P1],0)+nz(a.[15P2],0)+nz(a.[15P3],0)+nz(a.[15P4],0)+nz(a.T1,0)+nz(a.T2,0)+nz(a.T3,0)+nz(a.T4,0)+nz(a.T5,0) AS Tongdiem11-Int((nz(a.M1,1000)+nz(a.M2,1000)+nz(a.[15P1],1000)+nz(a.[15P2],1000)+nz(a.[15P3],1000)+nz(a.[15P4],1000)+nz(a.T1,1000)+nz(a.T2,1000)+nz(a.T3,1000)+nz(a.T4,1000)+nz(a.T5,1000))/1000) AS Socot
FROM 
[T-DIEM] AS a
Cách này sẽ không chính xác nếu số liệu =0. Nếu muốn giải quyết tình huống số liệu = 0 thì bạn dùng cấu trúc
iif(a.M1>0,a.M1,0)+....
Bạn thử tìm hiểu tại sao ở trên tôi lại có số phép toàn rất lạ 11-Int(nz(...,1000)) sau đó lại có phép chia lấy phần nguyên INT(..../1000)

Nếu không muốn dùng cách đó, bạn có thể sử dung VBA, nhưng với cách bạn đặt câu hỏi cho thấy bạn chưa thể dùng VBA được vì thế cách tôi giới thiệu ở trên là một phương án khả dĩ.
Tuy nhiên để giúp bạn, tôi xin giới thiệu một hàm đơn giản để phục vụ tính toán như dưới đây

Bạn viết thêm một hàm CalculateMark, hàm đơn giản như trong đoạn mã này:
Mã PHP:
Function CalculateMark(theText As String) As Single
    Dim Arr 
As VariantAs LongSumVal As SinglexCounter As Long
    
' Tach chuoi dau vao thanh mang
    Arr = Split(theText, ",")
    
    ' 
Duyet qua mang
    
For 0 To UBound(Arr)
        
' Kiem tra xem du lieu co gia tri khong, neu co thi tinh tong va dem
        If Val(Arr(i)) > 0 Then
            SumVal = SumVal + Val(Arr(i))
            xCounter = xCounter + 1
        End If
    Next
    If xCounter > 0 Then
        ' 
Chi thuc hien phep chia khi co so lieu
        CalculateMark 
SumVal xCounter
    End 
If
End Function 
Sau đó bạn gọi hàm đó trong truy vấn với dạng thức sau:
Mã PHP:
SELECT a.MSHSCalculateMark(a.M1 "," a.M2 "," a.[15P1] & "," a.[15P2] & "," a.[15P3] & "," a.[15P4] & "," a.T1 "," a.T2 "," a.T3 "," a.T4 "," a.T5) AS Diemtrungbinh
FROM 
[T-DIEM] AS a
Thanks bạn rất nhiều!
Bạn có thể chỉ mình học lệnh SQL và lập trình VBA ở giáo trình nào không vậy, mình tìm ở google không thấy.

Chữ Ký của phamthainguyen86Xin chào, mình là phamthainguyen86, Tham gia http://thuthuataccess.com/forum từ ngày 08-05 -11.
Trả lời

Tags: Nhờ, các, bạn, giúp, về, cách, tính, điểm, trung, bình, học, sinh, sở,

Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] Xin hướng dẫn giúp mình cách đánh số thứ tự trong Form Access. hoamua39 3 65 Hôm nay 11:10 AM
Bài mới nhất: hoamua39
  Hướng Dẫn Hỏi về cách tự động cập nhật thông tin cho các trường nguoimacdoden 8 226 24-11-14 07:24 PM
Bài mới nhất: cpucloi
  [Lỗi] Nhờ giúp vấn đề về Form DoquangLam 3 82 20-11-14 08:24 AM
Bài mới nhất: Xuân Thanh
  [Help] Mọi người giúp e đổ dữ liệu lên form với! mtkt0309 0 26 13-11-14 12:52 PM
Bài mới nhất: mtkt0309
  [Help] xem giúp e đề này có vấn đề gì ko? (access 2003) phantrieuphu97 3 86 11-11-14 07:32 AM
Bài mới nhất: Minh Tiên

Chuyển nhanh:


Thành viên đang đọc chủ đề: 1 Khách

Liên hệ | Thủ Thuật Access | Lên trên | Nội dung | Bản rút gọn | Tin RSS