onSQLSummaryValuesQuery Event

Description

Fires when the Grid has to compute summary values. Only fires if one or more columns in the Grid has summary values.

Discussion

If you have turned on summary values for any of the columns in the Grid, then this event will fire when Alpha Anywhere needs to compute the summary values to display in the Grid. Your event handler can take over the responsibility for computing these summary values.

If your Grid is based on a stored procedure, and your Grid displays summary values, then you must write code for this event to compute the summary values.

For example, say that your Grid has a column called 'Quantity' and you are displaying the count and average for this column.

Here is a sample event handler you might create:

function onSQLSummaryValuesQuery as v (e as p)

    dim flag as L
    flag = e.cn.execute("exec mySummaryValuesStoredProcedure @city = :whatcity",e.arguments)

    if flag = .t. then
        dim rs as SQL::ResultSet
        rs = e.cn.resultSet
        e.summary.Quantity.average = rs.data(1)
        e.summary.Quantity.count = rs.data(2)
        e.handled = .t.
    else
        e.fatalError = .t.
        e.errorText = "Could not get summary values." + e.cn.callResult.text
    end if 

end function

Event Arguments & Properties

The following variables are available to you in the event:

Variable
Description
e.tmpl

The grid component definition

e.rtc

Run-time calculations (allows you to pass data to other event handlers)

e.__si

State information

e.cn

The SQL::Connection object for the Grid. You can call this object's .execute() method to execute your own SQL.

e.filter

The WHERE clause based on any filter that the user has applied to the Grid

e.sql

The SQL Statement that Alpha Anywhere has computed. If e.handled is not set to .t., then the Grid will combine this statement with the user filter (e.filter) to compute the summary values.

e.arguments

The SQL::Arguments object that contains values for all of the arguments in e.filter. To read a value from arguments: e.arguments.find("argumentName").data

e.summaryVariablesToBeComputed

A list of the summary values that need to be computed. The list contains a crlf delimited list of variable names whose values need to be set.

Your event must set the following properties:

Property
Description
e.handled

set to .t. if your event has computed the record count. set to .f. if you want Alpha Anywhere to execute its own count query

e.summary

The 'summary' properties of the 'e' object as explained below

The e.summaryVariablesToBeComputed contains a crlf delimited list of summary values that must be computed. For example, e.summaryVariablesToBeComputed might contain:

e.summary.Quantity.total
e.summary.Quantity.count
e.summary.Price.average

Your code would then need to set the value of each of these variables. For example:

e.summary.Quantity.total = 23
e.summary.Quantity.count = 3
e.summary.Price.average = 4.5

Your event can optionally set these properties of the e object:

Property
Description
e.fatalError

Set to .t. if a fatal error has occurred

e.errorText

The error text to show if a fatal error occurred

Example

For example,

Setting State Variables

You can also set state variables in this event. The value of any state variables will be available in all subsequent ajax callbacks (in the e.__si2 object).

To set a state variable:

e._state.myvar1 = "value1"
e._state.myvar2 = "value2"