Public Function tapespread()
Dim db As Database
Dim rs As Recordset
Dim i As Integer
Dim MaxTape As Integer
Dim TTapes As Integer
Dim RemTape As Integer
MaxTape = (8)
TTapes = (8)
Set db = CurrentDb
Set rs = db.OpenRecordset("QQVIEW1")
For i = 0 To rs.RecordCount - 1
rs.Edit
rs.Fields("STATIONS1") = Int(rs.Fields("tapes") / MaxTape)
rs.Fields("TAPES1") = 8
' set stations2 to 1 for later spreading out of uneven number of sampling units
rs.Fields("STATIONS2") = 1
rs.Fields("TAPES2") = 0
rs.Update
TTapes = (8)
'if tapes divide evenly, set stations2 to 0
If rs.Fields("stations1") * rs.Fields("tapes1") = rs.Fields("tapes") Then
rs.Edit
rs.Fields("stations2") = 0
rs.Update
End If
Do While (rs.Fields("stations1") * rs.Fields("tapes1")) + (rs.Fields("stations2") * rs.Fields("tapes2")) <> rs.Fields("tapes")
' for regions with 8 tapes or less, 1 station will be assigned all SUs
If rs.Fields("TAPES") <= 8 Then
rs.Edit
rs.Fields("STATIONS1") = 1
rs.Fields("TAPES1") = rs.Fields("TAPES")
rs.Fields("STATIONS2") = 0
rs.Update
Else
' for regions with more than 8 tapes
' if no remainder, continue
RemTape = rs.Fields("TAPES") Mod TTapes
' probably not needed here
If RemTape = 0 Then
rs.Edit
rs.Fields("STATIONS2") = 0
rs.Update
End If
'if remainder is within 1 of tapes1, assign to one station
If TTapes - RemTape = 1 Then
rs.Edit
rs.Fields("Tapes2") = RemTape
rs.Update
End If
'if remainder is 2 less than tapes1, spread out remainder
If TTapes - RemTape = 2 Then
rs.Edit
rs.Fields("STATIONS1") = rs.Fields("STATIONS1") - 1
rs.Fields("Stations2") = rs.Fields("Stations2") + 1
rs.Fields("Tapes2") = (RemTape + 1)
If rs.Fields("Stations1") = 0 Then
rs.Fields("Stations1") = rs.Fields("Stations2")
rs.Fields("Tapes1") = rs.Fields("Tapes2")
rs.Fields("Stations2") = 0
rs.Fields("Tapes2") = 0
End If
rs.Update
End If
rs.Edit
rs.Fields("tapes1") = TTapes
rs.Update
TTapes = TTapes - 1
'if remainer greater than 2 loop again
End If
Loop
rs.MoveNext
Next i
End
rs.Close
Set rs = Nothing
Exit Function
Return
End Function