Table field

Peter M. Brigham pmbrig at gmail.com
Sun Jul 12 13:05:03 CEST 2015


Here's a general function for extracting a column or columns from a tab-del table, based on a handler by Mike Doub for deleting columns. IIRC there was an exchange in this list re bug checking and generally tuning it up, and the handler I saved in my library came out of that discussion.

-- Peter

Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig

---------------

function getColumns pData, pColNbrs, pDelim
   -- Extract specified columns from a table in order
   --    pData: a tab-delimited table (delim may be overridden with pDelim)
   --    pColNbrs: A comma separated list of columns or column ranges
   --       to be returned in the order indicated, for example "2,7,5"
   --       or an ascending column range: "3-5"
   --       or a descending column range: "5-3"
   --       or a combination "7,4-5,2,11-9"
   -- based on deleteColumns() by Michael Doub et. al., use-LC list
   
   if pColNbrs = empty then return pData
   if pDelim = empty then put tab into pDelim
   -- first expand column ranges
   repeat for each item pCol in pColNbrs
      put offset("-",pCol) into dashPos
      if dashPos = 0 then
         put pCol & comma after tColsToReturn
      else if dashPos = 1 then
         -- for column numbers like -1, -2, etc.
         put howMany(pDelim,line 1 of pData) + 1 into nbrItems
         put pCol + 1 + nbrItems & comma after tColsToReturn
      else
         -- a column range
         put char 1 to dashPos-1 of pCol into firstColNbr
         put char dashPos+1 to -1 of pCol into lastColNbr
         if firstColNbr < lastColNbr then
            repeat with i = firstColNbr to lastColNbr
               put i & comma after tColsToReturn
            end repeat
         else
            repeat with i = firstColNbr down to lastColNbr
               put i & comma after tColsToReturn
            end repeat
         end if  
      end if       
   end repeat
   delete char -1 of tColsToReturn
   -- then extract columns in order
   set the columnDelimiter to pDelim
   split pData by column
   repeat for each item n in tColsToReturn
      add 1 to x
      put pData[n] into rData[x]
   end repeat
   combine rData by column
   return rData
end getColumns


On Jul 11, 2015, at 7:56 PM, JB wrote:

> If you want to get all the items in a column
> Richard Gaskin wrote a excellent function
> specifically for that.  Like all of his code it
> is fast.
> 
> John Balgenorth
> 
> 
> On Jul 11, 2015, at 4:45 PM, dunbarx at aol.com wrote:
> 
>> The colunDelimiter will not. in and of itself, extract, say, the third item of all the lines in a tab and return formatted dataSet. DataGrids have this sort of functionality built-in, but that is still constructed from standard LC techniques.
>> As per the above, if you wanted that third item all down the table, you have to loop through each line and dig it out, as others have already said.
>> 
>> 
>> Craig Newman
>> 
>> 
>> 
>> -----Original Message-----
>> From: Peter Haworth <pete at lcsql.com>
>> To: How to use LiveCode <use-livecode at lists.runrev.com>
>> Sent: Sat, Jul 11, 2015 6:36 pm
>> Subject: Re: Table field
>> 
>> 
>> What Mike said.  It's somewhat confusing since there is a
>> "columndelimiter"
>> property which is set to tab by default but it seems to only
>> be used in
>> conjunction with the split command.
>> 
>> On Sat, Jul 11, 2015 at 12:57
>> PM Mike Bonner <bonnmike at gmail.com> wrote:
>> 
>>> Its tab and cr delimited data,
>> so set the itemdelimiter to tab and get item
>>> 2 o fline 3 of field "xxx"
>>> 
>>> 
>> On Sat, Jul 11, 2015 at 1:51 PM, Richmond <richmondmathewson at gmail.com>
>>> 
>> wrote:
>>> 
>>>> I have a table field containing some data I copy pasted from a
>>> 
>> spreadsheet
>>>> 
>>>> [being unable to find a reliable way to import data
>> directly from a
>>>> spreadsheet]
>>>> 
>>>> that runs across 3 columns.
>>>> 
>>> 
>>> When I tried this:
>>>> 
>>>> put column 2 of line 3 of fld "XXX"
>>>> 
>>>> I
>> had no joy.
>>>> 
>>>> I would be grateful if someone could tell me how to
>> extract data from
>>>> individual cells in a table field.
>>>> 
>>>> Richmond.
>>> 
>>> 
>>>> _______________________________________________
>>>> use-livecode mailing
>> list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe,
>> unsubscribe and manage your
>>>> subscription preferences:
>>>> 
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>> 
>>> 
>> _______________________________________________
>>> use-livecode mailing list
>>> 
>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe
>> and manage your
>>> subscription preferences:
>>> 
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> 
>> _______________________________________________
>> use-livecode
>> mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe,
>> unsubscribe and manage your subscription
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode




More information about the use-livecode mailing list