Batch data with datasets
- Last Updated: September 14, 2021
- 2 minute read
- OpenEdge
- Version 12.2
- Documentation
You can also use an event handler to implement batching of data from the server. Application performance is affected by the amount of data sent over the network. If too large a number (batch) of records are sent at once, performance may be impacted. If too few records are sent, more round trips are needed to retrieve the required data.
Batching data means you retrieve a subset of data from the server in separate server calls until you retrieved the required data. The batching capabilities of datasets allow you to tune for application performance. Depending on your application, user requirements, and your network, you can customize the dataset batch size to best meet your needs.
A recommended way to implement batching is to use the OFF-END query event in the client code. For example, you may want to view
the first 10 records in a table that are retrieved from the server, and when Next is clicked, the next 10 records are retrieved from
the server and displayed. Retrieving small batches of data allows you to see data
immediately without having to wait for the entire table to be returned from the server.
As your query iterates through the retrieved data, it detects the QUERY-OFF-END condition when it reaches the end of the last
retrieved record. The QUERY-OFF-END condition triggers
the OFF-END event. When the OFF-END query event is triggered the OFF-END event handler attempts to retrieves the next batch of data from
the server. If there is no more data to retrieve the query ends, otherwise the query
continues.
To implement data batching, you add code in the client and the server as follows:
- In the client, you write code to retrieve the initial batch of data,
specifying the batch size, and the
ROWIDfor starting the batch. - In the server, you write code to set the batch size for data retrieval, set
the starting
ROWID, retrieve the data, and return theROWIDof the next record to be retrieved. - In the client, you write code to associate the query with the
OFF-ENDquery event. Then, in the code, your query checks if it has reached the end of the iteration. If theQUERY-OFF-ENDcondition is TRUE, theOFF-ENDevent is triggered. You write theOFF-ENDhandler procedure to retrieve the next batch of data, specifying the startingROWID, and reset the condition.