Rewinding in a Multiple Input filter

zabeer

New Member
I am trying to merge 2 datarows and I am stuck with the following problem. I have 2 datarows like this Datarow 1:

PLAN VALUE

B 50

A 75

Datarow 2

PLAN AMT

C 1000

A 3400

B 1400

Now when I am merging the datarows, I check to see that the plan name is the same so that A has VALUE 75 and AMT 3400 and so on. Now it works fine for A but when it comes to B, the datarow 2 has already reached the end and so I am getting a null value. Is there any way to fix this problem?

This is what I want

PLAN VALUE AMT

A 75 3400

B 50 1400

I tried using the rewind method but it doesn't seem to work as I am getting a 'user error'. This is the code I have in the Fetch method of AcMultipleInputFilter:

Dim HdrDataRow as DataRow1

Dim CarrierDataRow as Datarow2

Dim MergedDatarow as Datarow3

set MergedDatarow = NewDataRow()

Dim adapter as AcDataAdapter



set adapter = InputAdapters.getAt(1)

set HdrDataRow = adapter.fetch()



if not HdrDatarow is nothing then

MergedDatarow.PLAN = HdrDataRow.PLAN

'----------------------------------------------------

' To get the appropriate value from datarow2

set myBuffer = InputAdapters.getAt(2)



set CarrierDataRow = myBuffer.Fetch()

Do while not CarrierDataRow is nothing

if MergedDataRow.PLAN = CarrierDataRow.PLAN then

MergedDataRow.AMT = CarrierDataRow.AMT

end if

set CarrierDataRow = adapter.Fetch() //this is going to

keep fetching records till it reaches the end

Loop



'----------------------------------------------------

MergedDataRow.VALUE = HdrDataRow.VALUE

else

MergedDatarow.PLAN = NULL

MergedDataRow.VALUE = NULL

end if





if HdrDataRow is nothing and CarrierDataRow is nothing then

Exit Function

end if

set Fetch = MergedDataRow

 

yklawitter

New Member
Don't have to rewind it ...

You have posted this topic for while, don't know if you still need help. But, if you do, here is the solution:

First, sort both of your datarow as 'PLAN', then just add statement 'Exit Do' after the statement "MergedDataRow.AMT = CarrierDataRow.AMT" before "End If". In this way, the search will break when it find a match, and keep looking at this point for next search.

Of course, it won't work, if you every plan has multiple search ,then you have to modify a little more.
 
Top