• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

tính toán trong access

Nơi trao đổi về VBA (Visual Basic for Application), lập trình cho ứng dụng Microsoft Office, AutoCAD...

Điều hành viên: tungblt

quyenclna
Bài viết: 4
Ngày tham gia: T.Tư 16/03/2011 12:42 am
Has thanked: 1 time

tính toán trong access

Gửi bàigửi bởi quyenclna » T.Tư 16/03/2011 12:49 am

chào các anh chị trong 4rum
em gặp một bài toán như sau trong access
cho một danh sách sinh viên và các điểm đi kèm
vd
hoàng ========= 8
lan=========== 7
thúy========== 7
hùng========== 6
và yêu cầu của để bài là
đếm xem có bao nhiêu người có điểm là 7

em đã làm như sau

Mã: Chọn hết

          Private Sub Command21_Click()
 Dim i As Integer
 Dim dem As Integer
 i = 1
 dem = 0
 While Diem = Val(Text8) And i < 20
    If Diem = Val(Text8) Then
       dem = dem + 1
    End If
    i = i + 1
 Wend
Text11 = dem
End Sub

nhưng mà không được, mong anh chị trong 4rum giúp em giải quyết vấn đề đó
em xin chân thanh cảm ơn

thinh18tt
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 163
Ngày tham gia: T.Ba 18/05/2010 11:49 pm
Has thanked: 7 time

Re: tính toán trong access

Gửi bàigửi bởi thinh18tt » T.Tư 16/03/2011 8:10 am

Giả sử bạn có table là tblSinhVien và cột điểm tên là Diem

Mã: Chọn hết

Dim Rec As New Recordset
Dim dem As Integer
cnn.CursorLocation = adUseClient
Rec.Open "SELECT Diem FROM tblSinhVien Where Diem = #7#", cnn, 3, 3
dem = Rec.RecordCount
Rec.Close

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4726
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 475 time

Re: tính toán trong access

Gửi bàigửi bởi truongphu » T.Tư 16/03/2011 8:50 am

1- Nếu bạn cho biết là làm trong access, bạn chỉ cần lập bảng query là xong;
vd table1 có field Diem, câu sql là:
(Nhấn menu\View\SQL View, dưới Design View)
  1. SELECT Count(Diem) AS TôngSô7
  2. FROM [SELECT Table1.*
  3. FROM Table1 WHERE Diêm=7]. AS Diêm7;


2- Code của bạn:

Mã: Chọn hết

While Diem = Val(Text8) And i < 20
    If Diem = Val(Text8) Then


** Vì dòng code dưới nêu điều kiện Diem có thể <> Val(Text8), khi ấy lập tức sẽ thoát vòng lặp ở trên, hết duyệt!
** Vòng lặp dùng để duyệt một tập hợp có cùng đặc tính, vd mảng, collection... ở đây bạn dùng chỉ một Text8 thì nghĩa là thế nào?
Vì bạn viết code vb6, sau đây là ví dụ:
  1. Dim CacSoDiem(1 To 20) As Byte
  2.  
  3. Private Sub Form_Load()
  4. Randomize
  5.     Dim i As Byte
  6.     For i = 1 To 20
  7.         CacSoDiem(i) = Int(Rnd * 10)
  8.     Next
  9. End Sub
  10.  
  11. Private Sub Command1_Click()
  12.     Dim j As Byte, h As Byte
  13.     For j = 1 To 20
  14.         If CacSoDiem(j) = 7 Then h = h + 1
  15.     Next
  16.     MsgBox h
  17. End Sub


Ở trên là dùng For...Nẽt, muốn dùng While... Wend:
  1. Private Sub Command2_Click()
  2.     Dim j As Byte, h As Byte
  3.     While j < 20
  4.         If CacSoDiem(j + 1) = 7 Then h = h + 1
  5.         j = j + 1
  6.     Wend
  7.     MsgBox h
  8. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4726
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 475 time

Re: tính toán trong access

Gửi bàigửi bởi truongphu » T.Tư 16/03/2011 9:00 am

thinh18tt đã viết:"SELECT Diem FROM tblSinhVien Where Diem = #7#"

trong câu sql của bạn, số 7 kèm 2 dấu # để làm gì thế?

----
vì sql vốn là String đặc biệt, nghĩa là String có cú pháp kèm hàm, nên các dữ liệu đưa vào phải "Đánh dấu" để sql biết được
* kèm 2 dấu ' cho biết đó là string, vd '77' là chuỗi 77
* không kèm gì cả với ký tự số, đó là SỐ: vd 77 là số 77
* kèm 2 dấu # cho biết dạng ngày tháng, vd: #1/1/2011# là ngày đầu năm 2011
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

quyenclna
Bài viết: 4
Ngày tham gia: T.Tư 16/03/2011 12:42 am
Has thanked: 1 time

Re: tính toán trong access

Gửi bàigửi bởi quyenclna » T.Tư 16/03/2011 1:30 pm

cảm ơn các anh chị trong 4rum đã trả lời cho em
tuy nhiên em xin nói lại rõ ý của câu hỏi như sau
bài toán của em là bài toán tuyển sinh sinh viên vào các trường đại học
đầu tiên điểm của các thí sinh sẽ được sắp xếp theo thứ tự giảm đần ( câu này thực hiện trong query , em đã làm rồi)
tiếp theo sẽ nhập số lượng thí sinh cần tuyển chọn, và khi kết thức quá tình nhập thì máy sẽ đưa ra điểm chuẩn của năm
em viết như sau

Mã: Chọn hết

