Pass DATASET and DATASET-HANDLE parameters
- Last Updated: October 30, 2020
- 3 minute read
- OpenEdge
- Version 12.2
- Documentation
This section describes mapping ABL ProDataSets to ADO.NET DataSets,
using the DATASET and DATASET-HANDLE parameters.
ABL procedures can pass DATASET or DATASET-HANDLE parameters to an application server. This is a
convenient and efficient way to pass relational data between the client and the application
server code. The .NET Open Client environment provides the same capability using an ADO.NET
DataSet. A .NET Open Client passes an ABL DATASET parameter
using an ADO.NET strongly typed DataSet object that is generated by ProxyGen and mapped to the
specified ProDataSet. This strongly typed DataSet object inherits from Progress.Open4GL.ProDataSet, which in turn inherits from the standard ADO.NET
System.Data.DataSet class.
DATASET-HANDLE parameters allow the transfer of dynamic
ProDataSets between Open Clients and the application server, without requiring a complete,
static definition of the ProDataSet on each side of the transfer (as with DATASET parameters). A .NET Open Client passes an ABL DATASET-HANDLE parameter using an ADO.NET DataSet object, System.Data.DataSet.
For each unique static ProDataSet (DATASET parameter),
ProxyGen generates a strongly typed DataSet class, TypedDataSet.cs. TypedDataSet is
the name of the static ProDataSet in the ABL procedure, appended
with DataSet. When comparing the static definitions
of two ProDataSets, the name of the ProDataSet and the member buffers
do not need to match for the ProDataSets to map to a single ADO.NET DataSet.
However, field names, types, and indexes do need to match.
(This differs from ABL in which field names and indexes do not need
to match.) For example, in a procedure with a static ProDataSet CustOrderDS, TypedDataSet is CustOrderDSDataSet.
Each temp-table in the ProDataSet is created as a DataTable within
the DataSet class. If other ProDataSet parameters in other methods
in the proxy share the same schema, ProxyGen does not create additional
strongly typed DataSet classes but uses the same strongly typed
DataSet class for these methods. The name of the ProDataSet parameter
does not matter when comparing the schema of ProDataSet parameters.
Also, if ProxyGen detects two or more ProDataSet parameters with
the same name but different schemas, ProxyGen creates multiple strongly
typed DataSet classes, one for each unique schema. ProxyGen appends
a unique number to the end of the DataSet name, to create unique
class names. For example, if multiple procedures define a static
ProDataSet CustOrderDS, each with a different schema, TypedDataSet can
be CustOrderDSDataSet, CustOrderDS2DataSet,
and so on.
All strongly typed DataSet classes are defined in the following namespace:
|
Where namespace is the General namespace you optionally entered in the .NET Client Details group of the ProxyGen Generate Proxies dialog box. (See Namespace for proxy objects.)
This section covers the following topics:
- Static and dynamic ProDataSets.
- Data-type mapping for ProDataSets.
- Pass a DATASET or DATASET-HANDLE as an INPUT parameter.
- Provide ABL extensions for INPUT DATASET-HANDLE parameters.
- Pass a DATASET or DATASET-HANDLE as an INPUT-OUTPUT parameter.
- Pass a DATASET or DATASET-HANDLE as an OUTPUT parameter.
- Update a DataSet.
- ProDataSet examples.