Skip to main contentSkip to search
Powered by Zoomin Software. For more details please contactZoomin
Progress DocumentationProgress Documentation
Progress Documentation
  • Home
  • Home
  • EnglishČeštinaDeutsch (Germany)Español (Spain)FrançaisItaliano (Italy)Português (Brasil)日本語Русский (Russia)中文 (简体) (China)中文 (繁體, 台灣) (Taiwan)ar-AR
  • Login

Use ProDataSets

ProDataSets and temp-tables

Save PDF
Save selected topicSave selected topic and subtopicsSave all topics
Share
Share to emailCopy topic URL
Print
Table of Contents
  • Introduction to the OpenEdge DataSet
    • Overview
      • Capabilities
      • ProDataSets and Microsoft ADO.NET DataSets
      • Standard ABL components in a ProDataSet
      • ProDataSet goals
      • Architecture
    • Use ProDataSets
      • ProDataSets and temp-tables
        • Temp-tables compared to database tables
        • Static or dynamic temp-tables
        • Pass temp-tables
        • ProDataSet comparison
      • ProDataSet relations
      • Data sources
      • FILL operations
      • Integrate business logic into ProDataSets using events
      • Update a ProDataSet
      • Typical use cases for ProDataSets
    • Define a static ProDataSet
      • Static ProDataSet and its Data-Relations
      • Use the REPOSITION Data-Relation
        • Example with REPOSITION not set
        • Example with REPOSITION set: loading
        • Example with REPOSITION set: navigation
      • Define an inactive Data-Relation
      • Get the handle to a static ProDataSet
    • Data-Source object
      • Define a static Data-Source
        • Attach Data-Sources
        • Example
        • Data-Source as a separate object
        • Whether or not to define a query for a Data-Source
        • When you would not use a Data-Source at all
      • Attach a Data-Source to a ProDataSet buffer
        • Use BUFFER-COPY and BUFFER-COMPARE with a ProDataSet
    • Populate a ProDataSet
      • Fill the entire ProDataSet
      • Partially fill a ProDataSet
      • Define a query on a child table
      • Recursively fill a ProDataSet
      • Summary of a FILL
      • Control the filling of each table
      • Test the Order ProDataSet
    • Object life cycles with ProDataSets
    • Summary
  • ProDataSet Parameters
    • Pass a ProDataSet as a parameter
    • Pass a ProDataSet by value
      • Passing a ProDataSet parameter BY-VALUE breaks PARENT-ID-RELATION
    • Pass a ProDataSet with BY-REFERENCE or BIND
      • Pass a ProDataSet parameter by reference
        • INPUT BY-REFERENCE can be like INPUT-OUTPUT
        • OUTPUT BY-REFERENCE can be like OUTPUT APPEND
        • ProDataSet instance passed BY-REFERENCE must exist in the caller
        • Main block references ignored in internal procedures
        • Specify BY-VALUE in the called procedure
        • Importance of optimized code with BY-REFERENCE
      • Pass a ProDataSet parameter by binding
    • ProDataSet parameter table
    • Local parameter passing example
    • Delete a dynamic ProDataSet passed as a parameter
    • Reduce the data to be passed in a parameter
      • Specify the session startup parameter for all temp-table parameters
      • Set attributes for individual temp-table parameters
    • Pass a ProDataSet with APPEND
    • Extend the sample procedure to pass a parameter
  • ProDataSets Events
    • Event procedures for ProDataSets
    • Define FILL events
    • Use event procedures in the sample procedure
    • Summary
  • Dynamic ProDataSet Basics
    • Create a dynamic ProDataSet
      • Pass ProDataSets
    • Delete a dynamic ProDataSet
    • Specify member buffers
    • Create Data-Relation objects
    • Create a dynamic Data-Source
    • Duplicate ProDataSets with the CREATE-LIKE method
    • Sample procedure: create a dynamic ProDataSet
    • Summary
  • ProDataSet Attributes and Methods
    • Access the handle of a ProDataSet
    • Access a member buffer of a ProDataSet
    • Sample procedures: use attributes and methods
    • Access Data-Relations
    • Use Data-Source attributes and methods
    • Enhanced query support for ProDataSet buffers
      • QUERY attribute for Data-Sources, Data-Relations, and buffers
      • KEYS attribute for buffers
      • TOP-NAV-QUERY attribute
    • Session attributes for ProDataSets, Data-Sources, and queries
    • Other ProDataSet methods
    • Build a dynamic user interface from a ProDataSet
    • Use the SYNCHRONIZE method
    • Sample procedure: add REPOSITION and SYNCHRONIZE
    • Summary
  • Update Data with ProDataSets
    • Track changes in the temp-tables of a ProDataSet
      • ROW-STATE attribute
        • ROW-STATE function
        • Special restrictions on TRACKING-CHANGES
      • Create or define the before-tables
      • Locate rows in the before- and after-tables
      • Extend the sample procedures to track changes
      • Comparison with change tracking in .NET
    • Process changes
      • GET-CHANGES method
      • MERGE-CHANGES and MERGE-ROW-CHANGES methods
      • ACCEPT-CHANGES and ACCEPT-ROW-CHANGES methods
      • REJECT-CHANGES and REJECT-ROW-CHANGES methods
      • SAVE-ROW-CHANGES method
      • DATA-SOURCE-ROWID attribute
      • MARK-ROW-STATE method
      • MARK-NEW method
      • Special support for change conflicts
      • Use the SAVE-WHERE-STRING attribute
      • Extend the samples to GET, SAVE, MERGE, and ACCEPT changes
      • Use the SAVE-ROW-CHANGES method in the update procedure
      • Use the MERGE-CHANGES method in the window procedure
    • Set and use ERROR, ERROR-STRING, and REJECTED
      • Use the error attributes in the sample procedures
    • ProDataSet change events
      • Apply callback procedures programmatically
  • Advanced Events and Attributes
    • Query OFF-END event
    • Buffer BATCH-SIZE and LAST-BATCH attributes
      • NEXT-ROWID attribute
      • RESTART-ROWID attribute
      • RESTART-ROW attribute
    • ProDataSet buffer FIND-FAILED event
    • SYNCHRONIZE event for a ProDataSet buffer
    • Successive loading of ProDataSet data
      • Do a partial ProDataSet FILL to return Order headers
      • Force the ProDataSet to be passed BY-VALUE
      • Filter the top-level query based on the user selection
      • Return the partial ProDataSet to the client
      • Retrieve detail for the ProDataSet
      • COPY-DATASET and COPY-TEMP-TABLE methods
        • Replace-mode argument
        • Loose-copy-mode argument
        • Pairs-list argument
        • Current-only argument
        • Name-prefix argument
      • Use COPY-DATASET with a dynamic target ProDataSet
      • Use the COPY-DATASET method for successive FILLs
    • Summary
  • Batch Data with ProDataSets
    • Overview
    • Use the include-field list to limit the fields copied into the table
    • Set up an event handler for the OFF-END query event
    • Set up an event handler for the FIND-FAILED buffer event
    • Summary
  • Advanced Read Operations
    • ProDataSets as a data access layer
      • Define the right internal representation
      • Define the right granularity for your ProDataSets
      • Define the right top-level table for a ProDataSet
      • ProDataSets with more than one top-level table
      • Dynamic versus static ProDataSets
      • Share ProDataSet and temp-table definitions between procedures
      • Build a data access support procedure
      • Data access procedure example
      • Cache complex derived data in a ProDataSet
      • Summary of the data access procedure
    • Cache data using a ProDataSet
      • Use a subset of the tables in a ProDataSet
        • Write the server procedure
        • Build the user interface for the new ProDataSet
      • Summary of caching data using a ProDataSet
    • Create views with ProDataSets as Data-Sources
      • Sample procedure: create a view
    • Summary
  • Advanced Update Operations
    • Create a data access procedure for the Order ProDataSet
    • Build a business entity procedure to support the ProDataSet
    • Build general update procedures for client and server
      • Build the client side change handler
      • Build the server side change handler
      • Change the window procedure to use the new procedures
    • Run standard validation procedures on update
    • Summary
  • Data Access and Business Entity Objects
    • ProDataSets and the OpenEdge reference architecture
    • Data Access object
      • Isolate the data source from the internal view of data
      • Elements of a data access object
        • ProDataSet and temp-table definitions
        • Data-Source queries
        • Data-Source definitions
        • FILL event procedures
        • Functions to attach and detach the Data-Sources from a ProDataSet
        • Data retrieval API
        • Specialized update API
      • Data Access object template
    • Business Entity object
      • Elements of a Business Entity
        • ProDataSet and temp-table definitions
        • Relationship to the Data Access object
        • Attach the Data-Sources and callbacks
        • Define a data retrieval API
        • Define a generic update API
        • Validation procedures for the generic update API
        • Define a custom update API
        • Manage Business Entity instances
    • Business logic options
      • Standard validation procedures
      • Access other entities in your business logic
      • Trigger procedure logic
      • Include context information in Business Entities
    • Summary
Table of Contents

ProDataSets and temp-tables

Save PDF
Save selected topicSave selected topic and subtopicsSave all topics
Share
Share to emailCopy topic URL
Print
  • Last Updated: February 11, 2026
  • 1 minute read
    • OpenEdge
    • Version 13.0
    • Documentation

ProDataSets and temp-tables

The ABL temp-table already provides a large measure of support for managing sets of data independent of the database. Because the ProDataSet is in many ways an extension of that support, it is worth briefly reviewing some of the temp-table characteristics that are also part of the ProDataSet.

Contents
  • Temp-tables compared to database tables
  • Static or dynamic temp-tables
  • Pass temp-tables
  • ProDataSet comparison
TitleResults for “How to create a CRG?”Also Available inAlert