QueryMap

Calls the given closure with every row in the given query.

the function returns a query that contains all values returned by the closure.

QueryMap( query, closure [, resQuery [, parallel [, maxThreads ] ] ] )

Returns: Query

Argument Description Default
query
query, required

query to iterate

closure
function, required

filter can be a function/closure that implements the following constructor

[function(struct row[, number rowNumber, query query]):struct].

The returned struct is used to fill a single query row.

Alias: function, callback, udf

resQuery
query, optional

Alias: resultingQuery

parallel
boolean, optional

execute closures parallel

maxThreads
number, optional

maximum number of threads executed, ignored when argument "parallel" is set to false

20

Examples

people = QueryNew( "name,dob,age", "varchar,date,int", [
    [ "Susi", CreateDate( 1970, 1, 1 ), 0 ],
    [ "Urs" , CreateDate( 1995, 1, 1 ), 0 ],
    [ "Fred", CreateDate( 1960, 1, 1 ), 0 ],
    [ "Jim" , CreateDate( 1988, 1, 1 ), 0 ]
]);
Dump( var=people, label="people - origional query" );
/* Output:
| name | dob                 | age |
------------------------------------
| Susi | 1970-01-01 00:00:00 | 0   |
| Urs  | 1995-01-01 00:00:00 | 0   |
| Fred | 1960-01-01 00:00:00 | 0   |
| Jim  | 1988-01-01 00:00:00 | 0   |
*/
people = people.map( function( row, rowNumber, recordset ){
    row['age'] = DateDiff( 'yyyy', row.dob, Now() );
    return row;
});
Dump( var=people, label='people - with calculated age' );
/* Output:
| name | dob                 | age |
------------------------------------
| Susi | 1970-01-01 00:00:00 | 45  |
| Urs  | 1995-01-01 00:00:00 | 20  |
| Fred | 1960-01-01 00:00:00 | 55  |
| Jim  | 1988-01-01 00:00:00 | 27  |
*/

See also