Data Mapping

From Lianjapedia
Revision as of 12:47, 3 February 2015 by Yvonne.milne (Talk | contribs)

Jump to: navigation, search

See Also

INDEX, KEYLOOKUP(), SQL SELECT, SQLLOOKUP()

Example Data Mapping App

Example Data Mapping App: example_datamapping


The Example Data Mapping App (example_datamapping) illustrates the use of Data Mapping to display a 'mapped' value of a field in a Grid Section cell. As demonstrated here, where a product's name is displayed, rather than its numeric product ID, it is frequently used to present more user-friendly data pulled from a lookup table.

Data Mapping is also supported in Form and Canvas Section fields.


Choice list


In the Grid Section (southwind!order_details table), the users see the product name in place of the product ID that is actually stored in the table.

They can select a product name from the provided choice list and if they make a change, the correct product ID will be written back to the table.


Attributes


The relevant Grid Column Attributes here are Choices, Get data mapping and Set data mapping.

To access the Grid Column Attributes dialog, double-click on the column header.


Choices

The Choices choice list is based on a SQL SELECT statement, returning the product names from the products table. It can also include an ORDER BY clause to sort the names.

select productname from products order by productname

KEYLOOKUP()

Both the Get data mapping and the Set data mapping in this example use the KEYLOOKUP() function.

The KEYLOOKUP() function searches the index of a table and can return values from the corresponding record if the key is found or an alternative expression if there is no match.

KEYLOOKUP(<workarea | alias | table>, <"indextagname">, <keyExpr>, <valueExpr> [, <notfoundExpr>])

Get data mapping

The Get data mapping determines the value that will be displayed in the cell.

keylookup("products", "productid", {}, productname)
Argument Description
"products" The name of the lookup table (in quotes).
Alternatively, the alias name (in quotes) or workarea number (no quotes) can be specified if the lookup table is open.
"productid" The name of the index tag (in quotes) for the lookup table to search. Index tags can be created using the index on command.
{} The key value expression to search for in the index. In this case, we are looking for the numeric value of the order_details.productid field in the current row of the Grid Section, so we can use {}. For a character value, quotes are required "{}".
productname The value expression to return if the key value is found in the index. So, in this case, if the value of the current order_details.productid is found in the products table productid index, the products.productname value will be returned for the corresponding record.
- An optional 'not found' expression can also be specified. If the key value is not found in the index, this will be returned. This should be the same data type as the 'value' expression, e.g. "Product not found" for the character products.productname here.

Set data mapping

The Set data mapping determines the data that will be written back to the table when the cell's value is updated.

keylookup("products", "productname", "{}", productid)
Argument Description
"products" The name of the lookup table (in quotes).
Alternatively, the alias name (in quotes) or workarea number (no quotes) can be specified if the lookup table is open.
"productname" The name of the index tag (in quotes) for the lookup table to search. Index tags can be created using the index on command.
{} The key value expression to search for in the index. In this case, we are looking for the character value of the mapped cell contents in the current row of the Grid Section, so we can use "{}". For a numeric value, no quotes are required {}.
productid The value expression to return if the key value is found in the index. So, in this case, if the value of the current cell is found in the products table productname index, the products.productid value will be returned for the corresponding record.
- An optional 'not found' expression can also be specified. If the key value is not found in the index, this will be returned. This should be the same data type as the 'value' expression, e.g. 0 for the numeric products.producid here.

Notes on Client Support

Attribute Notes
Choices -
Get data mapping Currently supported on the Desktop client only.
Set data mapping Currently supported on the Desktop client only.