{hidden}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY, UNLESS YOU KNOW WHAT YOU'RE DOING.
THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACT CHANGES FROM THE PAGE AND MERGE THEM BACK INTO SERVOY SOURCE{hidden}
{sub-section:description|text=}For more information see [Relations]{sub-section}\\
{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Constants Summary{th}{tr}{tbody}{tr}{td}[Number]{td}{td}[#FULL_JOIN]
Constant for the joinType of a Query Builder join.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#INNER_JOIN]
Constant for the joinType of a JSRelation.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#LEFT_OUTER_JOIN]
Constant for the joinType of a JSRelation.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#RIGHT_OUTER_JOIN]
Cache
index
true
refresh
100d
showRefresh
true
id
doc
title
Refresh page
showDate
true
retry
Enable
servoy sReturnTypes2100%height: 30px;2Supported ClientssWordListSmartClientsWordListWebClientsWordListNGClientservoy sSummary12%30%58%height: 30px;3Constants SummaryConstant for the joinType of a JSRelation.Constant for the joinType of a JSRelation.Constant for the joinType of a JSRelation.Constant for the joinType of a JSRelation.servoy sSummary12%30%58%height: 30px;3Property SummaryFlag that tells if related records can be created through this relation.Flag that tells if the parent record can be deleted while it has related records.Flag that tells if related records should be deleted or not when a parent record is deleted.Qualified name of the foreign data source.A String which specified a set of sort options for the initial sorting of data retrieved through this relation.The join type that is performed between the primary table and the foreign table.The name of the relation.Qualified name of the primary data source.servoy sSummary12%30%58%height: 30px;3Methods SummaryReturns an array of JSRelationItem objects representing the relation criteria defined for this relation.Returns the UUID of the relation objectCreates a new relation item for this relation.voidRemoves the desired relation item from the specified relation.constantservoy sDetail2100%height:30px2Constants DetailsFULL_JOINname
FULL_JOIN
dessIndent
Constant for the joinType of a
Query
JSRelation.
Builder join.{td}{tr}{tbody}{table}\\
{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Property Summary{th}{tr}{tbody}{tr}{td}[Boolean]{td}{td}[#allowCreationRelatedRecords]
Flag that tells if related records can be created through this relation.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#allowParentDeleteWhenHavingRelatedRecords]
Flag that tells if the parent record can be deleted while it has related records.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#deleteRelatedRecords]
It is also used in solutionModel.newRelation(...).
ret
Returns
sIndentclients
Supported Clients
sIndentSmartClient,WebClient,NGClientsam
Sample
sIdentjavascriptlastDetailRowINNER_JOINname
INNER_JOIN
dessIndent
Constant for the joinType of a JSRelation. It is also used in solutionModel.newRelation(...).
ret
Returns
sIndentclients
Supported Clients
sIndentSmartClient,WebClient,NGClientsam
Sample
sIdentjavascriptlastDetailRowLEFT_OUTER_JOINname
LEFT_OUTER_JOIN
dessIndent
Constant for the joinType of a JSRelation. It is also used in solutionModel.newRelation(...).
ret
Returns
sIndentclients
Supported Clients
sIndentSmartClient,WebClient,NGClientsam
Sample
sIdentjavascriptlastDetailRowRIGHT_OUTER_JOINname
RIGHT_OUTER_JOIN
dessIndent
Constant for the joinType of a JSRelation. It is also used in solutionModel.newRelation(...).
not when a parent record is deleted.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#foreignDataSource]
Qualified name of the foreign data source.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#initialSort]
A String which specified a set of sort options for the initial sorting of data
retrieved through this relation.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#joinType]
The join type that is performed between the primary table and the foreign table.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#name]
The name of the relation.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#primaryDataSource]
Qualified name of the primary data source.{td}{tr}{tbody}{table}\\
{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}[JSRelationItem]\[]{td}{td}[#getRelationItems]\()
Returns an array of JSRelationItem objects representing the relation criteria defined for this relation.{td}{tr}{tbody}{tbody}{tr}{td}[UUID]{td}{td}[#getUUID]\()
Returns the UUID of the relation object{td}{tr}{tbody}{tbody}{tr}{td}[JSRelationItem]{td}{td}[#newRelationItem]\(dataprovider, operator, foreinColumnName)
Creates a new relation item for this relation.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#removeRelationItem]\(primaryDataProviderID, operator, foreignColumnName)
Removes the desired relation item from the specified relation.{td}{tr}{tbody}{table}\\
{table:id=constant|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Constants Details{th}{tr}{tbody:id=FULL_JOIN|class=node}{tr:id=name}{td}h6.FULL_JOIN{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:FULL_JOIN_des|trigger=button|text=}{sub-section}{sub-section:FULL_JOIN_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:FULL_JOIN_snc|trigger=button|text=}{sub-section}{sub-section:FULL_JOIN_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:FULL_JOIN_prs|trigger=button|text=}{sub-section}{sub-section:FULL_JOIN_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:FULL_JOIN_ret|trigger=button|text=}{sub-section}{sub-section:FULL_JOIN_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:FULL_JOIN_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:FULL_JOIN_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:FULL_JOIN_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:FULL_JOIN_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:FULL_JOIN_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:FULL_JOIN_sam|trigger=none}{code:language=javascript}
/** @type {QBSelect<db:/example_data/orders>} */
var query = databaseManager.createSelect('db:/example_data/orders')
/** @type {QBJoin<db:/example_data/order_details>} */
var join = query.joins.add('db:/example_data/order_details', JSRelation.RIGHT_OUTER_JOIN, 'odetail')
join.on.add(join.columns.orderid.eq(query.columns.orderid))
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=INNER_JOIN|class=node}{tr:id=name}{td}h6.INNER_JOIN{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:INNER_JOIN_des|trigger=button|text=}{sub-section}{sub-section:INNER_JOIN_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:INNER_JOIN_snc|trigger=button|text=}{sub-section}{sub-section:INNER_JOIN_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:INNER_JOIN_prs|trigger=button|text=}{sub-section}{sub-section:INNER_JOIN_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:INNER_JOIN_ret|trigger=button|text=}{sub-section}{sub-section:INNER_JOIN_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:INNER_JOIN_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:INNER_JOIN_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:INNER_JOIN_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:INNER_JOIN_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:INNER_JOIN_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:INNER_JOIN_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.joinType = JSRelation.LEFT_OUTER_JOIN;
/** @type {QBSelect<db:/example_data/orders>} */
var query = databaseManager.createSelect('db:/example_data/orders')
/** @type {QBJoin<db:/example_data/order_details>} */
var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
join.on.add(join.columns.orderid.eq(query.columns.orderid))
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=LEFT_OUTER_JOIN|class=node}{tr:id=name}{td}h6.LEFT_OUTER_JOIN{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:LEFT_OUTER_JOIN_des|trigger=button|text=}{sub-section}{sub-section:LEFT_OUTER_JOIN_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:LEFT_OUTER_JOIN_snc|trigger=button|text=}{sub-section}{sub-section:LEFT_OUTER_JOIN_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:LEFT_OUTER_JOIN_prs|trigger=button|text=}{sub-section}{sub-section:LEFT_OUTER_JOIN_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:LEFT_OUTER_JOIN_ret|trigger=button|text=}{sub-section}{sub-section:LEFT_OUTER_JOIN_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:LEFT_OUTER_JOIN_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:LEFT_OUTER_JOIN_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:LEFT_OUTER_JOIN_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:LEFT_OUTER_JOIN_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:LEFT_OUTER_JOIN_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:LEFT_OUTER_JOIN_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.joinType = JSRelation.LEFT_OUTER_JOIN;
/** @type {QBSelect<db:/example_data/orders>} */
var query = databaseManager.createSelect('db:/example_data/orders')
/** @type {QBJoin<db:/example_data/order_details>} */
var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
join.on.add(join.columns.orderid.eq(query.columns.orderid))
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=RIGHT_OUTER_JOIN|class=node}{tr:id=name}{td}h6.RIGHT_OUTER_JOIN{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:RIGHT_OUTER_JOIN_des|trigger=button|text=}{sub-section}{sub-section:RIGHT_OUTER_JOIN_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:RIGHT_OUTER_JOIN_snc|trigger=button|text=}{sub-section}{sub-section:RIGHT_OUTER_JOIN_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:RIGHT_OUTER_JOIN_prs|trigger=button|text=}{sub-section}{sub-section:RIGHT_OUTER_JOIN_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:RIGHT_OUTER_JOIN_ret|trigger=button|text=}{sub-section}{sub-section:RIGHT_OUTER_JOIN_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:RIGHT_OUTER_JOIN_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:RIGHT_OUTER_JOIN_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:RIGHT_OUTER_JOIN_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:RIGHT_OUTER_JOIN_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:RIGHT_OUTER_JOIN_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:RIGHT_OUTER_JOIN_sam|trigger=none}{code:language=javascript}
/** @type {QBSelect<db:/example_data/orders>} */
var query = databaseManager.createSelect('db:/example_data/orders')
/** @type {QBJoin<db:/example_data/order_details>} */
var join = query.joins.add('db:/example_data/order_details', JSRelation.RIGHT_OUTER_JOIN, 'odetail')
join.on.add(join.columns.orderid.eq(query.columns.orderid))
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\
{table:id=property|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=allowCreationRelatedRecords|class=node}{tr:id=name}{td}h6.allowCreationRelatedRecords{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:allowCreationRelatedRecords_des|trigger=button|text=}{sub-section}{sub-section:allowCreationRelatedRecords_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:allowCreationRelatedRecords_snc|trigger=button|text=}{sub-section}{sub-section:allowCreationRelatedRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:allowCreationRelatedRecords_prs|trigger=button|text=}{sub-section}{sub-section:allowCreationRelatedRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:allowCreationRelatedRecords_ret|trigger=button|text=}{sub-section}{sub-section:allowCreationRelatedRecords_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:allowCreationRelatedRecords_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:allowCreationRelatedRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:allowCreationRelatedRecords_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:allowCreationRelatedRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:allowCreationRelatedRecords_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:allowCreationRelatedRecords_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.allowCreationRelatedRecords = true;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=allowParentDeleteWhenHavingRelatedRecords|class=node}{tr:id=name}{td}h6.allowParentDeleteWhenHavingRelatedRecords{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:allowParentDeleteWhenHavingRelatedRecords_des|trigger=button|text=}{sub-section}{sub-section:allowParentDeleteWhenHavingRelatedRecords_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:allowParentDeleteWhenHavingRelatedRecords_snc|trigger=button|text=}{sub-section}{sub-section:allowParentDeleteWhenHavingRelatedRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:allowParentDeleteWhenHavingRelatedRecords_prs|trigger=button|text=}{sub-section}{sub-section:allowParentDeleteWhenHavingRelatedRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:allowParentDeleteWhenHavingRelatedRecords_ret|trigger=button|text=}{sub-section}{sub-section:allowParentDeleteWhenHavingRelatedRecords_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:allowParentDeleteWhenHavingRelatedRecords_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:allowParentDeleteWhenHavingRelatedRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:allowParentDeleteWhenHavingRelatedRecords_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:allowParentDeleteWhenHavingRelatedRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:allowParentDeleteWhenHavingRelatedRecords_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:allowParentDeleteWhenHavingRelatedRecords_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.allowParentDeleteWhenHavingRelatedRecords = false;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=deleteRelatedRecords|class=node}{tr:id=name}{td}h6.deleteRelatedRecords{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:deleteRelatedRecords_des|trigger=button|text=}{sub-section}{sub-section:deleteRelatedRecords_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:deleteRelatedRecords_snc|trigger=button|text=}{sub-section}{sub-section:deleteRelatedRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:deleteRelatedRecords_prs|trigger=button|text=}{sub-section}{sub-section:deleteRelatedRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:deleteRelatedRecords_ret|trigger=button|text=}{sub-section}{sub-section:deleteRelatedRecords_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:deleteRelatedRecords_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:deleteRelatedRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:deleteRelatedRecords_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:deleteRelatedRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:deleteRelatedRecords_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:deleteRelatedRecords_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.deleteRelatedRecords = true;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=foreignDataSource|class=node}{tr:id=name}{td}h6.foreignDataSource{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:foreignDataSource_des|trigger=button|text=}{sub-section}{sub-section:foreignDataSource_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:foreignDataSource_snc|trigger=button|text=}{sub-section}{sub-section:foreignDataSource_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:foreignDataSource_prs|trigger=button|text=}{sub-section}{sub-section:foreignDataSource_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:foreignDataSource_ret|trigger=button|text=}{sub-section}{sub-section:foreignDataSource_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:foreignDataSource_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:foreignDataSource_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:foreignDataSource_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:foreignDataSource_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:foreignDataSource_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:foreignDataSource_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.primaryDataSource = 'db:/user_data/another_parent_table';
relation.foreignDataSource = 'db:/user_data/another_child_table';
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=initialSort|class=node}{tr:id=name}{td}h6.initialSort{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:initialSort_des|trigger=button|text=}{sub-section}{sub-section:initialSort_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:initialSort_snc|trigger=button|text=}{sub-section}{sub-section:initialSort_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:initialSort_prs|trigger=button|text=}{sub-section}{sub-section:initialSort_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:initialSort_ret|trigger=button|text=}{sub-section}{sub-section:initialSort_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:initialSort_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:initialSort_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:initialSort_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:initialSort_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:initialSort_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:initialSort_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.initialSort = 'another_child_table_text asc';
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=joinType|class=node}{tr:id=name}{td}h6.joinType{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:joinType_des|trigger=button|text=}{sub-section}{sub-section:joinType_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:joinType_snc|trigger=button|text=}{sub-section}{sub-section:joinType_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:joinType_prs|trigger=button|text=}{sub-section}{sub-section:joinType_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:joinType_ret|trigger=button|text=}{sub-section}{sub-section:joinType_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:joinType_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:joinType_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:joinType_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:joinType_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:joinType_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:joinType_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.joinType = JSRelation.LEFT_OUTER_JOIN;
/** @type {QBSelect<db:/example_data/orders>} */
var query = databaseManager.createSelect('db:/example_data/orders')
/** @type {QBJoin<db:/example_data/order_details>} */
var join = query.joins.add('db:/example_data/order_details', JSRelation.INNER_JOIN, 'odetail')
join.on.add(join.columns.orderid.eq(query.columns.orderid))
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=name|class=node}{tr:id=name}{td}h6.name{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:name_des|trigger=button|text=}{sub-section}{sub-section:name_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:name_snc|trigger=button|text=}{sub-section}{sub-section:name_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:name_prs|trigger=button|text=}{sub-section}{sub-section:name_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:name_ret|trigger=button|text=}{sub-section}{sub-section:name_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:name_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:name_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:name_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:name_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:name_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:name_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.name = 'anotherName';
var firstTab = tabs.newTab('firstTab', 'Child Form', childForm, relation);
firstTab.relationName = relation.name;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=primaryDataSource|class=node}{tr:id=name}{td}h6.primaryDataSource{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:primaryDataSource_des|trigger=button|text=}{sub-section}{sub-section:primaryDataSource_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:primaryDataSource_snc|trigger=button|text=}{sub-section}{sub-section:primaryDataSource_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:primaryDataSource_prs|trigger=button|text=}{sub-section}{sub-section:primaryDataSource_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:primaryDataSource_ret|trigger=button|text=}{sub-section}{sub-section:primaryDataSource_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:primaryDataSource_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:primaryDataSource_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:primaryDataSource_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:primaryDataSource_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:primaryDataSource_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:primaryDataSource_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.primaryDataSource = 'db:/user_data/another_parent_table';
relation.foreignDataSource = 'db:/user_data/another_child_table';
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\
{table:id=function|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=getRelationItems|class=node}{tr:id=name}{td}h6.getRelationItems{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSRelationItem]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getRelationItems{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:getRelationItems_des|trigger=button|text=}{sub-section}{sub-section:getRelationItems_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getRelationItems_snc|trigger=button|text=}{sub-section}{sub-section:getRelationItems_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getRelationItems_prs|trigger=button|text=}{sub-section}{sub-section:getRelationItems_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getRelationItems_ret|trigger=button|text=}{sub-section}{sub-section:getRelationItems_ret|trigger=none|class=sIndent}[JSRelationItem]\[] -- An array of JSRelationItem instances representing the relation criteria of this relation.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getRelationItems_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getRelationItems_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getRelationItems_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getRelationItems_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getRelationItems_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getRelationItems_sam|trigger=none}{code:language=javascript}
var criteria = relation.getRelationItems();
for (var i=0; i<criteria.length; i++)
{
var item = criteria[i];
application.output('relation item no. ' + i);
application.output('primary column: ' + item.primaryDataProviderID);
application.output('operator: ' + item.operator);
application.output('foreign column: ' + item.foreignColumnName);
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUUID|class=node}{tr:id=name}{td}h6.getUUID{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[UUID]{span}{span:id=iets|style=float: left; font-weight: bold;}getUUID{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:getUUID_des|trigger=button|text=}{sub-section}{sub-section:getUUID_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getUUID_snc|trigger=button|text=}{sub-section}{sub-section:getUUID_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getUUID_prs|trigger=button|text=}{sub-section}{sub-section:getUUID_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getUUID_ret|trigger=button|text=}{sub-section}{sub-section:getUUID_ret|trigger=none|class=sIndent}[UUID]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getUUID_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getUUID_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getUUID_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getUUID_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getUUID_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getUUID_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
application.output(relation.getUUID().toString())
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newRelationItem-String_String_String|class=node}{tr:id=name}{td}h6.newRelationItem{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSRelationItem]{span}{span:id=iets|style=float: left; font-weight: bold;}newRelationItem{span}{span:id=iets|style=float: left;}\(dataprovider, operator, foreinColumnName){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:newRelationItem-String_String_String_des|trigger=button|text=}{sub-section}{sub-section:newRelationItem-String_String_String_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:newRelationItem-String_String_String_snc|trigger=button|text=}{sub-section}{sub-section:newRelationItem-String_String_String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:newRelationItem-String_String_String_prs|trigger=button|text=}{sub-section}{sub-section:newRelationItem-String_String_String_prs|trigger=none|class=sIndent}\{[String]} dataprovider -- The name of the primary dataprovider.
\{[String]} operator -- The operator used to relate the primary and the foreign dataproviders.
\{[String]} foreinColumnName -- The name of the foreign dataprovider.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:newRelationItem-String_String_String_ret|trigger=button|text=}{sub-section}{sub-section:newRelationItem-String_String_String_ret|trigger=none|class=sIndent}[JSRelationItem] -- A JSRelationItem instance representing the newly added relation item.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:newRelationItem-String_String_String_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:newRelationItem-String_String_String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:newRelationItem-String_String_String_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:newRelationItem-String_String_String_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:newRelationItem-String_String_String_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:newRelationItem-String_String_String_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
relation.newRelationItem('another_parent_table_id', '=', 'another_child_table_parent_id');
// for literals use a prefix
relation.newRelationItem(JSRelationItem.LITERAL_PREFIX + "'hello'",'=', 'mytextfield');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeRelationItem-String_String_String|class=node}{tr:id=name}{td}h6.removeRelationItem{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}removeRelationItem{span}{span:id=iets|style=float: left;}\(primaryDataProviderID, operator, foreignColumnName){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:removeRelationItem-String_String_String_des|trigger=button|text=}{sub-section}{sub-section:removeRelationItem-String_String_String_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:removeRelationItem-String_String_String_snc|trigger=button|text=}{sub-section}{sub-section:removeRelationItem-String_String_String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:removeRelationItem-String_String_String_prs|trigger=button|text=}{sub-section}{sub-section:removeRelationItem-String_String_String_prs|trigger=none|class=sIndent}\{[String]} primaryDataProviderID -- the primary data provider (column) name
\{[String]} operator -- the operator
\{[String]} foreignColumnName -- the foreign column name
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:removeRelationItem-String_String_String_ret|trigger=button|text=}{sub-section}{sub-section:removeRelationItem-String_String_String_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:removeRelationItem-String_String_String_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:removeRelationItem-String_String_String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:removeRelationItem-String_String_String_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:removeRelationItem-String_String_String_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:removeRelationItem-String_String_String_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:removeRelationItem-String_String_String_sam|trigger=none}{code:language=javascript}
var relation = solutionModel.newRelation('myRelation', 'db:/myServer/parentTable', 'db:/myServer/childTable', JSRelation.INNER_JOIN);
relation.newRelationItem('someColumn1', '=', 'someColumn2');
relation.newRelationItem('anotherColumn', '=', 'someOtherColumn');
relation.removeRelationItem('someColumn1', '=', 'someColumn2');
var criteria = relation.getRelationItems();
for (var i = 0; i < criteria.length; i++) {
var item = criteria[i];
application.output('primary column: ' + item.primaryDataProviderID);
application.output('operator: ' + item.operator);
application.output('foreign column: ' + item.foreignColumnName);
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}
this relation.
The default value of this flag is "false".
Qualified name of the foreign data source. Contains both the name of the foreign
server and the name of the foreign table.
ret
Returns
sIndentclients
Supported Clients
sIndentSmartClient,WebClient,NGClientsam
Sample
sIdentjavascriptlastDetailRowinitialSortname
initialSort
dessIndent
A String which specified a set of sort options for the initial sorting of data
retrieved through this relation.
Has the form "column_name asc, another_column_name desc, ...".
ret
Returns
sIndentclients
Supported Clients
sIndentSmartClient,WebClient,NGClientsam
Sample
sIdentjavascriptlastDetailRowjoinTypename
joinType
dessIndent
The join type that is performed between the primary table and the foreign table.
Can be "inner join" or "left outer join".
Creates a new relation item for this relation. The primary dataprovider, the foreign data provider
and one relation operators (like '=' '!=' '>' '<') must be provided.
prs
Parameters
sIndentdataproviderThe name of the primary dataprovider.operatorThe operator used to relate the primary and the foreign dataproviders.foreinColumnNameThe name of the foreign dataprovider.ret
Returns
sIndent A JSRelationItem instance representing the newly added relation item.clients