Skip to main content

Removing dublicate using Containers or set through X++

Using Set :
 static void Job38(Args _args)
{  
   container       c1 = [1,2,2,3,4,5,6,6,7,7,8]; 
   container       c2;   
   Set             set = new set(Types::Integer);   
   SetEnumerator   se;   
   int             i;      
  // Load the containre into the set 
   for (i=1; i<=conlen(c1); i++)      
   set.add(conpeek(c1, i));     // Get the enumerator for traversal  
   se = set.getEnumerator();     // Unload the set back into the c2 container   
   while (se.moveNext())       
   c2 += se.current();     // Output the container   
   info(strfmt("%1", con2str(c2)));
  }

Using container :
 static void Job38(Args _args)
{   
  container       c1 = [1,2,2,3,4,5,6,6,7,7,8]; 
  container       c2; 
  int             i;  
  int             conVal;   
  
   for (i=1; i<=conlen(c1); i++)
   {      
 // Store what we find       
     conVal = conPeek(c1, i);         // Search the container to see if it already exists, if not insert     
     if (confind(c2, conVal) == 0)       
    {          
     c2 += conpeek(c1, i);    
    } 
  }

Comments

Popular posts from this blog

Form Auto refresh in D365 fo

Here I will explain one of the requirements I came across to refresh from automatically without User interaction.  Note: Make sure we do have all the handlers to stop UIrefreshing after certain hours of execution, else it causes the system to slow down after a certain time of continuous usage of this UI in the below example to overcome this case we use to check session login time and stopping form to refresh after certain hours of execution. Recommended to use this on pages that hold less data or smaller data sets. - NoofSeconds .value() is an integer control on UI that allows the user to choose a value.( best to fix a value like 5 seconds or a Minimum value to avoid unnecessary executions) Create a new form method and create as of below. void refreshFormWithTimeout (AsyncTaskResult _result)     {         System.Exception ex;         try         {              if(!element.closed...

Splitting Sring through X++ in DAX

  Splits a string into a list of substrings delimited by elements in the specified delimiter string. static void StringSplit(Args _args) {        List            list = new List(Types::String);     container PackedList;     ListIterator  iterator;     str can = "Lev_Sales00001_1";         list = Global::strSplit(can,"_");     iterator = new ListIterator(list);     while(iterator.more())     {       PackedList +=   iterator.value();         iterator.next();     }     info(conPeek(PackedList,1));         } output :  

SQL script to Fetching Tables list holding more data

  There may be times when we need to restore a database from a non-production or production environment for troubleshooting purposes, and we may encounter a DB size issue or need to know a list of tables with large amounts of data in order to enable purging them. This query returns a list of tables that contain large amounts of data in sequential order.  Query to Execute in SQL SELECT s.Name AS SchemaName             ,t.Name AS TableName             ,p.rows AS RowCounts             ,CAST(ROUND((SUM(a.used_pages) / 128.00), 2) AS NUMERIC(36, 2)) AS Used_MB             ,CAST(ROUND((SUM(a.total_pages) - SUM(a.used_pages)) / 128.00, 2) AS NUMERIC(36, 2)) AS Unused_MB             ,CAST(ROUND((SUM(a.total_pages) ...