Going back and forth between current selections to ORDA

ORDA is a major innovation of 4D v17, this is why we’re dedicating an entire series of blog posts to ORDA. While ORDA has its own concepts that are very different from the classic approach, it’s still possible to mix ORDA with your existing code.

In a nutshell, this blog post will show you how you can update the current selection of a table from an entity selection and get an entity selection from the current selection of a table. It’ll allow you to smoothly integrate ORDA concepts into your existing 4D code, step by step.

Example: from entity selection to current selection and vice-versa

INTRODUCTION

With ORDA, data is accessed through an abstraction layer: the datastore. A datastore is an object which provides an interface to the database and its data through objects. And remember, with ORDA each table is mapped with a dataclass.

Once you have an entity selection related to a dataclass, you can update the current selection of the corresponding [Table] with the USE ENTITY SELECTION command. And, once you have a current selection on a [Table], you can get an entity selection related to the corresponding dataclass wtih the Create entity selection command.

To guide you through the exploration of ORDA features, we’ve prepared a glossary of the different terms and concepts, along with their definition.

Code Example

Current selection from an entity selection

In the code below, the $entitySelection entity selection is related to the Employee dataclass which actually corresponds to the same-named [Employee] table. The USE ENTITY SELECTION command updates the current selection of the table accordingly.

C_OBJECT($entitySelection)
$entitySelection:=ds.Employee.query("lastName=:1";"R@")
// The current selection of the [Employee] table is replaced according to the content of $entitySelection
USE ENTITY SELECTION($entitySelection)
//... Go on with your classic 4D code ...
PRINT SELECTION([Employee])
//...

entity selection from Current selection

Here, the current selection has been updated after performing a query on the [Employee] table. The Create entity selection() command creates the $entitySelection entity selection accordingly. The created entity selection is related to the Employee dataclass.

C_OBJECT($entitySelection)
// The current selection of the [Employee] table is updated after the query
QUERY([Employee])
// $entitySelection is created from the current selection of the [Employee] table
$entitySelection:=Create entity selection([Employee])

Avatar
• Product Owner • Marie-Sophie Landrieu-Yvert has joined the 4D Product team as a Product Owner in 2017. As a Product Owner, she is in charge of writing the user stories then translating it to functional specifications. Her role is also to make sure that the feature implementation delivered is meeting the customer need.Marie-Sophie graduated from the ESIGELEC Engineering School and began her career as an engineer at IBM in 1995. She participated on various projects (maintenance or build projects) and worked as a Cobol developer. Then she worked as an UML designer and Java developer. Lately her main roles were analyzing and writing functional requirements, coordinate business and development teams.