$loadcols $colcount

Juan Bofill juanbofillaba at gmail.com
Mon Apr 18 23:41:34 UTC 2022


Hi all

There is a function called list() that has been very handy to populate window fields from an old  DML library. It lets populate the format fields from a row variable:

Set current list tlist
Define list [LastFileUsed]
Calculate tlist as list([LastRowUsed])
Redefine list [LastFileUsed]
Load from list 

LastFileUsed contains the name of a file format and LastRowUsed contains the name of the last row used.

Juan
The The list() Function 
The list() function accepts a set of row variables as parameters, and creates a list variable from them. The definition for the first row variable is used to define the list. If subsequent row variables have different definitions, Omnis will convert the data types to match the first row.
Calculate myList as list(myRow1, myRow2, myRow3)


> On Apr 17, 2022, at 5:05 PM, Doug Easterbrook via omnisdev-en <omnisdev-en at lists.omnis-dev.com> wrote:
> 
> hi Martin,
> 
> you don’t say what you are trying to accomplish where you need to know the number of columns, and I suspect you are trying to do something generic… that this may not be the right answer for.
> 
> 
> I find it rare these days to load items from a list into the current record buffer (which is what $loadCols does).
> 
> 
> if you are processing things from a list you can always refer to things like below
> 
> lTableClassColsList.lCol01
> 
> 
> 
> however, if you must load the data into the local variables (or current record buffer)...
> 
> 
> there are some old style command that just work.
> 
> eg
> 
> the first 3 commands are great in a method, so that it restores the list considered the current one back to being the current one.    its a bit lick a stack and well worth reading about what reversible blocks do.  they are an ancient omnis feature that is still useful periodically
> 
> 
> 
> 
> begin reversible block
> set current list lTableClassColsList
> end reversible block
> 
> 
> once you ’set the current list’ to ‘lTableClassColsList’, you can use a 'for each line in list’. this iterates the current list.
> 
> it is almost like   For lLineNum from 1 to  lTableClassColsList.$linecount, except it works on the current list
> 
> the ‘load from list’ is like.   Do lTableClassColsList.[lLineNum].$loadcols(
> 
> for each line in list
> load from list
> end for
> 
> 
> 
> 
> now, also not sure if you are aware that using lTableClassColsList.$line as the iterator (instead of lineNum) means you can take the [lineNum] out of the load cols.   bur you still nead to specify what coluns you wnat to load into the current record buffer
> 
> eg.
> 
> 
> For lTableClassColsList.$line from 1 to  lTableClassColsList.$linecount        
>    Do lTableClassColsList.$loadcols(lCol01,lCol02,lCol03,lCol04,lCol05,lCol06,lCol07)            
> End For  
> 
> 
> 
> 
> I’ve mentioned current record buffer.        Thats an omnis concept, also from days gone by — still useful if you want ot use them.  they are really a separate variable
> 
> 
> for example.  referring to 
> 
> 
> lTableClassColsList.100.iCol01.  means iCol01 in line 100 of the list.
> 
> this is not the came as iCol01.  (which is a separate variable).
> 
> 
> when you do   lTableClassColsList.100.$loadcols(iCol01)
> 
> it is effectively the same as doing
> 
> calculate iCol01 as  lTableClassColsList.100.$loadcols(iCol01)
> 
> and thats because the two variables occupy different memory.
> 
> 
> 
> if you are using smart lists and SQL — you almost never need to do a $loadcols.
> 
> 
> i you are using omnis DML and file formats, you will may need to use $loadcols from time to time
> 
> 
> 
> 
> Doug Easterbrook
> Arts Management Systems Ltd.
> mailto:doug at artsman.com
> http://www.artsman.com
> Phone (403) 650-1978
> 
>> On April 17, 2022, at 12:28 PM, Martin Obongita via omnisdev-en <omnisdev-en at lists.omnis-dev.com> wrote:
>> 
>> Hi all,
>> I have the line of codes shown below to populate values from a list into local variables using the command $loadcols
>> For lLineNum from 1 to  lTableClassColsList.$linecount        
>>    Do lTableClassColsList.[lLineNum].$loadcols(lCol01,lCol02,lCol03,lCol04,lCol05,lCol06,lCol07)            
>> End For        
>> 
>> How do I assign the columns depending on the number of columns in the list using lTableClassColsList.$colcount?        If $colcount =1 then Do lTableClassColsList.[lLineNum].$loadcols(lCol01)        If $colcount =5 then Do lTableClassColsList.[lLineNum].$loadcols(lCol01,lCol02,lCol03,lCol04,lCol05)        
>> If $colcount =3 then Do lTableClassColsList.[lLineNum].$loadcols(lCol01,lCol02,lCol03)        
>> If $colcount =10 then Do lTableClassColsList.[lLineNum].$loadcols(lCol01,lCol02,lCol03,lCol04,lCol05,lCol06,lCol07,lCol08,lCol09,lCol10)
>> Etc...
>> This is manual coding. Is there a $sendall type of command to load columns in a smart and clean way?
>> 
>> As always, I appreciate your KIND helps.Rgds, Martin.
>> _____________________________________________________________
>> Manage your list subscriptions at https://lists.omnis-dev.com
>> Start a new message -> mailto:omnisdev-en at lists.omnis-dev.com 
> 
> _____________________________________________________________
> Manage your list subscriptions at https://lists.omnis-dev.com
> Start a new message -> mailto:omnisdev-en at lists.omnis-dev.com 



More information about the omnisdev-en mailing list