الكود لعموم الفايدة
Option Compare Database
Option Explicit
Dim GroubsCount As Integer
Function GroubNumber(ByVal InNumber As Integer) As Integer
GroubsCount = DFirst("[b_Groubs]", "[b_tbl]")
If GroubsCount = 0 Then Exit Function
InNumber = TrueSerial(InNumber)
If InNumber Mod GroubsCount = 0 Then
GroubNumber = GroubsCount
Else
GroubNumber = InNumber Mod GroubsCount
End If
End Function
Function SerialNumber(ByVal InNumber As Integer) As Integer
GroubsCount = DFirst("[b_Groubs]", "[b_tbl]")
If GroubsCount = 0 Then Exit Function
InNumber = TrueSerial(InNumber)
If InNumber Mod GroubsCount = 0 Then
SerialNumber = (InNumber - (InNumber Mod GroubsCount)) / GroubsCount
Else
SerialNumber = (InNumber - (InNumber Mod GroubsCount)) / GroubsCount + 1
End If
End Function
Private Function TrueSerial(ByVal InNumber As Integer) As Integer
Dim dbs As Database
Dim rst As Recordset
Dim I As Integer
Set dbs = Application.CurrentDb
Set rst = dbs.OpenRecordset("Code_Q", dbOpenSnapshot)
If rst.RecordCount <> 0 Then
rst.MoveFirst
Do Until rst.EOF
I = I + 1
If InNumber = rst!a_Number Then
InNumber = I
Exit Do
End If
rst.MoveNext
Loop
End If
rst.Close
Set rst = Nothing
Set dbs = Nothing
TrueSerial = InNumber
End Function