Dear all,
I want to sort a table from a database. The table have about 130 record (will be growing larger). Each record have 40 column(field). I want to sort the data using 6 fields values. These value have priority: Date>OD(Outside Diameter)>WT(wall thickness)>Steel Grade>Length
I figured out a way to do these. I am using Bubble Sort against the recordset and a comparing method to determine the two adjacent rows is larger or smaller than the previous row. Each record could have same OD, Date, WT, Steel Grade, or null in Steel Grade or Length.
Here is my code.
The problem I have: 1. Sometime , the function run into error at rs1.edit sometimes not????????
2. Any suggestion on this Bubble Sort idea..or some other way to achieve the task??????
3. Sometimes my code works, sometime not ??????
Thank you
Wayne
Code:
Option Compare Database
Option Explicit
Function modCreateMillTable()
' This function call the appending query function
' Then call the S20 filter function
' Then call the loopThroughPending to perform compare and swap
' Which then sort the output to desired output
On Error GoTo createMillTable_Err
'Call appendS20ToPendingOrder
'call sortPendingTemp
Call loopPendingOrders
Call insideGrouping
'Call S20Filter
createMillTable_Err:
Resume Next
End Function
Function loopPendingOrders()
Dim db As Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim loopCount As Integer
Dim i As Integer
Dim count As Integer
Dim outterLoopCount As Integer
Dim tempRecord() As Variant
Set db = CurrentDb
Set rs1 = db.OpenRecordset("Pending_Temp")
Set rs2 = rs1.Clone
rs1.MoveLast
rs1.MoveFirst
rs2.MoveLast
rs2.MoveFirst
rs2.MoveNext
loopCount = rs1.RecordCount
outterLoopCount = rs1.RecordCount
ReDim tempRecord(0 To rs1.Fields.count - 1) As Variant
Do While outterLoopCount >= 1
For i = 1 To loopCount - 1
If (compareRecord(i - 1, i) = 2) Then 'choose minus 1 because move function decide move how many rows down
rs1.Edit
rs2.Edit
For count = 0 To rs1.Fields.count - 1
tempRecord(count) = rs1.Fields(count).Value
rs1.Fields(count).Value = rs2.Fields(count).Value
rs2.Fields(count).Value = tempRecord(count)
tempRecord(count) = Null
Next count
rs1.Update
rs2.Update
End If
rs1.MoveNext
rs2.MoveNext
Next i
rs1.MoveLast
rs1.MoveFirst
rs2.MoveLast
rs2.MoveFirst
rs2.MoveNext
outterLoopCount = outterLoopCount - 1
loopCount = loopCount - 1
Loop
rs1.Close
rs2.Close
db.Close
Set db = Nothing
Set rs1 = Nothing
Set rs2 = Nothing
loopCount = 0
outterLoopCount = 0
End Function
Function compareRecord(rs1Position As Integer, rs2Position As Integer) As Integer
' This function return a integer 1 or 2,
' 1 means rs1 place first, 2 means rs1 place second
'This variable is defiened with respect to rs1
Dim db As Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rs3 As DAO.Recordset
Dim dateDifference As Integer
Dim lengthCompare As Integer
Dim steelGradeCompare As Integer
Dim lengthValue1 As String
Dim lengthValue2 As String
Dim founded As Boolean
Dim od1 As String
Dim od2 As String
Set db = CurrentDb
Set rs1 = db.OpenRecordset("Pending_Temp", 2)
Set rs2 = rs1.Clone
Set rs3 = rs1.Clone
rs1.MoveFirst
rs2.MoveFirst
rs1.Move (rs1Position)
rs2.Move (rs2Position)
founded = False
od1 = CStr(rs1.Fields("ODmm").Value)
od2 = CStr(rs2.Fields("ODmm").Value)
If (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) Then
rs3.FindFirst "[ODmm] =" & od1
Do While founded = False
If Abs(rs1.Fields("RFS_required").Value - rs3.Fields("RFS_required").Value) <= 30 Then
founded = True
If (Abs(rs1.Fields("RFS_required").Value - rs3.Fields("RFS_required").Value) < Abs(rs2.Fields("RFS_required").Value - rs3.Fields("RFS_required").Value)) Then
dateDifference = 31
ElseIf (Abs(rs1.Fields("RFS_required").Value - rs3.Fields("RFS_required").Value) < Abs(rs2.Fields("RFS_required").Value - rs3.Fields("RFS_required").Value)) Then
dateDifference = 1
End If
Else
rs3.FindNext "ODmm = " & od1
End If
Loop
Else
dateDifference = Abs(rs1.Fields("RFS_required").Value - rs2.Fields("RFS_required").Value)
End If
Debug.Print dateDifference
Select Case StrComp(rs1.Fields("Steel_Grade").Value, rs2.Fields("Steel_Grade").Value)
Case 0
steelGradeCompare = 0
Case 1
steelGradeCompare = 1
Case -1
steelGradeCompare = 2
End Select
If (IsNull(rs1.Fields("Length").Value)) Then
lengthValue1 = ""
If (IsNull(rs2.Fields("Length").Value)) Then
lengthValue2 = ""
Else
lengthValue2 = rs2.Fields("Length").Value
End If
Else
lengthValue2 = rs1.Fields("Length").Value
End If
lengthCompare = lengthCompareMethod(lengthValue1, lengthValue2)
If (dateDifference > 30) And (rs1.Fields("RFS_required").Value > rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value > rs2.Fields("ODmm").Value) Then
compareRecord = 2 '1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value < rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value > rs2.Fields("ODmm").Value) Then
compareRecord = 1 '2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value > rs2.Fields("ODmm").Value) Then
compareRecord = 2 '3
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value > rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value < rs2.Fields("ODmm").Value) Then
compareRecord = 2 '4
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value < rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value < rs2.Fields("ODmm").Value) Then
compareRecord = 1 '5
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value < rs2.Fields("ODmm").Value) Then
compareRecord = 1 '6
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value > rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value > rs2.Fields("ODmm").Value) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value < rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value > rs2.Fields("ODmm").Value) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value > rs2.Fields("ODmm").Value) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value > rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value < rs2.Fields("ODmm").Value) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value < rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value < rs2.Fields("ODmm").Value) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value < rs2.Fields("ODmm").Value) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value > rs2.Fields("RFS_required").Value) And ((rs1.Fields("ODmm").Value) = (rs2.Fields("ODmm").Value)) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value < rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value < rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value > rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 1) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 1) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 1) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 2) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 2) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 2) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 1) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference <= 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 2) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 1) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value = rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 2) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 2) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 2) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 1) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value < rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 2) Then
compareRecord = 1
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 1) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 0) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 1) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 1) And (lengthCompare = 2) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 1) Then
compareRecord = 2
ElseIf (dateDifference > 30) And (rs1.Fields("RFS_required").Value = rs2.Fields("RFS_required").Value) And (rs1.Fields("ODmm").Value = rs2.Fields("ODmm").Value) And _
(rs1.Fields("WTmm").Value > rs2.Fields("RFS_required").Value) And (steelGradeCompare = 2) And (lengthCompare = 2) Then
compareRecord = 2
End If
rs1.Close
rs2.Close
db.Close
Set db = Nothing
Set rs1 = Nothing
Set rs2 = Nothing
dateDifference = 0
steelGradeCompare = 0
lengthCompare = 0
End Function
Function lengthCompareMethod(firstLength As String, secondLength As String) As Integer
'Function return 1 as rs1 should place first
'Function return 2 as rs1 should place second
If (firstLength <> "QRL") And (firstLength <> "TRL") And (firstLength <> "DRL") And (firstLength <> "SRL") And _
(firstLength <> "R3") And (firstLength <> "R2") And (firstLength <> "R1") And (firstLength <> "") Then
lengthCompareMethod = 2 ' when rs1 is rare length
ElseIf (secondLength <> "QRL") And (secondLength <> "TRL") And (secondLength <> "DRL") And (secondLength <> "SRL") And _
(secondLength <> "R3") And (secondLength <> "R2") And (secondLength <> "R1") And (secondLength <> "") Then
lengthCompareMethod = 1 ' when rs2 is rare length
Else ' Other than rare length
If (firstLength = "QRL") And ((secondLength = "TRL") Or (secondLength = "DRL") Or (secondLength = "SRL") Or (secondLength = "")) Then
lengthCompareMethod = 2 'since rs1 have longer length line pipe (1)
ElseIf (firstLength = "TRL") And ((secondLength = "DRL") Or (secondLength = "SRL") Or (secondLength = "")) Then
lengthCompareMethod = 2 '2
ElseIf (firstLength = "DRL") And ((secondLength = "SRL") Or (secondLength = "")) Then
lengthCompareMethod = 2 '3
ElseIf (firstLength = "SRL") And (secondLength = "") Then
lengthCompareMethod = 2 '4
ElseIf (firstLength = "R3") And ((secondLength = "R2") Or (secondLength = "R1") Or (secondLength = "")) Then
lengthCompareMethod = 2 '5
ElseIf (firstLength = "R2") And ((secondLength = "R1") Or (secondLength = "")) Then
lengthCompareMethod = 2 '6
ElseIf (firstLength = "R1") And (secondLength = "") Then
lengthCompareMethod = 2 '7
ElseIf (firstLength = "") And (secondLength = "") Then
lengthCompareMethod = 1 '8
ElseIf (secondLength = "QRL") And ((firstLength = "TRL") Or (firstLength = "DRL") Or (firstLength = "SRL") Or (firstLength = "")) Then
lengthCompareMethod = 1 '9
ElseIf (secondLength = "TRL") And ((firstLength = "DRL") Or (firstLength = "SRL") Or (firstLength = "")) Then
lengthCompareMethod = 1 '10
ElseIf (secondLength = "DRL") And ((firstLength = "SRL") Or (firstLength = "")) Then
lengthCompareMethod = 1 '11
ElseIf (secondLength = "SRL") And (firstLength = "") Then
lengthCompareMethod = 1 '12
ElseIf (secondLength = "R3") And ((firstLength = "R2") Or (firstLength = "R1") Or (firstLength = "")) Then
lengthCompareMethod = 1 '13
ElseIf (secondLength = "R2") And ((firstLength = "R1") Or (firstLength = "")) Then
lengthCompareMethod = 1 '14
ElseIf (secondLength = "R1") And (firstLength = "") Then
lengthCompareMethod = 1 '15
End If
End If
End Function
Function sortPendingByDate()
Dim strSQL As String
strSQL = "SELECT * FROM Pending_Temp ORDER BY RFS_required;"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
strSQL = ""
End Function
Function appendS20ToPendingOrder()
' This function append all the data from S20 to Pending Orders table
' Don't care the missing field variable from S20 table
Dim strSQL As String
strSQL = "INSERT INTO Pending_Temp (ODmm, WTmm, Steel_Grade, End, Total_Meters, Total_Tons, RFS_required )" & _
" SELECT [tblS20].[ODmm], [tblS20].[WTmm], [tblS20].[Steel_Grade], [tblS20].[End], [tblS20].[Total_Meters]," & _
" [tblS20].[Total_Tons], [tblS20].[RFS_required]" & _
" FROM tblS20;"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
strSQL = ""
DoCmd.RefreshRecord
End Function
Function S20Filter()
'This function will filter all the date requested in the S20 file then delete
'all date which is not latest date
Dim strSQL As String
Dim latestDate As Date
Dim db As Database
Dim rsS20 As Recordset
Set db = CurrentDb
Set rsS20 = db.OpenRecordset("Query28")
latestDate = #1/1/1950#
DoCmd.OpenQuery "Query28", acViewNormal, acEdit
'May not need to run Query28 later, keep it for now
rsS20.MoveFirst
Do While Not rsS20.EOF
If (Date - rsS20.Fields(0).Value) <= (Date - latestDate) Then
latestDate = rsS20.Fields(0).Value
End If
rsS20.MoveNext
Loop
strSQL = ""
strSQL = "DELETE [Query28].[Date Requested]" & _
" FROM [Query28]" & _
" WHERE [Query28].[Date Requested] <> #" & latestDate & "#;"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
db.Close
Set rsS20 = Nothing
Set db = Nothing
latestDate = #1/1/1950#
strSQL = ""
DoCmd.RefreshRecord
End Function