Thông tin
  • Đánh dấu xác nhận câu hỏi đã được giải quyết để giúp diễn đàn nâng cao chất lượng [cách sử dụng]
  • Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết [nội qui]
  • 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

tính toán trong access

Gửi bàigửi bởi quyenclna » Thứ 4 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 tất cả
          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
quyenclna
 
Bài viết: 4
Ngày tham gia: Thứ 4 16/03/2011 12:42 am
Đã cảm ơn: 1 lần
Được cảm ơn: 0 lần

Re: tính toán trong access

Gửi bàigửi bởi thinh18tt » Thứ 4 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 tất cả
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
thinh18tt
Mạnh Thường Quân
Mạnh Thường Quân
 
Bài viết: 163
Ngày tham gia: Thứ 3 18/05/2010 11:49 pm
Đã cảm ơn: 7 lần
Được cảm ơn: 0 lần

Re: tính toán trong access

Gửi bàigửi bởi truongphu » Thứ 4 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)
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
  1. SELECT Count(Diem) AS TôngSô7
  2. FROM [SELECT Table1.*
  3. FROM Table1 WHERE Diêm=7]. AS Diêm7;
Parsed in 0.000 seconds, using GeSHi 1.0.8.11


2- Code của bạn:
Mã: Chọn tất cả
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ụ:
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
  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
Parsed in 0.000 seconds, using GeSHi 1.0.8.11


Ở trên là dùng For...Nẽt, muốn dùng While... Wend:
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
  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
Parsed in 0.000 seconds, using GeSHi 1.0.8.11
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
truongphu
VIP
VIP
 
Bài viết: 4721
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Đã cảm ơn: 13 lần
Được cảm ơn: 471 lần

Re: tính toán trong access

Gửi bàigửi bởi truongphu » Thứ 4 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
Hình đại diện của thành viên
truongphu
VIP
VIP
 
Bài viết: 4721
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Đã cảm ơn: 13 lần
Được cảm ơn: 471 lần

Re: tính toán trong access

Gửi bàigửi bởi quyenclna » Thứ 4 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 tất cả
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 !
quyenclna
 
Bài viết: 4
Ngày tham gia: Thứ 4 16/03/2011 12:42 am
Đã cảm ơn: 1 lần
Được cảm ơn: 0 lần

Re: tính toán trong access

Gửi bàigửi bởi thinh18tt » Thứ 4 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: Thứ 3 18/05/2010 11:49 pm
Đã cảm ơn: 7 lần
Được cảm ơn: 0 lần

Re: tính toán trong access

Gửi bàigửi bởi thinh18tt » Thứ 4 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 tất cả
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 tất cả
"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
thinh18tt
Mạnh Thường Quân
Mạnh Thường Quân
 
Bài viết: 163
Ngày tham gia: Thứ 3 18/05/2010 11:49 pm
Đã cảm ơn: 7 lần
Được cảm ơn: 0 lần


Quay về Visual Basic for Application (VBA)

Ai đang trực tuyến?

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