Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
sắp xếp phòng thi theo môn học sinh đăng ký
#1
Theo ý kiến của một bạn muốn xếp phòng thi theo môn đăng ký của học sinh. mình gửi cho các bạn đoạn code sau tham khảo.
code:
Private Sub Command0_Click()
Dim SlHs(10 To 12, 1 To 8) As Integer ' so luong hs khoi i (10 to 12) dang ky mon j (1 to 8)
Dim SlPhong(10 To 12, 1 To 8) As Integer ' so luong phong cua khoi i dang ky mon j
Dim SlHsPhongCuoi(10 To 12, 1 To 8) As Integer ' so luong hs cua phong cuoi cua khoi i dang ky mon j
Dim dem(10 To 12, 1 To 8) As Integer ' dem so luong hs sap vao phong cua khoi i dang ky mon j
Dim phong(10 To 12, 1 To 8) As Integer ' dang sap phong cua khoi i dang ky mon j
' ------------------- dem sl hoc sinh
For i = 10 To 12
For j = 1 To 8
tieuchuan = "[khoi] = '" & i & "' and [dk" & j & "] = TRUE"
SlHs(i, j) = DCount("*", "hocsinh", tieuchuan)
Next
Next
'---------------------tinh sl phõng
For i = 10 To 12
For j = 1 To 8
SlPhong(i, j) = SlHs(i, j) \ 24 + IIf(SlHs(i, j) Mod 24 > 4, 1, 0)
Next
Next
'------------------------- tinh sl hs phong cuoi
For i = 10 To 12
For j = 1 To 8
SlHsPhongCuoi(i, j) = IIf(SlHs(i, j) Mod 24 > 4, SlHs(i, j) Mod 24, SlHs(i, j) Mod 24 + 24)
Next
Next
'------------------------- gan bien dem = 1
For i = 10 To 12
For j = 1 To 8
dem(i, j) = 1
Next
Next
'------------------------- gan bien phong = 1
For i = 10 To 12
For j = 1 To 8
phong(i, j) = 1
Next
Next '----------------
Dim bang As Recordset
Set bang = CurrentDb.OpenRecordset("sapphong", dbOpenDynaset)
If Not bang.BOF Then
bang.MoveFirst
End If
'---------------
Do While Not bang.EOF
'---------------mon 1
If bang![dk1] = True Then
mon = 1
bang.Edit
bang!phongM1 = Format(phong(Val(bang!khoi), mon), "00")
bang.Update
If phong(Val(bang!khoi), mon) < SlPhong(Val(bang!khoi), mon) And dem(Val(bang!khoi), mon) = 24 Then
phong(Val(bang!khoi), mon) = phong(Val(bang!khoi), mon) + 1
dem(Val(bang!khoi), mon) = 1
Else
dem(Val(bang!khoi), mon) = dem(Val(bang!khoi), mon) + 1
End If
End If
'---------------mon 2
If bang![dk2] = True Then
mon = 2
bang.Edit
bang!phongM2 = Format(phong(Val(bang!khoi), mon), "00")
bang.Update
If phong(Val(bang!khoi), mon) < SlPhong(Val(bang!khoi), mon) And dem(Val(bang!khoi), mon) = 24 Then
phong(Val(bang!khoi), mon) = phong(Val(bang!khoi), mon) + 1
dem(Val(bang!khoi), mon) = 1
Else
dem(Val(bang!khoi), mon) = dem(Val(bang!khoi), mon) + 1
End If
End If
'---------------mon 3
If bang![dk3] = True Then
mon = 3
bang.Edit
bang!phongM3 = Format(phong(Val(bang!khoi), mon), "00")
bang.Update
If phong(Val(bang!khoi), mon) < SlPhong(Val(bang!khoi), mon) And dem(Val(bang!khoi), mon) = 24 Then
phong(Val(bang!khoi), mon) = phong(Val(bang!khoi), mon) + 1
dem(Val(bang!khoi), mon) = 1
Else
dem(Val(bang!khoi), mon) = dem(Val(bang!khoi), mon) + 1
End If
End If
'---------------mon 4
If bang![dk4] = True Then
mon = 4
bang.Edit
bang!phongM4 = Format(phong(Val(bang!khoi), mon), "00")
bang.Update
If phong(Val(bang!khoi), mon) < SlPhong(Val(bang!khoi), mon) And dem(Val(bang!khoi), mon) = 24 Then
phong(Val(bang!khoi), mon) = phong(Val(bang!khoi), mon) + 1
dem(Val(bang!khoi), mon) = 1
Else
dem(Val(bang!khoi), mon) = dem(Val(bang!khoi), mon) + 1
End If
End If
'---------------mon 5
If bang![dk5] = True Then
mon = 5
bang.Edit
bang!phongM5 = Format(phong(Val(bang!khoi), mon), "00")
bang.Update
If phong(Val(bang!khoi), mon) < SlPhong(Val(bang!khoi), mon) And dem(Val(bang!khoi), mon) = 24 Then
phong(Val(bang!khoi), mon) = phong(Val(bang!khoi), mon) + 1
dem(Val(bang!khoi), mon) = 1
Else
dem(Val(bang!khoi), mon) = dem(Val(bang!khoi), mon) + 1
End If
End If
'---------------mon 6
If bang![dk6] = True Then
mon = 6
bang.Edit
bang!phongM6 = Format(phong(Val(bang!khoi), mon), "00")
bang.Update
If phong(Val(bang!khoi), mon) < SlPhong(Val(bang!khoi), mon) And dem(Val(bang!khoi), mon) = 24 Then
phong(Val(bang!khoi), mon) = phong(Val(bang!khoi), mon) + 1
dem(Val(bang!khoi), mon) = 1
Else
dem(Val(bang!khoi), mon) = dem(Val(bang!khoi), mon) + 1
End If
End If
'---------------mon 7
If bang![dk7] = True Then
mon = 7
bang.Edit
bang!phongM7 = Format(phong(Val(bang!khoi), mon), "00")
bang.Update
If phong(Val(bang!khoi), mon) < SlPhong(Val(bang!khoi), mon) And dem(Val(bang!khoi), mon) = 24 Then
phong(Val(bang!khoi), mon) = phong(Val(bang!khoi), mon) + 1
dem(Val(bang!khoi), mon) = 1
Else
dem(Val(bang!khoi), mon) = dem(Val(bang!khoi), mon) + 1
End If
End If
'---------------mon 8
If bang![dk8] = True Then
mon = 8
bang.Edit
bang!phongM8 = Format(phong(Val(bang!khoi), mon), "00")
bang.Update
If phong(Val(bang!khoi), mon) < SlPhong(Val(bang!khoi), mon) And dem(Val(bang!khoi), mon) = 24 Then
phong(Val(bang!khoi), mon) = phong(Val(bang!khoi), mon) + 1
dem(Val(bang!khoi), mon) = 1
Else
dem(Val(bang!khoi), mon) = dem(Val(bang!khoi), mon) + 1
End If
End If
'-------------------
bang.MoveNext
Loop
bang.Close
MsgBox "Da chia phong xong", , "TB"
End Sub

Downloat file:
https://www.mediafire.com/?0oaz0hr0cdoqvgy
Chữ ký của thanhthienhg Xin chào, mình là thanhthienhg, Tham gia http://thuthuataccess.com/forum từ ngày 14-09 -14.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] Thiết kế form nhập và lưu trữ dữ liệu theo yêu cầu brianhuynh 16 624 20-10-16, 10:54 PM
Bài mới nhất: brianhuynh
  [Hỏi] Về cách lưu file .doc đang mở toancvp 4 320 21-06-16, 11:39 AM
Bài mới nhất: toancvp
  Lỗi Access 2003 bị đóng băng theo hàng. imt0osexy 7 479 18-06-16, 11:19 AM
Bài mới nhất: maidinhdan
  [Hỏi] Cách tạo sinh số tự động trong khoảng số cho trước nguyenhungcuong 12 358 09-06-16, 09:06 AM
Bài mới nhất: nguyenhungcuong
  phân quyền chọn lớp và nhập thông tin theo tên đăng nhập honglv157 10 518 18-05-16, 01:29 PM
Bài mới nhất: hungle2006

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