Loop statement (foreach)
BI# is built for data-heavy applications and its foreach statement allows iteration over large sets of data. This example of
a function uses the foreach statement to loop over the
result set of an SQL query:
void Process(SQLConnection connection)
{
SQLData resultData = SQLExecuteQuery(
connection,
"Select * from employees"
);
foreach (SQLDataRow row in resultData)
{
string name = SQLDataRowGetString(row,"name");
WriteLine("Name: " + name);
}
}
When iterating over lists of data you often must filter elements. You
can use
if statements for this purpose, but
foreach supports a where clause that
solves this problem more elegantly:
void Process(OLAPConnection con)
{
OLAPElementList list = OLAPGetElementList(con,"DACOUNT", true);
foreach (OLAPElement account in list
where OLAPGetStringAttribute(account, "ALRE") == "A")
{
// Do something with account.
}
}
The
foreach statement has this structure:
foreach (<type> <name> in <list expression>
[where <condition>]) <block>
The statement creates a local variable named
name of the specified type. For each
iteration, BI# fills this variable with the next item from the
list expression. For every list type,
BI# allows a certain set of iterator variable types. This table lists possible
combinations of iterator variable types and list types:
| List Type | Iterator Variable Type |
|---|---|
OLAPElementList
|
OLAPElement
|
OLAPDataArea
|
OLAPCell
|
SQLData
|
SQLDataRow
|
StringArray
|
String
|
OLAPElementNativeArray
|
OLAPElementNative
|
OLAPElementXMLAArray
|
OLAPElementXMLA
|
OLAPAttributeTable
|
OLAPAttribute
|
OLAPCubeList
|
OLAPCube
|
OLAPDimensionList
|
OLAPDimension
|
OLAPAttributeTableList
|
OLAPAttributeTable
|
If you do not specify a
where clause or if the
where clause's condition is true, BI#
runs the loop's block. Otherwise, it starts the next iteration.