I guess it doesn't lose my indentations and whatever. Here it is:
Dim SessionManager As QBSessionManager
Set SessionManager = New QBSessionManager
SessionManager.OpenConnection2 " ", "SFW Sales Order & Month-End", ctLocalQBD
SessionManager.BeginSession "", omDontCare
Dim requestMsgSet As IMsgSetRequest
Set requestMsgSet = SessionManager.CreateMsgSetRequest("US", 8, 0)
requestMsgSet.Attributes.OnError = roeStop
Dim SalesOrderQuery As ISalesOrderQuery
Set SalesOrderQuery = requestMsgSet.AppendSalesOrderQueryRq
SalesOrderQuery.IncludeRetElementList.Add TransID
SalesOrderQuery.IncludeRetElementList.Add EditSequence
SalesOrderQuery.ORTxnNoAccountQuery.TxnFilterNoAccount.ORRefNumberFilter.RefNumberRangeFilter.FromRefNumber.SetValue SalesOrderArray(0, 8)
SalesOrderQuery.IncludeLineItems.SetValue True
Dim responseMsgSet As IMsgSetResponse
Set responseMsgSet = SessionManager.DoRequests(requestMsgSet)
Dim response As IResponse
Set response = responseMsgSet.responseList.GetAt(0)
Dim SalesOrderRetList As ISalesOrderRetList
If response.Detail Is Nothing Then
MsgBox "No Detail available"
Exit Sub
End If
Set SalesOrderRetList = response.Detail
Dim SalesOrderRet As ISalesOrderRet
Set SalesOrderRet = SalesOrderRetList.GetAt(0)
Dim TxnID As String
TxnID = SalesOrderRet.TxnID.GetValue
Set response = responseMsgSet.responseList.GetAt(0)
If response.Detail Is Nothing Then
MsgBox "No Detail available"
Exit Sub
End If
Set SalesOrderRetList = response.Detail
Set SalesOrderRet = SalesOrderRetList.GetAt(0)
requestMsgSet.ClearRequests
Dim SalesOrderMod As ISalesOrderMod
Set SalesOrderMod = requestMsgSet.AppendSalesOrderModRq
SalesOrderMod.TxnID.SetValue SalesOrderRet.TxnID.GetValue
SalesOrderMod.EditSequence.SetValue SalesOrderRet.EditSequence.GetValue
Dim SalesOrderModLine As ISalesOrderLineMod
Dim SalesOrderRetLine As IORSalesOrderLineRet
Dim i As Integer
For i = 0 To SalesOrderIndex - 1
If Not SalesOrderRet.ORSalesOrderLineRetList.GetAt(i).SalesOrderLineRet Is Nothing Then
'-------Line that is causing error is above this line - SalesOrderIndex is number of detail lines in table
Set SalesOrderRetLine = SalesOrderRet.ORSalesOrderLineRetList.GetAt(i)
End If
Set SalesOrderModLine = SalesOrderMod.ORSalesOrderLineModList.Append.SalesOrderLineMod
SalesOrderModLine.TxnLineID.SetValue SalesOrderRetLine.SalesOrderLineRet.TxnLineID.GetValue
If Len(NewDetailLine(i, 0)) > 0 Then
SalesOrderModLine.ItemRef.FullName.SetValue NewDetailLine(x, 0)
End If
If Len(NewDetailLine(i, 1)) > 0 Then
SalesOrderModLine.Desc.SetValue NewDetailLine(i, 1)
End If
If Len(NewDetailLine(i, 2)) > 0 Then
SalesOrderModLine.Other1.SetValue NewDetailLine(i, 2)
End If
If Len(NewDetailLine(i, 3)) > 0 Then
SalesOrderModLine.Quantity.SetValue NewDetailLine(i, 3)
End If
If Len(NewDetailLine(i, 4)) > 0 Then
SalesOrderModLine.Amount.SetValue NewDetailLine(i, 4)
End If
If Len(NewDetailLine(i, 5)) > 0 Then
SalesOrderModLine.ClassRef.FullName.SetValue NewDetailLine(i, 5)
End If
If Len(NewDetailLine(i, 6)) > 0 Then
SalesOrderModLine.SalesTaxCodeRef.FullName.SetValue NewDetailLine(i, 6)
End If
Next i
Set responseMsgSet = SessionManager.DoRequests(requestMsgSet)