GXYiDefinedByNew

Unofficial Content
GeneXus 9.0 Upgrade Course

Defined By Clause in New Command

Scope

Languages: All
Objects: Procedures
Interfaces: Win, Web, Text

Introduction

The Defined By clause is added to the New command.

Description

In previous GeneXus versions, defining a New command in a procedure sometimes didn't insert the specified records in the desired table. The new Defined By clause enables to define the table explicitly.

Example


TABLE A
CustomerId*
CustomerName

TABLE B
TransactionId* with autonumber property set to Yes
CustomerId

Now consider the following New command:

New

 TransactionId = 2

 CustomerId = 4

EndNew



To insert a record in Table B you cannot specify the New command in this way because the TransactionId attribute is autonumbered and can't be assigned (you will view a message such as spc0030 Line X. Attribute XXX should not be assigned in an insert group. It has the Autonumber property set to No).

On the other hand, you cannot specify the following:

New

 CustomerId = 4

EndNew



In this case, the record would be inserted in Table A.

As from this version, in these ambiguous cases you can explicitly specify the desired table of a New command by using a Defined By clause. For this reason, the last New command from the examples can now be written as shown below. In this way, you can successfully insert data in Table B.

New

Defined By TransactionId

 CustomerId = 4

EndNew




Interesting links


New Command in GeneXus 8.0 Help System