Private Sub Command7_Click()
    Dim i As Integer
    Dim dem As Integer
    DoCmd.GoToRecord , , acFirst
    For i = 0 To (Val(Text5) - 2) Step 1
        DoCmd.GoToRecord , , acNext
    Next
            Text8 = Diem 'text8 là ô thể hiện điểm chuẩn của năm
                                  'diem là tổng điểm thi của 3 môn bất kỳ
End Sub


khi đó sẽ có một số thí sính điểm thi cũng bằng điểm chuẩn , tuy nhiên vì theo yêu cầu là lấy theo số lượng nên sẽ có một số bạn sẽ ko được lấy
bây h em cần làm là đếm trong danh sách đó có bao nhiêu người bằng điểm chuẩn
bao nhiêu ngừoi bằng điểm chuẩn đã được lấy ? và bao nhiều người chưa được lấy !
vd:
stt tên điểm
1 hằng 10
2 lan 10
3 thúy 10
4 kiều 9
5 hùng 9
6 vân 8
=====================
bây h em sẽ chọn số lượng thi sính cần tuyển là 4 khi đó, con trỏ sẻ trỏ tới vị trí số 4 và đưa ra điểm chuẩn là 9, tuy nhiên còn bạn hùng cũng 9 điểm nhưng ko được thông báo đậu
và chương trình phải đưa ra thông báo sau
có 2 thí sinh bằng điểm chuẩn
có 1 thí sinh bằng điểm chuẩn đã được tuyển chọn
có 1 thí sinh bằng điểm chuẩn chưa được tuyển chọn !

thinh18tt
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 163
Ngày tham gia: T.Ba 18/05/2010 11:49 pm
Has thanked: 7 time

Re: tính toán trong access

Gửi bàigửi bởi thinh18tt » T.Tư 16/03/2011 2:41 pm

truongphu đã viết:
thinh18tt đã viết:"SELECT Diem FROM tblSinhVien Where Diem = #7#"

trong câu sql của bạn, số 7 kèm 2 dấu # để làm gì thế?

----
vì sql vốn là String đặc biệt, nghĩa là String có cú pháp kèm hàm, nên các dữ liệu đưa vào phải "Đánh dấu" để sql biết được
* kèm 2 dấu ' cho biết đó là string, vd '77' là chuỗi 77
* không kèm gì cả với ký tự số, đó là SỐ: vd 77 là số 77
* kèm 2 dấu # cho biết dạng ngày tháng, vd: #1/1/2011# là ngày đầu năm 2011


Vâng, cảm ơn bác, em nhầm.

thinh18tt
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 163
Ngày tham gia: T.Ba 18/05/2010 11:49 pm
Has thanked: 7 time

Re: tính toán trong access

Gửi bàigửi bởi thinh18tt » T.Tư 16/03/2011 2:50 pm

quyenclna đã viết:cảm ơn các anh chị trong 4rum đã trả lời cho em
tuy nhiên em xin nói lại rõ ý của câu hỏi như sau
bài toán của em là bài toán tuyển sinh sinh viên vào các trường đại học
đầu tiên điểm của các thí sinh sẽ được sắp xếp theo thứ tự giảm đần ( câu này thực hiện trong query , em đã làm rồi)
tiếp theo sẽ nhập số lượng thí sinh cần tuyển chọn, và khi kết thức quá tình nhập thì máy sẽ đưa ra điểm chuẩn của năm
em viết như sau

Mã: Chọn hết

Private Sub Command7_Click()
    Dim i As Integer
    Dim dem As Integer
    DoCmd.GoToRecord , , acFirst
    For i = 0 To (Val(Text5) - 2) Step 1
        DoCmd.GoToRecord , , acNext
    Next
            Text8 = Diem 'text8 là ô thể hiện điểm chuẩn của năm
                                  'diem là tổng điểm thi của 3 môn bất kỳ
End Sub


khi đó sẽ có một số thí sính điểm thi cũng bằng điểm chuẩn , tuy nhiên vì theo yêu cầu là lấy theo số lượng nên sẽ có một số bạn sẽ ko được lấy
bây h em cần làm là đếm trong danh sách đó có bao nhiêu người bằng điểm chuẩn
bao nhiêu ngừoi bằng điểm chuẩn đã được lấy ? và bao nhiều người chưa được lấy !
vd:
stt tên điểm
1 hằng 10
2 lan 10
3 thúy 10
4 kiều 9
5 hùng 9
6 vân 8
=====================
bây h em sẽ chọn số lượng thi sính cần tuyển là 4 khi đó, con trỏ sẻ trỏ tới vị trí số 4 và đưa ra điểm chuẩn là 9, tuy nhiên còn bạn hùng cũng 9 điểm nhưng ko được thông báo đậu
và chương trình phải đưa ra thông báo sau
có 2 thí sinh bằng điểm chuẩn
có 1 thí sinh bằng điểm chuẩn đã được tuyển chọn
có 1 thí sinh bằng điểm chuẩn chưa được tuyển chọn !


Bạn đã làm được thế rồi thì nghĩ thêm tí đi, có nhiều cách, mình có gợi ý thế này:
- Bạn so sánh điểm thấp nhất của người được tuyển với những người còn lại bằng câu truy vấn bên trên.
- Mình nghĩ bạn sẽ làm được thôi. Híc, thôi thì giúp luôn theo cách của mình

Mã: Chọn hết

"SELECT Tên FROM tblSinhVien Where STT >=4 And Điểm = 9"

STT >=4 vì có thể trước Kiều hoặc nhiều bạn tên Kiều có cùng 9 điểm


Quay về “Visual Basic for Application (VBA)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách