arraybuild
ARRAY
,
SEPARATOR
,
DATABASE
,
FORMULA
,
QUERY
The arraybuild statement builds an array by scanning a database and creating an array element for every record (including invisible records) in the database (see Text Arrays).
Parameters
This statement has five parameters:
array – is the variable or field that will contain the new array. If you use a field for this parameter it must be a text field.
separator – is the separator character or characters for the output array.
database – is the database that will be scanned. This database must be currently open. If this parameter is ""
then the current database will be scanned. Note: The arraybuild( function will scan every record in the database, including records that are not currently selected. If you want to build an array from only selected records, use the arrayselectedbuild( function.
formula – is the formula that will be used to extract data from the database and build each array element. If the formula results in empty text (“”) for a record then no element is added to the array for that record. The formula usually references fields in the database being scanned. It may also use the seq() function to include the number of each record (within the scan).
query – is an optional formula that determines whether a record should be included in the output array. For example, the query formula Price > 100
could be used if you only wanted to include items with a price greater than 100 in the array. The query parameter can be omitted, in which case all records will be included.
Description
This statement creates a Text Array by scanning contents of a database. This statement scans ALL records in the database, whether they are visible or not. If you only want to scan visible (selected) records, use the arrayselectedbuild statement. (This operation is also available as a function, see arraybuild(.)
The first parameter is the name of the field or variable that will contain the generated array, in this example a local variable named Name. The second parameter is the separator between array items. In this example, the separator is two characters, a comma followed by a space. The third parameter is the database name. If the database name is left blank, the current database will be scanned. This example builds a list of all the first names in the database. (Note: If a name appears in the database twice, it will appear in the array twice.)
local Names
arraybuild Names,",","",First
Names ☞ Bob, Sue, Mark, Stan, Ralph
The formula parameter allows you to customize the construction of the array.
local Names
arraybuild Names,",","",upper(First)
Names ☞ BOB, SUE, MARK, STAN, RALPH
You can add a second, optional formula to limit the records that will be included in the output. In this example, only fish that are less than $1.50 will be included in the array.
local Inventory
arraybuild Inventory,", ","Fish Tank",Fish,Price < 1.50
Inventory ☞ Goldfish, Guppy, Neon
This example generates a list of fish that cost more than $30.
local Inventory
arraybuild Inventory,", ","Fish Tank",Fish,Price>30)
Inventory ☞ Boeseman's Rainbowfish,Black Ghost Knifefish,Harlequin Rasbora
Advanced Tip: The arraybuild( function can be used as a super flexibile alternative to the lookupall( function. See lookupall( for examples.
Referencing Fields in the Original Database
Sometimes you may want to reference fields in the current database, especially in the query formula. For example, suppose you have an Invoice database that contains customer names in a Name field, and a Customer database that contains First and Last name fields. This formula can be used in the Customer database to display a list of invoices for the person currently selected in the Customer database.
arraybuild InvoiceList,cr(),"Invoice",
datepattern(Date,"MM-DD-YYYY")+" "+pattern(Total,"$#,.##"),
Name = ««First»»+" "+««Last»»
Notice that the First and Last fields, used in the last line of this example, are enclosed in double chevrons. The use of double chevrons specifies that a field is in the current database, instead of the database that is being scanned. There are three fields referenced in this formula:
Name ☞ in Invoice database
First ☞ in Customer database (because of double chevrons)
Last ☞ in Customer database (because of double chevrons)
The result of this statement will be a list of invoices for the current customer, something like this:
08-14-2014 $3,498.93
09-27-2014 $1,723.05
11-05-2014 $5,381.60
Advanced Note: Internally, Panorama actually converts double chevrons into the fieldvalue( function. So the example above is internally converted into this:
arraybuild InvoiceList,cr(),"Invoice",
datepattern(Date,"MM-DD-YYYY")+" "+pattern(Total,"$#,.##"),
Name = fieldvalue("Customer",First)+" "+fieldvalue("Customer",Last)
The double chevron notation is a convenience, making this formula much easier to write, and to understand.
Error Messages
Assorted error messages – If the formula supplied by the user contains an error, the operation is aborted and the error is returned.
See Also
- appenddataarrays( -- appends two or more data arrays to each other (see Data Arrays).
- array( -- extracts a single data item from a text array or a data array (see Text Arrays and Data Arrays).
- arrayboth -- creates a new array from two existing arrays. The new array contains only items that are in both of the original arrays.
- arrayboth( -- creates a new array from two arrays. The new array contains only items that are in both of the original arrays.
- arraybuild( -- builds an array by scanning a database and creating an array element for every record (including invisible records) in the database (see Text Arrays).
- arraychange( -- changes the value of a single data item in a text array or a data array (see Text Arrays and Data Arrays).
- arraycolumn( -- extracts a column from a two dimensional array.
- arraycontains( -- checks to see if any element of a text array or a data array matches a specified value.
- arraydeduplicate( -- removes duplicate elements from a text array (see Text Arrays).
- arraydelete( -- deletes (removes) one or more elements from a text array or a data array (see Text Arrays and Data Arrays).
- arraydeletevalue( -- deletes any array elements that match the value parameter. This must be an exact match, including upper and lower case. If the value occurs multiple times in the array, every occurence of the value will be removed, with one exception: if the value occurs in two consecutive array elements, only the first occurence will be deleted.
- arraydifference -- creates a new array from two existing text arrays. The new array contains only items that are in the first array but *not* in the second array.
- arraydifference( -- creates a new array from two existing text arrays. The new array contains only items that are in the first array but *not* in the second array.
- arrayelement( -- converts between character positions and array element numbers in a text array.
- arrayfilter( -- processes each element of a text array or a data array with a formula (see Text Arrays and Data Arrays).
- arrayfirst( -- extracts the first element of a text array.
- arrayhack( -- hacks an array by adding, replacing or removing array elements
- arrayinsert( -- inserts one or more empty elements into the middle of a text array (see [Text Arrays]).
- arrayitemsandwich( -- adds a prefix and/or suffix to each non-blank item in a text array.
- arrayitemtrim( -- removes characters from the beginning and/or end of each item in an array.
- arraylast( -- extracts the last element of an array.
- arraylefttrim( -- removes one or more elements from the beginning of an array.
- arraylookup( -- uses a key to look up a value in a two dimensional text array containing key/value pairs (see Text Arrays).
- arraymerge( -- merges two text arrays together (see [Text Arrays]).
- arraymultisort -- sorts a two-dimensional array on the key of one or more of its columns.
- arraymultisort( -- sorts a two-dimensional array on the key of one or more of its columns.
- arraynotcontains( -- is the reverse of arraycontains(. it returns *false* if the value is in the array, *true* if it is not in the array.
- arraynumericsort( -- sorts a text array in numeric order (see Text Arrays).
- arraynumerictotal -- totals all the numeric elements of a text array.
- arraynumerictotal( -- totals all the numeric elements of a text array.
- arrayrandomize -- reorders an array in random order.
- arrayrandomize( -- reorders an array in random order.
- arrayrange( -- extracts a series of data items from a text array or a data array (see Text Arrays and Data Arrays).
- arrayrelocate -- moves one or more items in a text array to a new position.
- arrayrelocate( -- moves one or more items to a new position in a text array or a data array (see Text Arrays and Data Arrays).
- arrayreplacevalue( -- changes array elements that match a specified value.
- arrayreverse( -- reverses the order of the elements in a text array or a data array (see Text Arrays and Data Arrays).
- arrayreverselookup( -- uses a value to look up a key in a two dimensional text array containing key/value pairs (see Text Arrays).
- arraysearch( -- searches a text array or a data array (see Text Arrays and Data Arrays) to see if it contains a specific value.
- arrayselectedbuild -- builds an array by scanning a database and creating an array element for every visible (selected) record in the database (see Text Arrays).
- arrayselectedbuild( -- builds an array by scanning a database and creating an array element for every visible (selected) record in the database (see Text Arrays).
- arraysize( -- returns the number of elements in a text array or a data array (see Text Arrays and Data Arrays).
- arraysort -- sorts the elements in an array (see Text Arrays).
- arraysort( -- alphabetizes (A-Z) the elements in a text array (see [Text Arrays]).
- arraystrip -- strips blank elements from an array.
- arraystrip( -- removes any blank elements from a text array or a data array (see Text Arrays and Data Arrays).
- arraytableceiling( -- looks up a value in a double column table, similar to the table( function but from an array instead of a database.
- arraytablefloor( -- looks up a value in a double column table, similar to the table( function but from an array instead of a database.
- arraytoggle -- "toggles" a value within an array.
- arraytopythonlist( -- converts a Panorama array into a Python list.
- arraytrim( -- removes one or more elements from the end of an array.
- arrayunpropagate -- scans an array from top to bottom, removing duplicate values in a row.
- arrayunpropagate( -- scans an array from top to bottom, removing duplicate values in a row.
- chararray( -- extracts a single character from text.
- commalist( -- converts a text array (see Text Arrays) into an English list, with items separated by a comma and a space, except for the last two items which are separated by the word *and* and spaces.
- commatocr( -- converts a comma delimited array into a carriage return delimited array.
- csvtotsv( -- converts comma separated text into tab separated text.
- Data Arrays -- A numbered collection of data values.
- dataarray( -- creates a data array from zero or more separate values (see Data Arrays).
- dataarrayappend( -- appends one or more values to the end of an existing array.
- dataarraybuild( -- builds a data array by scanning a database and creating an array element for every record (including invisible records) in the database (see Data Arrays).
- dataarrayinsert( -- inserts one or more values into the middle of an existing array.
- dataarrayselectedbuild( -- builds a data array by scanning a database and creating an array element for every visible record in the database (see Data Arrays).
- exportdataarray( -- converts a data array into a text array (see Data Arrays and Text Arrays).
- extract( -- extracts a single data item from a text array, and can also be used to count the number of items in the array.
- fieldvalue( -- grabs the contents of a field in the current record of a database. You can grab data from the current database, or from another database.
- formulavalue( -- calculates the result of a formula based on data in the current record of any open database. This is similar to the fieldvalue( function, but allows any formula to be used, rather than just a single field.
- generatedataarray( -- generates a new data array based on a formula (see Data Arrays and Text Arrays).
- getstructurevalue( -- extracts a value from a structure of nested Data Dictionaries and/or Data Arrays.
- globaldictionarybuild -- builds a global dictionary by scanning a database.
- htmlarraytable -- generates an HTML table from an arrray.
- htmldatamerge -- uses a template to generate HTML you want from a database.
- htmldatatable -- generates an HTML table from selected data in the current database.
- htmltabletoarray -- converts an HTML table into a text array.
- importdataarray( -- converts a text array into a data array (see Data Arrays and Text Arrays).
- join -- joins data from another database into the current database.
- joinonerecord -- joins matching data from another database into the current record.
- lastlookupdatabase( -- returns the name of the database referenced in the most recent lookup.
- lineitemarray( -- converts the data in a set of line item fields into a text array (see Text Arrays).
- linescontain( -- checks to see if any line in a carriage return separated array matches the specified value.
- linesnotcontain( -- is the reverse of the linescontain( function.
- linesort( -- sorts lines of text in ascending order.
- linestrip( -- removes any blank lines from the text.
- lookup( -- searches a database for a value, then returns other information from the same record. For example, the *lookup(* function can look up a phone number given a customer name, or look up a price given a part number.
- lookupall( -- builds a text array containing one item for every record in the target database where the data in the keyField matches the keyData. Each item in the text array contains the value extracted from the dataField for that record. If the data field is a numeric or date field, it is converted to text using the default patterns for that field.
- lookupalldouble( -- is similar to the lookupall( function, but it returns two fields from the target database instead of just one.
- lookupalloctet( -- is similar to the lookupall( function, but it returns eight fields from the target database instead of just one.
- lookupallquadruple( -- is similar to the lookupall( function, but it returns four fields from the target database instead of just one.
- lookupallquintuplet( -- is similar to the lookupall( function, but it returns five fields from the target database instead of just one.
- lookupallseptuplet( -- is similar to the lookupall( function, but it returns seven fields from the target database instead of just one.
- lookupallsextet( -- is similar to the lookupall( function, but it returns six fields from the target database instead of just one.
- lookupalltriple( -- is similar to the lookupall( function, but it returns three fields from the target database instead of just one.
- lookuplast( -- searches the selected records in a database for a value, then returns other information from the same record. For example, the *lookuplast(* function can look up a phone number given a customer name, or look up a price given a part number. Unlike the lookup( function which searches from the top of the database, the *lookuplast(* function searches backwards from the bottom.
- lookuplastselected( -- searches the selected records in a database for a value, then returns other information from the same record. For example, the *lookuplastselected(* function can look up a phone number given a customer name, or look up a price given a part number. Unlike the lookupselected( function which searches from the top of the database, the *lookuplastselected(* function searches backwards from the bottom.
- lookupmoredata( -- looks up an additional data field based on the previous lookup.
- lookupmoreformula( -- looks up additional data based on a previous lookup.
- lookupselected( -- searches the selected records in a database for a value, then returns other information from the same record. For example, the *lookupselected(* function can look up a phone number given a customer name, or look up a price given a part number.
- makenumberedarray -- generates a numeric sequenced text array.
- makenumberedarray( -- generates a numeric sequenced text array.
- randomarrayelement( -- returns a random element from an array.
- randomline( -- returns a random line from multiple lines of text.
- randomword( -- returns a random word from a list of words.
- related( -- searches a database for a record in a related database that matches the current record in the current database based a relational specification (based on one or more key fields or formulas in each database), then uses a formula to return other information from the same record. This is similar to the lookup( function, but instead of using an individual field for the key, a relation is used (see Relational Database Management).
- relatedarray( -- builds an Text Array by scanning a database and creating an array element for every record that matches a relational specification (based on one or more key fields or formulas). This is similar to the arraybuild( function, but instead of using an individual field for the key, a relation is used (see Relational Database Management).
- relatedrecordid( -- returns the record id of a record in a related database that matches the current record in the current database based on a relational specification.
- Relational Workshop -- tool that assists in composing relational lookup(, superlookup(, lookupall( and arraybuild( functions.
- serverlookup( -- searches a shared database for a value, then returns other information from the same record. Similar to the lookup( function, but the search is performed on the server instead in the local computer's memory.
- setfieldproperties -- modifies one or more properties (name, data type, formula, etc.) of the current field.
- superarraybuild -- scans a database to create a text array. This statement is is similar to arraybuild, but with a number of additional options (see Text Arrays).
- superlookup( -- searches a database for a record that matches a query formula, then uses a second formula to return other information from the same record. This is similar to the lookup( function, but instead of using an individual field for the key and data, any valid true/false (Boolean) formula can be used.
- tabarray( -- extracts the nth element from a tab delimited array.
- table( -- searches a database for a value, then returns other information from the same record. Unlike the lookup( function, the *table(* function does not require an exact match. If it does not find an exact match the *table(* function will use the closest match. For example, the *table(* function can look up a tax rate given an income amount, or look up a shipping price given a zip code and weight.
- tagarray( -- builds an array (see Text Arrays) containing the body of all the specified tags (usually HTML tags) in the text.
- Text Arrays -- A numbered collection of text values.
- tsvtocsv( -- converts tab separated text into comma separated text.
- tsvtojson( -- converts tab separated text into JSON formatted text.
History
10.0 | Updated | Carried over from Panorama 6.0, but now includes an optional query formula that can be used to limit the records included in the output. More than one character is now allowed for use as the separator parameter. |