Warning | ||
---|---|---|
| ||
This feature is deprecated. Please use Query Control instead. |
Performs relational database queries on domain SQL database.
Xml Structure
<QueryContent AutoSearch="" ClearFirst="" ValidationGroup="" XPath="" SectionName="">
<Rules></Rules>
<TargetXPath></TargetXPath>
<ItemXPath></ItemXPath>
<RowIdXPath></RowIdXPath>
<HierarchyXPath></HierarchyXPath>
<HierarchyColumn></HierarchyColumn>
<Filter></Filter>
<Query Name="" Start="0" MaxLength="-1">
<Parameters>
<TargetSchema></TargetSchema>
<TargetTable></TargetTable>
</Parameters>
<Columns>
<Column Name="" Formula="">
<Properties>
<XPath></XPath>
</Properties>
</Column>
</Columns>
<Where Condition="And">
<Criteria>
<Criteria Name="" Comparison="" Condition="" Formula="">
<Value></Value>
</Criteria>
</Criteria>
</Where>
<Order/>
<SubQueries>
<Query Name="<RelationName>">
</Query>
</SubQueries>
</Query>
<RowScript>
<Content></Content>
</RowScript>
</QueryContent>
Design
Auto Search
Specifies the query control should perform a search immediately when visible. Visibility of control can be controlled by Rules or Section Name properties. When Filter content is not visible when this attribute is set to True value Filter content is not visible.
Auto Select All (v4.5)
Specifies the query result picker is must be shown. The result picker allows selecting individual rows to edit. If you work with too many rows, a picker is a better method for performance. When set to True, all matching rows are immediately imported.
Clear First
Specifies the before query results populated on data model all existing records are removed.
Rules
Section Name
Include Page
This control allows you to query your emakin based relational databases and map them with your form data.
Here are samples;
Simple sample 1:
<Query Name="" Start="0" MaxLength="-1">
<Parameters>
<TargetSchema Type="System.String, mscorlib"><![CDATA[Masraf]]></TargetSchema>
<TargetTable Type="System.String, mscorlib"><![CDATA[MasrafTipiGrubu]]></TargetTable>
</Parameters>
<Columns>
<Column Name="Kod" Formula="None">
</Column>
<Column Name="Text" Formula="None">
</Column>
</Columns>
<Where Condition="And"/>
<Order>
<Order Name="Text" Type="Ascending"/>
</Order>
<SubQueries/>
</Query>
Simple sample 2:
<Query Name="" Start="0" MaxLength="-1">
<Parameters>
<TargetSchema Type="System.String, mscorlib"><![CDATA[Masraf]]></TargetSchema>
<TargetTable Type="System.String, mscorlib"><![CDATA[MasrafTipi]]></TargetTable>
</Parameters>
<Columns>
<Column Name="Kod" Formula="None">
</Column>
<Column Name="Text" Formula="None">
</Column>
</Columns>
<Where Condition="And">
<Criteria>
<Criteria Name="GrupKodu" Comparison="Equals" Condition="And" Formula="None">
<Value Type="System.String, mscorlib"><![CDATA[{{MasrafTipiGrubu}}]]></Value>
</Criteria>
</Criteria>
</Where>
<Order>
<Order Name="Text" Type="Ascending"/></Order>
<SubQueries/>
</Query>
Advance sample:
<Query Name="" Start="0" MaxLength="-1">
<Parameters>
<TargetSchema Type="System.String, mscorlib"><![CDATA[HR]]></TargetSchema>
<TargetTable Type="System.String, mscorlib"><![CDATA[Ucretler]]></TargetTable>
</Parameters>
<Columns>
<Column Name="Person.Id">
<Properties>
<XPath Type="System.String, mscorlib"><![CDATA[Person/PersonId]]></XPath>
</Properties>
</Column>
<Column Name="Person.DisplayName">
<Properties>
<Caption Type="System.String, mscorlib"><![CDATA[Ad Soyad]]></Caption>
<XPath Type="System.String, mscorlib"><![CDATA[Person/AdSoyad]]></XPath>
</Properties>
</Column>
<Column Name="Durum.Tip">
<Properties>
<XPath Type="System.String, mscorlib"><![CDATA[Durum/Tip]]></XPath>
</Properties>
</Column>
<Column Name="Durum.Ad">
<Properties>
<XPath Type="System.String, mscorlib"><![CDATA[Durum/Ad]]></XPath>
</Properties>
</Column>
<Column Name="ProjePersonel.HizmetTipi.AltProje.Proje.Bolge">
<Properties>
<Caption Type="System.String, mscorlib"><![CDATA[Bölge]]></Caption>
</Properties>
</Column>
<Column Name="ProjePersonel.HizmetTipi.AltProje.Proje.Ad">
<Properties>
<Caption Type="System.String, mscorlib"><![CDATA[Proje]]></Caption>
<XPath Type="System.String, mscorlib"><![CDATA[Person/Proje]]></XPath>
</Properties>
</Column>
<Column Name="ProjePersonel.HizmetTipi.AltProje.Ad">
<Properties>
<Caption Type="System.String, mscorlib"><![CDATA[Alt Proje]]></Caption>
<XPath Type="System.String, mscorlib"><![CDATA[Person/AltProje]]></XPath>
</Properties>
</Column>
<Column Name="ProjePersonel.HizmetTipi.Ad">
<Properties>
<Caption Type="System.String, mscorlib"><![CDATA[Hizmet Tipi]]></Caption>
<XPath Type="System.String, mscorlib"><![CDATA[Person/HizmetTipi]]></XPath>
</Properties>
</Column>
<Column Name="Employee.Organization.Code">
<Properties>
<XPath Type="System.String, mscorlib"><![CDATA[Person/SirketKod]]></XPath>
</Properties>
</Column>
</Columns>
<Where Condition="And">
<Blocks>
<Block Condition="And">
<Criteria>
<Criteria Name="Parent.Durum" Comparison="Equals" Condition="Or">
<Value Type="System.String, mscorlib"><![CDATA[2]]></Value>
</Criteria>
<Criteria Name="Parent.Durum" Comparison="Equals" Condition="Or">
<Value Type="System.String, mscorlib"><![CDATA[]]></Value>
</Criteria>
</Criteria>
</Block>
<Block Condition="And">
<Criteria>
<Criteria Name="Durum" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[1]]></Value>
</Criteria>
<Criteria Name="Brut" Comparison="GreaterThanOrEqualTo" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{Ucret/UcretKucuk}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[0]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="Brut" Comparison="LessThanOrEqualTo" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{Ucret/UcretBuyuk}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[99999]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="OdemeTipi" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{OdemeTipi}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="HesaplamaTipi" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{HesaplamaTipi}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="Employee.Positions.OrganizationUnitPosition.Position.Id" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{Pozisyon}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="ProjePersonel.HizmetTipi.AltProje.Proje.Sirket" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{Sirket/Kod}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="ProjePersonel.HizmetTipi.AltProje.Proje.Id" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{Proje/Id}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="ProjePersonel.HizmetTipi.AltProje.Id" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{AltProje/Id}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="ProjePersonel.HizmetTipi.Id" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{HizmetTipi/Id}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[]]></IgnoreIfEquals>
</Properties>
</Criteria>
<Criteria Name="Employee.RegistryNumber" Comparison="Equals" Condition="And">
<Value Type="System.String, mscorlib"><![CDATA[{{SicilNo}}]]></Value>
<Properties>
<IgnoreIfEquals Type="System.String, mscorlib"><![CDATA[]]></IgnoreIfEquals>
</Properties>
</Criteria>
</Criteria>
</Block>
</Blocks>
</Where>
<Order>
<Order Name="Person.DisplayName" Type="Ascending"/></Order>
<SubQueries/>
_Section Name _Section Name
Validation Group
Name of validation group rules before executing the query. When any rule is failed, an error is shown on the screen and the query is not executed.
Dynamic Rules
Include Page | ||||
---|---|---|---|---|
|
Data
Bound XPath Include Page _Bound XPath _Bound XPath
XPath
XPath of data model to bind control. If not set, uses current node on the data model.
Target XPath
Specifies the xpath of target container node to import query results. Specified xpath is relative to the parent of the current node not XPath attribute.
For example, use "Filter" node for XPath attribute and use "Results" xpath for TargetXPath attribute.
Code Block |
---|
<Data>
<Filter>
<SearchField />
</Filter>
<Results>
<Row>
<Column />
</Row>
</Results>
</Data> |
Query Syntax
Relational database queries use special markup to specify the query to execute. Query structure is similar to SQL Select command, but you may use subqueries and join clauses automatically handled.
Query Structure
<Query
Start=""
Start index of results to fetch. If not specified 0 value is used.
MaxLength="-1">
Maximum number of results to fetch. If not specified -1 (maximum results) is used.
<Parameters>
Query parameters.
<TargetSchema>MySchema</TargetSchema>
Name of schema of query target. Required.
<TargetTable>MyTable</TargetTable>
Name of table of query target. Required.
</Parameters>
<Columns>
List of columns to include in results.
<Column
The column definition. Any number of column can be specified.
Name="MyColumn"
Name of column or relation path. Please see Column Name for more information. Required.
Formula="None">
Aggregation formula like count, max etc. If not specified no aggregation is applied. Please see Formula for more information.
<Properties>
Column specific properties. Currently
<XPath></XPath>
XPath of column value mapping for rows. If not specified column name is used.
<Language></Language>
By default all columns are automatically localized by user language but with this property you can ask for explicitly specify the language. If language is not available, original column value is used.
</Properties>
</Column>
<Column></Column>
<Column></Column>
</Columns>
<Where>
Query criteria and block list. Criteria can be consist of criteria definitions or block definitions to group criteria for logical conditions (and / or).
<Criteria>
List of criteria values.
<Criteria
The criteria definition. Any number of criteria can be specified.
Name="MyColumn"
Column name or relation path to criteria to apply. Please see Column Name for more information. Required.
Comparison="Equals"
Comparison method of criteria like equals or greater etc. If not specified Equals value is used. Please see Comparison for more information.
Condition="And"
Condition of criteria to merge with previous criteria in list. "And", "Or" values are valid. If not used "And" value is used.
Formula="None">
Aggregation formula like count, max etc. If not specified no aggregation is applied. Please see Formula for more information.
<Value></Value>
Value of criteria. Value can be specified in static value or template format like "{{Code}}" or "000-{{Code}}-1111" to dynamically evaluate.
If not specified value used as empty string.
You can use "NULL" string value to specify null value.
<Properties>
Criteria specific custom properties. Currently IgnoreIfEquals only used.
</Properties>
<IgnoredValues>
The list of values to ignore criteria completely. For example; when product name criteria is set to empty value you may want to list all products, not empty named products.
<Value></Value>
Value of criteria.
</IgnoredValues>
</Criteria>
<Criteria> ............ </Criteria>
</Criteria>
<Blocks>
List of blocks to group criteria.
<Block
The block definition.
Condition="And">
Condition to merge with previous blocks. If not specified And value is used.
<Criteria>
List of criteria. Same with above criteria definition.
<Criteria> ............ </Criteria>
</Criteria>
</Block>
</Blocks>
</Where>
<Order>
List of ordering columns.
<Order
The order definition.
Name="MyColumn"
Column name or relation path to apply order. Please see Column Name for more information. Required.
Type="Ascending"/>
Type of ordering. "Ascending", "Descending" values are valid. If not specified "Ascending" value is used.
</Order>
<SubQueries>
List of subqueries to return as related child rows.
<Query
Subquery definition. Same with above only Name attribute is required.
Name="">
Name of table relation to get rows as child. If relation is not found in table definition error is thrown.
</Query>
</SubQueries>
</Query>
Formula
Formula specifies the method of evaluation of row values. Formula enumeration can be one of following values;
Value | Description |
---|---|
None | No aggregation is applied. All values in rows. |
Count | Count of row values. |
CountDistinct | Count of distinct values in rows. |
Sum | Sum of row values. Valid for numeric type columns. |
SumDistinct | Sum of distinct values in rows. Valid for numeric type columns. |
Avg | Average of row values. Valid for numeric type columns. |
AvgDistinct | Average of distinct values in rows. Valid for numeric type columns. |
Min | Minimum value in rows. |
Max | Maximum value in row values. |
Comparison
Specifies the comparison method of criteria value.
Value | Description |
---|---|
Equals | All rows with same value. |
LessThan | All rows that less than criteria value. |
LessThanOrEqualTo | All rows that less or equals to criteria value. |
GreaterThan | All rows that greater than criteria value. |
GreaterThanOrEqualTo | All rows that greater or equals to criteria value. |
Different | All rows with different than criteria value. |
Like | All rows that likes to criteria value. Criteria value can be used with * (star character) Like *ABC, ABC*, *ABC* |
Column Name
Column names can be specified as directly column name or relation path. Relation paths can be specified as "Relation.Relation.Column" format.
For example, you can use the following values as column names for above relational database model.
Column Name | Description |
---|---|
Name | Name of customer |
Orders.Id | Id of order |
Orders.Product.Name | Name of ordered product |
Example Query
The following query returns all customer names and counts of orders by product name criteria. Each row also contains the list of related customer orders as child rows.
Code Block |
---|
<Query> <Parameters> <TargetSchema>Customer</TargetSchema> <TargetTable>MySchema</TargetTable> </Parameters> <Columns> <Column Name="Name" Formula="None" /> <Column Name="Orders.Id" Formula="Count" /> </Columns> <Where> <Criteria> <Criteria Name="Orders.Product.Name" Comparison="Like"> <Value>{{ProductName}}</Value> <IgnoredValues> <Value></Value> <Value>*All*</Value> </IgnoredValues> </Criteria> </Criteria> </Where> <Order> <Order Name="Orders.Product.Name" Type="Ascending"/> </Order> <SubQueries> <Query Name="Orders"> <Columns> <Column Name="Id" /> <Column Name="ProductId" /> </Columns> <Order> <Order Name="Product.Name" Type="Ascending"/> </Order> </Query> </SubQueries> </Query> |