• sắp xếp phòng thi theo môn học sinh đăng ký
  • sắp xếp phòng thi theo môn học sinh đăng ký

    thanhthienhg > 04-11-14, 10:04 PM

    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