Filter on data in subform

mabl4367mabl4367 Member Posts: 143
Hi all!

I recently found a simple way to enable a user to filter the records in a form with respect to the data in a subform.

In the sales order form for example, you can not set a filter on the subform filed quantity and expect to see only orders with orderlines that have a quantity that satesfies the conditions set by your filter. The filter will only affect the lines displayed on that perticular sales order.

What I did was this. In the sales order form I created this function:
UseSLFiltersOnSH()
CLEARMARKS();

SLView := CurrForm.SalesLines.FORM.fnGetView();
recSL.SETVIEW(SLView);


recSH.SETVIEW(Rec.GETVIEW());
IF recSH.FINDFIRST THEN BEGIN
DLG.OPEN(text001);
iMax := recSH.COUNT();
REPEAT
recSL.SETRANGE("Document No.",recSH."No.");
IF NOT recSL.ISEMPTY THEN
recSH.MARK(TRUE);
i := i + 1;
IF (i MOD (iMax DIV 100)) = 0 THEN
DLG.UPDATE(1,ROUND(i/iMax)*10000);
UNTIL recSH.NEXT() = 0;
DLG.CLOSE;
END;

COPY(recSH);
MARKEDONLY(TRUE);

The user can call this from a menu on the form.

In the Sales Order Subform i created this function:
fnGetView() view : Text[1024]
EXIT(GETVIEW());

This way the user can set filtes on the order lines and then call the function that marks the sales headers and then shows only the marked ones.
Sign In or Register to comment.