Can't retrieve all the values in a matrix report

Hello,

I have been asked to create a matrix report with ‘Description’ & ‘Quantity’ fields. Those fields are existed & fetch data from two different tables named ‘Item Journal Line’ & ‘Item Ledger Entry’.

For that I have declared two record variables(RecIJL, RecILE) & ‘Description’ & ‘Quantity’ variable . I have declared only one DataItem i.e. Production Entry Header. Then I took all required fields along with ‘Description’ & ‘Quantity’ variable.

Now I want when a user selects a ‘Document No.’ the report will shows all Description values as column header caption along with quantity as their body. But my code doesn’t retrieve all the values except only the last one. I have written the following code:

Production Entry Header - OnAfterGetRecord()

RecIJL.RESET;

RecIJL.SETRANGE(RecIJL.“Document No.”,“Production Entry Header”.“Document No.”);

RecIJL.SETFILTER(RecIJL.“Item Type”, ‘%1’ ,RecIJL.“Item Type”::Scrap);

CLEAR(Description);

Quantity:=0;

IF RecIJL.FINDFIRST THEN BEGIN REPEAT

Description:=RecIJL.Description;

Quantity:=RecIJL.Quantity;

UNTIL RecIJL.NEXT=0;

END Else

RecILE.RESET;

RecILE.SETRANGE(RecILE.“Document No.”,“Production Entry Header”.“Document No.”);

RecILE.SETRANGE(RecILE.“Item Type”, RecILe.“Item Type”::Scrap);

IF RecILE.FINDFIRST THEN BEGIN REPEAT

Description:=RecILE.Description;

Quantity:=RecILE.Quantity;

UNTIL RecIJL.NEXT=0;

END;

Can anyone help me?? Thanking You,

HI Rajat ,

You are using FindFirst which Returns Only One Record will retur Instead of that use

FINDSET…

For REference See This Links…

FindFirst

FindLast

FINDSET

SIr,
I did it before. But I didn’t get the required result. I think I need to modify the REPEAT…UNTIL loop…But don’t know how to! Do you have any suggessation??

Hi,

Try To Use ‘FIND’ function

IF RecIJL.FIND(’-’) THEN BEGIN
REPEAT
//Some Code
UNTIL RecIJL.NEXT = 0;

Link Below descrime in detail 'FIND’function
msdn.microsoft.com/…/dd301096.aspx

If FINDSET function is used to modify record, must use: FINDSET(TRUE).

Link Below descrime in detail FINDSET function

https://msdn.microsoft.com/en-us/library/dd301434.aspx

HI Rajat,
i think you were Absolutely Right .i.e If each productionNo Has More Than one Items/Description And you are saving in Only One Description So All values Are Getting OverWritten on One Another.
So Only Last Value will Solely available and only that is Printing…

SO My suggestion Would Be Add Another Dataitem(Item Ledger Entry) Under Production Entry Header (i.e Indent ILE to 1)
And then Instead Of Declaring you could Use DataitemLink So you dont Have TO Use Setrange

Implement the Report and
Try It Let Me Know If i left Any Issues…

Hi Rajat,

i have few questions for you

1.can you clear me one thing whether Production entry Header table having Records(data) are not?
2.Do you want to insert the description and quantity values to Production Entry Header table or else you just want to show the values in report itself?

Thank you
Mahesh U.