ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How to allocate movement if expected last record is missing (https://www.excelbanter.com/excel-programming/313130-how-allocate-movement-if-expected-last-record-missing.html)

Hilton

How to allocate movement if expected last record is missing
 
Hi,

I'm not an accomplished programmer so please bear with me. Here is very
rudimentary code I have written. No doubt there are better ways of doing
this. However I ran this on a sample file and it does what I want it to
do.However I need some help to incorporate an aspect I cannot seem to get
right.


Input File Sample
Tline, 8, 11, Tline, 386, 16
10123567.01,YP_TRX_PREV
10123567.01,YP_TRX_CURR
10123568.01,YP_TRX_PREV
10123568.01,YP_TRX_INCR
10123569.01,YP_TRX_PREMINV
10123569.01,YP_TRX_CURR

Would like to see this
10123567.01 YP_TRX_PREV, PREV
10123567.01 YP_TRX_CURR, CURR
10123568.01 YP_TRX_PREV, PREV
10123568.01 YP_TRX_INCR, OFF
10123569.01 YP_TRX_PREMINV, PREMINV
10123569.01 YP_TRX_CURR, CURR


Dim Tline As String
Dim SegStr As String
Dim i As Long
Dim TrxStr, PolStr as string


Line Input #1, Tline
InitPolRef = Mid$(Tline, 8, 11)
'eg 100123567.01
TrxStr = Mid$(Tline, 386, 16)

'First Record
If TrxStr < "YP_TRX_PREV " Then
TrxStr = "NBUS"
Else
TrxStr = Right(TrxStr, 9)
End If

SegStr = Mid$(Tline, 1, 2) & Mid$(Tline, 3, 2) & Mid$(Tline, 5, 2) &
Mid$(Tline, 7, 12) & Mid$(Tline, 24, 9)
& Mid$(Tline, 35, 2) & Mid$(Tline, 37, 2) & Mid$(Tline, 39, 2) & Mid$(Tline,
41, 2)
Print #2, SegStr & "," & TrxStr


'Balance of Records
i = 2
Do Until EOF(1)
Line Input #1, Tline
PolStr = Mid$(Tline, 8, 11)
TrxStr = Mid$(Tline, 386, 16)


'If 2nd record(Polstr) = 1st record(InitPolRef)
If InitPolRef = PolStr Then
TrxStr = Right(TrxStr, 9)

'If 2nd record(Polstr) < 1st record(InitPolRef)
Else
PolStr = Mid$(Tline, 8, 11)
InitPolRef = PolStr

If TrxStr < "YP_TRX_PREV " Then
TrxStr = "NBUS"
Else
TrxStr = "PREV"
End If

End If

SegStr = Mid$(Tline, 1, 2) & Mid$(Tline, 3, 2) & Mid$(Tline, 5, 2) &
Mid$(Tline, 7, 12) & Mid$(Tline, 24, 9)
& Mid$(Tline, 35, 2) & Mid$(Tline,37, 2) & Mid$(Tline, 39, 2) & Mid$(Tline,
41, 2)
Print #2, SegStr & "," & TrxStr

i = i + 1
Loop

Close #1
Close #2

MsgBox ("End of Run: ") + Str(i - 1) + " records processed"



I need to put in an "OFF" movement when the LAST record of a series is NOT
"YP_TRX_CURR" i.e
10123568.01,YP_TRX_PREV
10123568.01,YP_TRX_INCR

Result
10123568.01 YP_TRX_PREV, PREV
10123568.01 YP_TRX_INCR, OFF

If it helps the file is sorted by "Tline, 8, 11" field and there is a date
associated with each "Tline, 386, 16" field.

Hope I have not irritated people by this long-winded explanation. Can anyone
help please, please, please...?

Thanks
Hilton




All times are GMT +1. The time now is 02:18 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com