Private Sub listOpenSOUnsched_AfterUpdate()
'***********************************************************
'Purpose:'1) enter the SO data into the selected cell ranges,
'2) update SO Detail table, 3) update status of SO
' and 4) refresh unscheduled list
'AM fixed errors 9/25/16
'***********************************************************
'On Error GoTo listOpenSOUnsched_AfterUpdate_Err
Dim addr As String, Ct As String
Dim rg As Range, col As String, rw As String, s As String, strCriteria As String
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rstReset As New ADODB.Recordset
Dim rstDetail As New ADODB.Recordset
Dim rstEmp As New ADODB.Recordset
addr = Selection.Address
Ct = Selection.Areas.Count
'GCOUNT = GCOUNT + 1
'MsgBox GCOUNT
For Each rg In Range(Selection.Address)
'add the SO data to the Service Order Detail table, including the TechID
Call Detail_Update(Me.listOpenSOUnsched.Column(0), rg.Row)
'update selected cells data
If Cells(rg.Row, rg.Column).Value = "" Then 'if cell is empty
With Me.listOpenSOUnsched
If .Column(9) = "Scheduled Maintenance" Then
Cells(rg.Row, rg.Column).Value = .Column(0) & ": SM, " & .Column(1) & "," & .Column(3)
Else
Cells(rg.Row, rg.Column).Value = .Column(0) & ":" & .Column(9) & ", " & .Column(1) & "," & .Column(3)
End If
End With
Else
With Me.listOpenSOUnsched ''if cell is not empty
If .Column(9) = "Scheduled Maintenance" Then
Cells(rg.Row, rg.Column).Value = Cells(rg.Row, rg.Column).Value & vbNewLine & .Column(0) & ": SM, " & .Column(1) & "," & .Column(3)
Else
Cells(rg.Row, rg.Column).Value = Cells(rg.Row, rg.Column).Value & vbNewLine & .Column(0) & ": " & .Column(9) & ", " & .Column(1) & "," & .Column(3)
End If
End With
End If
Next rg
'update the status of the scheduled SO
'*************************************
strCriteria = "[SO#] = " & listOpenSOUnsched.Column(0)
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=S:\\FE\XXX\Prod\XXXXX.mdb;" & _
"Persist Security Info=False;"
rst.Open "SELECT * FROM qryOpenSOs_Update WHERE [SO#] = " & CLng(listOpenSOUnsched.Column(0)), cnn, adOpenDynamic, adLockOptimistic, adCmdText
With rst
.Fields("StatusID").Value = 2
.Update
End With
MsgBox "Status of SO# " & listOpenSOUnsched.Column(0) & " has been changed to SCHEDULED."
'reset the unscheduled list
'*************************************
rstReset.Open "SELECT * FROM qryOpenSOs_NotSched;", cnn, adOpenStatic
If rstReset.EOF Or rstReset.BOF Then
MsgBox "There are no more Unscheduled Service orders for the month."
GoTo listOpenSOUnsched_AfterUpdate_Exit
End If
rstReset.MoveFirst
i = 0
With Me.listOpenSOUnsched
.Clear
Do
.AddItem
.List(i, 0) = rstReset![SO#]
.List(i, 1) = rstReset![Customer]
If Not IsNull(rstReset![MoName]) Then
.List(i, 2) = rstReset![MoName]
Else
.List(i, 2) = ""
End If
If Not IsNull(rstReset![City]) Then
.List(i, 3) = rstReset![City]
Else
.List(i, 3) = ""
End If
If Not IsNull(rstReset![Status]) Then
.List(i, 4) = rstReset![Status]
Else
.List(i, 4) = ""
End If
If Not IsNull(rstReset![MaintType]) Then
.List(i, 5) = rstReset![MaintType]
Else
.List(i, 5) = ""
End If
If Not IsNull(rstReset![Period]) Then
.List(i, 6) = rstReset![Period]
Else
.List(i, 6) = ""
End If
If Not IsNull(rstReset![# Batts]) Then
.List(i, 7) = rstReset![# Batts]
Else
.List(i, 7) = ""
End If
If Not IsNull(rstReset![EstTechDays]) Then
.List(i, 8) = rstReset![EstTechDays]
Else
.List(i, 8) = ""
End If
If Not IsNull(rstReset![Service Type]) Then
.List(i, 9) = rstReset![Service Type]
Else
.List(i, 9) = ""
End If
i = i + 1
rstReset.MoveNext
Loop Until rstReset.EOF
End With
listOpenSOUnsched_AfterUpdate_Exit:
On Error Resume Next
rst.Close
rstrest.Close
'rstEmp.Close
cnn.Close
Set rst = Nothing
Set rstDetail = Nothing
Set rstEmp = Nothing
Set rstReset = Nothing
Set cnn = Nothing
Exit Sub
listOpenSOUnsched_AfterUpdate_Err:
MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, "Error!"
Resume listOpenSOUnsched_AfterUpdate_Exit
End Sub
Thanks very much.
Bookmarks