Skip to content

Instantly share code, notes, and snippets.

@jhoek
Created June 2, 2017 10:12
Show Gist options
  • Save jhoek/1edd42368085741eac03da0cb9532aeb to your computer and use it in GitHub Desktop.
Save jhoek/1edd42368085741eac03da0cb9532aeb to your computer and use it in GitHub Desktop.
OBJECT Codeunit 50003 ShareTable/RecordArray Test
{
OBJECT-PROPERTIES
{
Date=02-06-17;
Time=12:11:19;
Modified=Yes;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
CASE STRMENU('ShareTable,RecordArray') OF
1: ShareTable();
2: RecordArray();
END;
END;
}
CODE
{
LOCAL PROCEDURE ShareTable@11152001();
VAR
CustomerBufferA@11152001 : TEMPORARY Record 18;
CustomerBufferB@11152000 : TEMPORARY Record 18;
BEGIN
CustomerBufferA."No." := 'ABC';
CustomerBufferA.INSERT;
CustomerBufferA."No." := 'DEF';
CustomerBufferA.INSERT;
// Both buffers now point to the same dataset
CustomerBufferB.COPY(CustomerBufferA, TRUE);
MESSAGE('%1\%2', CustomerBufferA.COUNT, CustomerBufferB.COUNT);
// Current record pointer applies to each buffer separately
CustomerBufferB.FINDFIRST();
MESSAGE('%1\%2', CustomerBufferA."No.", CustomerBufferB."No.");
// Filtering applies to each buffer separately
CustomerBufferB.SETFILTER("No.", '*E*');
MESSAGE('%1\%2', CustomerBufferA.GETFILTERS, CustomerBufferB.GETFILTERS);
MESSAGE('%1\%2', CustomerBufferA.COUNT, CustomerBufferB.COUNT);
// Sort order applies to each buffer separately
CustomerBufferB.SETCURRENTKEY(Name);
MESSAGE('%1\%2', CustomerBufferA.CURRENTKEY, CustomerBufferB.CURRENTKEY);
// Resetting one buffer does not affect the other one
CustomerBufferA.RESET;
MESSAGE('%1\%2', CustomerBufferA.GETFILTERS, CustomerBufferB.GETFILTERS);
END;
LOCAL PROCEDURE RecordArray@11152005();
VAR
CustomerBuffer@11152000 : ARRAY [2] OF TEMPORARY Record 18;
BEGIN
CustomerBuffer[1]."No." := 'ABC';
CustomerBuffer[1].INSERT;
CustomerBuffer[1]."No." := 'DEF';
CustomerBuffer[1].INSERT;
CustomerBuffer[2]."No." := 'XYZ';
CustomerBuffer[2].INSERT;
// Both buffers point to the same dataset
MESSAGE('%1\%2', CustomerBuffer[1].COUNT, CustomerBuffer[2].COUNT);
// Current record pointer applies to each buffer separately
CustomerBuffer[2].FINDFIRST();
MESSAGE('%1\%2', CustomerBuffer[1]."No.", CustomerBuffer[2]."No.");
// Filtering applies to each buffer separately
CustomerBuffer[2].SETFILTER("No.", '*E*');
MESSAGE('%1\%2', CustomerBuffer[1].GETFILTERS, CustomerBuffer[2].GETFILTERS);
MESSAGE('%1\%2', CustomerBuffer[1].COUNT, CustomerBuffer[2].COUNT);
// Sort order applies to each buffer separately
CustomerBuffer[2].SETCURRENTKEY(Name);
MESSAGE('%1\%2', CustomerBuffer[1].CURRENTKEY, CustomerBuffer[2].CURRENTKEY);
// Resetting one buffer does not affect the other one
CustomerBuffer[1].RESET;
MESSAGE('%1\%2', CustomerBuffer[1].GETFILTERS, CustomerBuffer[2].GETFILTERS);
END;
BEGIN
{
Tested in NAV2017, build 15052
}
END.
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment