RAD Studio |  |

Fetching the Data
Preparing the dataset | Fetching multiple datasets | See Also
Collapse All

Once you have specified the source of the data, you must fetch the data before your application can access it. Once the dataset has fetched the data, data-aware controls linked to the dataset through a data source automatically display data values and client datasets linked to the dataset through a provider can be populated with records.

As with any dataset, there are two ways to fetch the data for a dbExpress dataset:

One way is to set the Activeproperty to True, either at design time in the Object Inspector, or in code at runtime:

Copy Code

    CustQuery.Active := True;

Copy Code

    CustQuery->Active = true;

Another way is to call the Open method at runtime,

Copy Code

    CustQuery.Open;

Copy Code

    CustQuery->Open();

Use the Active property or the Open method with any unidirectional dataset that obtains records from the server. It does not matter whether these records come from a SELECT query (including automatically-generated queries when the CommandType is ctTable) or a stored procedure.

Preparing the dataset

Before a query or stored procedure can execute on the server, it must first be "prepared". Preparing the dataset means that dbExpress and the server allocate resources for the statement and its parameters. If CommandType is ctTable, this is when the dataset generates its SELECT query. Any parameters that are not bound by the server are folded into a query at this point.

Unidirectional datasets are automatically prepared when you set Active to True or call the Open method. When you close the dataset, the resources allocated for executing the statement are freed. If you intend to execute the query or stored procedure more than once, you can improve performance by explicitly preparing the dataset before you open it the first time. To explicitly prepare a dataset, set its Prepared property to True.

Copy Code

    CustQuery.Prepared := True;

Copy Code

    CustQuery->Prepared = true;

When you explicitly prepare the dataset, the resources allocated for executing the statement are not freed until you set Prepared to False.

Set the Prepared property to False if you want to ensure that the dataset is re-prepared before it executes (for example, if you change a parameter value or the SortFieldNames property).

Fetching multiple datasets

Some stored procedures return multiple sets of records. The dataset only fetches the first set when you open it. In order to access the other sets of records, call the NextRecordSet method:

Copy Code

    var
      DataSet2: TCustomSQLDataSet;
      nRows: Integer;
    begin
      DataSet2 := SQLStoredProc1.NextRecordSet;
      ...

Copy Code

    TCustomSQLDataSet *DataSet2 = SQLStoredProc1->NextRecordSet();

NextRecordSet returns a newly created TCustomSQLDataSet component that provides access to the next set of records. That is, the first time you call NextRecordSet, it returns a dataset for the second set of records. Calling NextRecordSet returns a third dataset, and so on, until there are no more sets of records. When there are no additional datasets, NextRecordSet returns nil.

See Also

Connecting to the Database Server

Types of dbExpress Datasets

Specifying What Data to Display

Executing Commands That Do Not Return Records

Accessing Schema Information

Opening and Closing Datasets

Debugging dbExpress Applications

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!