How-to: Create a One-Page Matrix by Example
Using the step-by-step recipe I have build a example One-Page matrix based on the following requirements:
Customer/Item Spending: Display the total amount for each item what each of our customers has in order.
Basically this line already reveals the design of our matrix:
- Display the total amount ... -> matrix cells
- for each item what ... -> horizontal dimension
- each of our customers has in order -> vertical dimension
To be able to build the matrix I need to do some preparation:
Customer table
This table needs to be extended with the following three fields (that actualy do the calculations needed for the matrix cells):
Field No. |
Field Name |
Data Type |
Length |
Description |
85.000 |
Total Amount |
Decimal |
|
FlowField: sum of Amount- fields in Sales Line table for customer (incl. next FlowFilters) |
85.001 |
Type Filter |
Option |
|
FlowFilter for Type field in Sales Line table |
85.002 |
No. Filter |
Code |
20 |
FlowFilter or No. field in Sales Line table |
Sales Line table
The following secondary key should be added (to facilitate the FlowField on the Customer table) with Amount field as SumIndexField:
Key |
SumIndexFields |
Sell-to Customer No.,Type,No. |
Amount |
Customer/Item Spending Matrix
This One-Page matrix consists of two pages:
- matrix main page: 62105 - Customer/Item Spending
- matrix sub page: 62107 - Customer/Item Spending Matrix
In both objects (were possible) the changes have been marked related to the steps as defined in by step-by-step recipe.
PAG62105
OBJECT Page 62105 Customer/Item Spending
{
OBJECT-PROPERTIES
{
Date=20-04-12;
Time=12:00:00;
Version List=Advanced Matrix Box;
}
PROPERTIES
{
CaptionML=ENU=Customer/Item Spending;
SaveValues=Yes;
InsertAllowed=No;
DeleteAllowed=No;
ModifyAllowed=No;
SourceTable=Table18;
PageType=Card;
OnOpenPage=BEGIN
//AMB0004-BEGIN
SetColumns(MATRIX_SetWanted::Initial);
//AMB0007-BEGIN
UpdateMatrixSubform
//AMB0007-END
//AMB0004-END
END;
ActionList=ACTIONS
{
{ 1900000004;0 ;ActionContainer;
ActionContainerType=ActionItems }
{ 31 ;1 ;Action ;
CaptionML=ENU=Previous Set;
ToolTipML=ENU=Previous Set;
Description=AMB0008;
Promoted=Yes;
PromotedIsBig=Yes;
Image=PreviousSet;
PromotedCategory=Process;
OnAction=BEGIN
//AMB0008-BEGIN
SetColumns(MATRIX_SetWanted::Previous);
UpdateMatrixSubform
//AMB0008-END
END;
}
{ 102 ;1 ;Action ;
CaptionML=ENU=Previous Column;
ToolTipML=ENU=Previous;
Description=AMB0008;
Promoted=Yes;
PromotedIsBig=Yes;
Image=PreviousRecord;
PromotedCategory=Process;
OnAction=BEGIN
//AMB0008-BEGIN
SetColumns(MATRIX_SetWanted::PreviousColumn);
UpdateMatrixSubform();
//AMB0008-END
END;
}
{ 103 ;1 ;Action ;
CaptionML=ENU=Next Column;
ToolTipML=ENU=Next;
Description=AMB0008;
Promoted=Yes;
PromotedIsBig=Yes;
Image=NextRecord;
PromotedCategory=Process;
OnAction=BEGIN
//AMB0008-BEGIN
SetColumns(MATRIX_SetWanted::NextColumn);
UpdateMatrixSubform();
//AMB0008-END
END;
}
{ 32 ;1 ;Action ;
CaptionML=ENU=Next Set;
ToolTipML=ENU=Next Set;
Description=AMB0008;
Promoted=Yes;
PromotedIsBig=Yes;
Image=NextSet;
PromotedCategory=Process;
OnAction=BEGIN
//AMB0008-BEGIN
SetColumns(MATRIX_SetWanted::Next);
UpdateMatrixSubform
//AMB0008-END
END;
}
}
}
CONTROLS
{
{ 1900000001;0;Container;
ContainerType=ContentArea }
{ 12 ;1 ;Group ;
CaptionML=ENU=Options }
{ 15 ;2 ;Field ;
CaptionML=[ENU=Show Column Name;
NLD=Kolomnaam weergeven];
SourceExpr=ShowColumnName;
OnValidate=BEGIN
ShowColumnNameOnAfterValidate;
END;
}
{ 33 ;1 ;Part ;
Name=MatrixForm;
Description=AMB0001;
PagePartID=Page62107;
PartType=Page }
}
CODE
{
VAR
MatrixRecord@1000 : Record 27;
MatrixRecords@1010 : ARRAY [32] OF Record 27;
MatrixRecordRef@1007 : RecordRef;
MATRIX_SetWanted@1006 : 'Initial,Previous,Same,Next,PreviousColumn,NextColumn';
ShowColumnName@1002 : Boolean;
MATRIX_CaptionSet@1008 : ARRAY [32] OF Text[1024];
MATRIX_CaptionRange@1011 : Text[100];
MATRIX_PKFirstRecInCurrSet@1001 : Text[100];
MATRIX_CurrSetLength@1004 : Integer;
WshShell@11091689 : Automation "{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B} 1.0:{72C24DD5-D70A-438B-8A42-98424B88AFB8}:'Windows Script Host Object Model'.WshShell";
PROCEDURE SetColumns@6(SetWanted@1002 : 'Initial,Previous,Same,Next,PreviousColumn,NextColumn');
VAR
MatrixMgt@1000 : Codeunit 9200;
CaptionFieldNo@1001 : Integer;
CurrentMatrixRecordOrdinal@1003 : Integer;
BEGIN
//AMB0004-BEGIN
CLEAR(MATRIX_CaptionSet);
CLEAR(MatrixRecords);
CurrentMatrixRecordOrdinal := 1;
MatrixRecordRef.GETTABLE(MatrixRecord);
MatrixRecordRef.SETTABLE(MatrixRecord);
//AMB0009-BEGIN
IF ShowColumnName THEN
CaptionFieldNo := MatrixRecord.FIELDNO(Description)
ELSE
//AMB0009-END
CaptionFieldNo := MatrixRecord.FIELDNO("No.");
MatrixMgt.GenerateMatrixData(MatrixRecordRef,SetWanted,ARRAYLEN(MatrixRecords),CaptionFieldNo,MATRIX_PKFirstRecInCurrSet,
MATRIX_CaptionSet,MATRIX_CaptionRange,MATRIX_CurrSetLength);
IF MATRIX_CurrSetLength > 0 THEN BEGIN
MatrixRecord.SETPOSITION(MATRIX_PKFirstRecInCurrSet);
MatrixRecord.FIND;
REPEAT
MatrixRecords[CurrentMatrixRecordOrdinal].COPY(MatrixRecord);
CurrentMatrixRecordOrdinal := CurrentMatrixRecordOrdinal + 1;
UNTIL (CurrentMatrixRecordOrdinal > MATRIX_CurrSetLength) OR (MatrixRecord.NEXT <> 1);
END;
//AMB0004-END
END;
PROCEDURE UpdateMatrixSubform@7();
BEGIN
//AMB0007-BEGIN
CurrPage.MatrixForm.FORM.Load(MATRIX_CaptionSet,MatrixRecords,MatrixRecord);
//AMB0009-BEGIN
UpdateThePage
//AMB0009-END
//AMB0007-END
END;
LOCAL PROCEDURE ShowColumnNameOnAfterValidate@8();
BEGIN
//AMB0009-BEGIN
SetColumns(MATRIX_SetWanted::Same);
UpdateMatrixSubform
//AMB0009-END
END;
PROCEDURE UpdateThePage@10();
BEGIN
//AMB0009-BEGIN
IF ISCLEAR(WshShell) THEN
CREATE(WshShell, TRUE, TRUE);
WshShell.SendKeys('{F5}');
//AMB0009-END
END;
BEGIN
{
<changelog>
<add id="AMB0001"
dev="lvanvugt"
date="2012-04-20"
source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx"
releaseversion="Advanced Matrix Box">Step 2 - One-Page Matrix Step-by-Step</add>
<change id="AMB0004"
dev="lvanvugt"
date="2012-04-20"
source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx"
releaseversion="Advanced Matrix Box">Step 4 - One-Page Matrix Step-by-Step</change>
<change id="AMB0007"
dev="lvanvugt"
date="2012-04-20"
source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx"
releaseversion="Advanced Matrix Box">Step 7 - One-Page Matrix Step-by-Step</change>
<change id="AMB0008"
dev="lvanvugt"
date="2012-04-20"
source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx"
releaseversion="Advanced Matrix Box">Step 8 - One-Page Matrix Step-by-Step</change>
<change id="AMB0009"
dev="lvanvugt"
date="2012-04-20"
source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx"
releaseversion="Advanced Matrix Box">Step 9 - One-Page Matrix Step-by-Step</change>
</changelog>
}
END.
}
}
PAG62107
OBJECT Page 62107 Customer/Item Spending Matrix { OBJECT-PROPERTIES { Date=20-04-12; Time=12:00:00; Version List=Advanced Matrix Box; } PROPERTIES { Editable=No; CaptionML=ENU=Customer/Item Spending Matix; SourceTable=Table18; PageType=ListPart; OnInit=BEGIN //AMB0006-BEGIN Field32Visible := TRUE; Field31Visible := TRUE; Field30Visible := TRUE; Field29Visible := TRUE; Field28Visible := TRUE; Field27Visible := TRUE; Field26Visible := TRUE; Field25Visible := TRUE; Field24Visible := TRUE; Field23Visible := TRUE; Field22Visible := TRUE; Field21Visible := TRUE; Field20Visible := TRUE; Field19Visible := TRUE; Field18Visible := TRUE; Field17Visible := TRUE; Field16Visible := TRUE; Field15Visible := TRUE; Field14Visible := TRUE; Field13Visible := TRUE; Field12Visible := TRUE; Field11Visible := TRUE; Field10Visible := TRUE; Field9Visible := TRUE; Field8Visible := TRUE; Field7Visible := TRUE; Field6Visible := TRUE; Field5Visible := TRUE; Field4Visible := TRUE; Field3Visible := TRUE; Field2Visible := TRUE; Field1Visible := TRUE; //AMB0006-END END; OnOpenPage=BEGIN //AMB0006-BEGIN MATRIX_NoOfMatrixColumns := ARRAYLEN(MATRIX_CellData); //AMB0006-END END; OnAfterGetRecord=VAR MATRIX_CurrentColumnOrdinal@1018 : Integer; BEGIN //AMB0006-BEGIN MATRIX_CurrentColumnOrdinal := 0; IF MatrixRecord.FIND('-') THEN REPEAT MATRIX_CurrentColumnOrdinal := MATRIX_CurrentColumnOrdinal + 1; MATRIX_OnAfterGetRecord(MATRIX_CurrentColumnOrdinal); UNTIL (MatrixRecord.NEXT(1) = 0) OR (MATRIX_CurrentColumnOrdinal = MATRIX_NoOfMatrixColumns); //AMB0006-END END; } CONTROLS { { 1900000001;0;Container; ContainerType=ContentArea } { 1 ;1;Group ; Name=Group; Description=AMB0009; GroupType=Repeater; FreezeColumnID=Name } { 2 ;2;Field ; Description=AMB0001; SourceExpr="No." } { 4 ;2;Field ; Description=AMB0001; SourceExpr=Name } { 1008;2;Field ; Name=Field1; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[1]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[1]; Visible=Field1Visible; OnDrillDown=BEGIN MatrixOnDrillDown(1); END; } { 1100409033;2;Field ; Name=Field2; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[2]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[2]; Visible=Field2Visible; OnDrillDown=BEGIN MatrixOnDrillDown(2); END; } { 1100409034;2;Field ; Name=Field3; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[3]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[3]; Visible=Field3Visible; OnDrillDown=BEGIN MatrixOnDrillDown(3); END; } { 1100409031;2;Field ; Name=Field4; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[4]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[4]; Visible=Field4Visible; OnDrillDown=BEGIN MatrixOnDrillDown(4); END; } { 1100409032;2;Field ; Name=Field5; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[5]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[5]; Visible=Field5Visible; OnDrillDown=BEGIN MatrixOnDrillDown(5); END; } { 1100409029;2;Field ; Name=Field6; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption Visible=Field6Visible; OnDrillDown=BEGIN MatrixOnDrillDown(6); END; } { 1100409030;2;Field ; Name=Field7; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[7]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[7]; Visible=Field7Visible; OnDrillDown=BEGIN MatrixOnDrillDown(7); END; } { 1100409027;2;Field ; Name=Field8; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption Visible=Field8Visible; OnDrillDown=BEGIN MatrixOnDrillDown(8); END; } { 1100409028;2;Field ; Name=Field9; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[9]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[9]; Visible=Field9Visible; OnDrillDown=BEGIN MatrixOnDrillDown(9); END; } { 1100409025;2;Field ; Name=Field10; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[10]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[10]; Visible=Field10Visible; OnDrillDown=BEGIN MatrixOnDrillDown(10); END; } { 1100409026;2;Field ; Name=Field11; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[11]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[11]; Visible=Field11Visible; OnDrillDown=BEGIN MatrixOnDrillDown(11); END; } { 1100409023;2;Field ; Name=Field12; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[12]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[12]; Visible=Field12Visible; OnDrillDown=BEGIN MatrixOnDrillDown(12); END; } { 1100409024;2;Field ; Name=Field13; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[13]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[13]; Visible=Field13Visible; OnDrillDown=BEGIN MatrixOnDrillDown(13); END; } { 1100409021;2;Field ; Name=Field14; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[14]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[14]; Visible=Field14Visible; OnDrillDown=BEGIN MatrixOnDrillDown(14); END; } { 1100409022;2;Field ; Name=Field15; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[15]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[15]; Visible=Field15Visible; OnDrillDown=BEGIN MatrixOnDrillDown(15); END; } { 1100409019;2;Field ; Name=Field16; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[16]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[16]; Visible=Field16Visible; OnDrillDown=BEGIN MatrixOnDrillDown(16); END; } { 1100409020;2;Field ; Name=Field17; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[17]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[17]; Visible=Field17Visible; OnDrillDown=BEGIN MatrixOnDrillDown(17); END; } { 1100409017;2;Field ; Name=Field18; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[18]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[18]; Visible=Field18Visible; OnDrillDown=BEGIN MatrixOnDrillDown(18); END; } { 1100409018;2;Field ; Name=Field19; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[19]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[19]; Visible=Field19Visible; OnDrillDown=BEGIN MatrixOnDrillDown(19); END; } { 1100409015;2;Field ; Name=Field20; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[20]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[20]; Visible=Field20Visible; OnDrillDown=BEGIN MatrixOnDrillDown(20); END; } { 1100409016;2;Field ; Name=Field21; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[21]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[21]; Visible=Field21Visible; OnDrillDown=BEGIN MatrixOnDrillDown(21); END; } { 1100409013;2;Field ; Name=Field22; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[22]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[22]; Visible=Field22Visible; OnDrillDown=BEGIN MatrixOnDrillDown(22); END; } { 1100409014;2;Field ; Name=Field23; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[23]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[23]; Visible=Field23Visible; OnDrillDown=BEGIN MatrixOnDrillDown(23); END; } { 1100409011;2;Field ; Name=Field24; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[24]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[24]; Visible=Field24Visible; OnDrillDown=BEGIN MatrixOnDrillDown(24); END; } { 1100409012;2;Field ; Name=Field25; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[25]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[25]; Visible=Field25Visible; OnDrillDown=BEGIN MatrixOnDrillDown(25); END; } { 1100409009;2;Field ; Name=Field26; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[26]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[26]; Visible=Field26Visible; OnDrillDown=BEGIN MatrixOnDrillDown(26); END; } { 1100409010;2;Field ; Name=Field27; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[27]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[27]; Visible=Field27Visible; OnDrillDown=BEGIN MatrixOnDrillDown(27); END; } { 1100409007;2;Field ; Name=Field28; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[28]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[28]; Visible=Field28Visible; OnDrillDown=BEGIN MatrixOnDrillDown(28); END; } { 1100409008;2;Field ; Name=Field29; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[29]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[29]; Visible=Field29Visible; OnDrillDown=BEGIN MatrixOnDrillDown(29); END; } { 1100409005;2;Field ; Name=Field30; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[30]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[30]; Visible=Field30Visible; OnDrillDown=BEGIN MatrixOnDrillDown(10); END; } { 1100409006;2;Field ; Name=Field31; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[31]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[31]; Visible=Field31Visible; OnDrillDown=BEGIN MatrixOnDrillDown(31); END; } { 1100409004;2;Field ; Name=Field32; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[32]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[32]; Visible=Field32Visible; OnDrillDown=BEGIN MatrixOnDrillDown(32); END; } } CODE { VAR SalesLine@1035 : Record 37; MatrixRecords@1002 : ARRAY [32] OF Record 27; MatrixRecord@1039 : Record 27; MATRIX_NoOfMatrixColumns@1001 : Integer; MATRIX_CellData@1042 : ARRAY [32] OF Decimal; MATRIX_ColumnCaption@1000 : ARRAY [32] OF Text[1024]; Field1Visible@19069335 : Boolean INDATASET; Field2Visible@19014807 : Boolean INDATASET; Field3Visible@19062679 : Boolean INDATASET; Field4Visible@19074839 : Boolean INDATASET; Field5Visible@19043543 : Boolean INDATASET; Field6Visible@19067287 : Boolean INDATASET; Field7Visible@19067863 : Boolean INDATASET; Field8Visible@19039959 : Boolean INDATASET; Field9Visible@19008663 : Boolean INDATASET; Field10Visible@19006501 : Boolean INDATASET; Field11Visible@19052468 : Boolean INDATASET; Field12Visible@19013039 : Boolean INDATASET; Field13Visible@19079726 : Boolean INDATASET; Field14Visible@19077225 : Boolean INDATASET; Field15Visible@19035896 : Boolean INDATASET; Field16Visible@19003763 : Boolean INDATASET; Field17Visible@19049730 : Boolean INDATASET; Field18Visible@19007213 : Boolean INDATASET; Field19Visible@19053180 : Boolean INDATASET; Field20Visible@19014629 : Boolean INDATASET; Field21Visible@19060596 : Boolean INDATASET; Field22Visible@19021167 : Boolean INDATASET; Field23Visible@19047854 : Boolean INDATASET; Field24Visible@19045353 : Boolean INDATASET; Field25Visible@19004024 : Boolean INDATASET; Field26Visible@19011891 : Boolean INDATASET; Field27Visible@19057858 : Boolean INDATASET; Field28Visible@19015341 : Boolean INDATASET; Field29Visible@19061308 : Boolean INDATASET; Field30Visible@19010597 : Boolean INDATASET; Field31Visible@19056564 : Boolean INDATASET; Field32Visible@19017135 : Boolean INDATASET; LOCAL PROCEDURE MATRIX_OnAfterGetRecord@1047(ColumnID@1000 : Integer); VAR Cust@1001 : Record 18; BEGIN //AMB0006-BEGIN Cust.COPY(Rec); Cust.SETRANGE("Type Filter","Type Filter"::Item); Cust.SETRANGE("No. Filter",MatrixRecords[ColumnID]."No."); Cust.CALCFIELDS("Total Amount"); MATRIX_CellData[ColumnID] := Cust."Total Amount"; SetVisible; //AMB0006-END END; PROCEDURE Load@3(MatrixColumns1@1001 : ARRAY [32] OF Text[1024];VAR MatrixRecords1@1002 : ARRAY [32] OF Record 27;VAR MatrixRecord1@1000 : Record 27); BEGIN //AMB0005-BEGIN COPYARRAY(MATRIX_ColumnCaption,MatrixColumns1,1); COPYARRAY(MatrixRecords,MatrixRecords1,1); MatrixRecord.COPY(MatrixRecord1); //AMB0005-END END; PROCEDURE MatrixOnDrillDown@1100409001(ColumnID@1000 : Integer); BEGIN //AMB0009-BEGIN SalesLine.SETCURRENTKEY("Sell-to Customer No.",Type,"No."); SalesLine.SETRANGE("Sell-to Customer No.","No."); SalesLine.SETRANGE(Type,SalesLine.Type::Item); SalesLine.SETRANGE("No.",MatrixRecords[ColumnID]."No."); FORM.RUN(0,SalesLine); //AMB0009-END END; PROCEDURE SetVisible@6(); BEGIN //AMB0006-BEGIN Field1Visible := MATRIX_ColumnCaption[1] <> ''; Field2Visible := MATRIX_ColumnCaption[2] <> ''; Field3Visible := MATRIX_ColumnCaption[3] <> ''; Field4Visible := MATRIX_ColumnCaption[4] <> ''; Field5Visible := MATRIX_ColumnCaption[5] <> ''; Field6Visible := MATRIX_ColumnCaption Field7Visible := MATRIX_ColumnCaption[7] <> ''; Field8Visible := MATRIX_ColumnCaption Field9Visible := MATRIX_ColumnCaption[9] <> ''; Field10Visible := MATRIX_ColumnCaption[10] <> ''; Field11Visible := MATRIX_ColumnCaption[11] <> ''; Field12Visible := MATRIX_ColumnCaption[12] <> ''; Field13Visible := MATRIX_ColumnCaption[13] <> ''; Field14Visible := MATRIX_ColumnCaption[14] <> ''; Field15Visible := MATRIX_ColumnCaption[15] <> ''; Field16Visible := MATRIX_ColumnCaption[16] <> ''; Field17Visible := MATRIX_ColumnCaption[17] <> ''; Field18Visible := MATRIX_ColumnCaption[18] <> ''; Field19Visible := MATRIX_ColumnCaption[19] <> ''; Field20Visible := MATRIX_ColumnCaption[20] <> ''; Field21Visible := MATRIX_ColumnCaption[21] <> ''; Field22Visible := MATRIX_ColumnCaption[22] <> ''; Field23Visible := MATRIX_ColumnCaption[23] <> ''; Field24Visible := MATRIX_ColumnCaption[24] <> ''; Field25Visible := MATRIX_ColumnCaption[25] <> ''; Field26Visible := MATRIX_ColumnCaption[26] <> ''; Field27Visible := MATRIX_ColumnCaption[27] <> ''; Field28Visible := MATRIX_ColumnCaption[28] <> ''; Field29Visible := MATRIX_ColumnCaption[29] <> ''; Field30Visible := MATRIX_ColumnCaption[30] <> ''; Field31Visible := MATRIX_ColumnCaption[31] <> ''; Field32Visible := MATRIX_ColumnCaption[32] <> ''; //AMB0006-END END; BEGIN { <changelog> <add id="AMB0002" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 1 - One-Page Matrix Step-by-Step</add> <change id="AMB0003" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 3 - One-Page Matrix Step-by-Step</change> <change id="AMB0005" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 5 - One-Page Matrix Step-by-Step</change> <change id="AMB0006" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 6 - One-Page Matrix Step-by-Step</change> <change id="AMB0009" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 9 - One-Page Matrix Step-by-Step</change> </changelog> } END. } } ;
;
;
;
<> '';
<> '';
This was originally posted here.
*This post is locked for comments