Skip to content

Commit

Permalink
Merge pull request #2211 from doc4d/l10n_main
Browse files Browse the repository at this point in the history
New Crowdin updates
  • Loading branch information
arnaud4d authored Aug 29, 2023
2 parents 9d035b5 + 42cce7d commit 18444e1
Show file tree
Hide file tree
Showing 180 changed files with 2,943 additions and 1,803 deletions.
111 changes: 84 additions & 27 deletions i18n/de/docusaurus-plugin-content-docs/current/API/DataClassClass.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -481,8 +481,10 @@ The ***SearchDuplicate*** project method searches for duplicated values in any d
| --------- | ------ | -- | ------------------------------------------------------- |
| Ergebnis | Objekt | <- | Information on the dataclass|<!-- END REF -->


|


#### Beschreibung

The `.getInfo( )` function <!-- REF #DataClassClass.getInfo().Summary -->returns an object providing information about the dataclass<!-- END REF -->. This function is useful for setting up generic code.
Expand Down Expand Up @@ -783,6 +785,61 @@ You will not get the expected result because the null value will be evaluated by
$vSingles:=ds.Person.query("spouse = null") //correct syntax
```


**Not equal to in collections**

When searching within dataclass object attributes containing collections, the "not equal to *value*" comparator (`#` or `!=`) will find elements where ALL properties are different from *value* (and not those where AT LEAST one property is different from *value*, which is how work other comparators). Basically, it is equivalent to search for "Not(find collection elements where property equals *value*"). For example, with the following entities:

```
Entity 1:
ds.Class.name: "A"
ds.Class.info:
{ "coll" : [ {
"val":1,
"val":1
} ] }
Entity 2:
ds.Class.name: "B"
ds.Class.info:
{ "coll" : [ {
"val":1,
"val":0
} ] }
Entity 3:
ds.Class.name: "C"
ds.Class.info:
{ "coll" : [ {
"val":0,
"val":0
} ] }
```

Consider the following results:

```4d
ds.Class.query("info.coll[].val = :1";0)
// returns B and C
// finds "entities with 0 in at least one val property"
ds.Class.query("info.coll[].val != :1";0)
// returns A only
// finds "entities where all val properties are different from 0"
// which is the equivalent to
ds.Class.query(not("info.coll[].val = :1";0))
```

If you want to implement a query that finds entities where "at least one property is different from *value*", you need to use a special notation using a letter in the `[]`:

```4d
ds.Class.query("info.coll[a].val != :1";0)
// returns A and B
// finds "entities where at least one val property is different from 0"
```

You can use any letter from the alphabet as the `[a]` notation.

**Linking collection attribute query arguments**

:::info
Expand Down Expand Up @@ -882,7 +939,7 @@ In the *querySettings* parameter, you can pass an object containing additional o

**About queryPlan and queryPath**

The information recorded in `queryPlan`/`queryPath` include the query type (indexed and sequential) and each necessary subquery along with conjunction operators. Query paths also contain the number of entities found and the time required to execute each search criterion. Query paths also contain the number of entities found and the time required to execute each search criterion. Generally, the description of the query plan and its path are identical but they can differ because 4D can implement dynamic optimizations when a query is executed in order to improve performance. For example, the 4D engine can dynamically convert an indexed query into a sequential one if it estimates that it is faster. This particular case can occur when the number of entities being searched for is low.
The information recorded in `queryPlan`/`queryPath` include the query type (indexed and sequential) and each necessary subquery along with conjunction operators. Query paths also contain the number of entities found and the time required to execute each search criterion. You may find it useful to analyze this information while developing your application(s). Generally, the description of the query plan and its path are identical but they can differ because 4D can implement dynamic optimizations when a query is executed in order to improve performance. For example, the 4D engine can dynamically convert an indexed query into a sequential one if it estimates that it is faster. This particular case can occur when the number of entities being searched for is low.

For example, if you execute the following query:

Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ El comando `New shared collection` <!-- REF #_command_.New shared collection.Sum

La adición de un elemento a esta colección utilizando el operador de asignación debe estar rodeada por la estructura [`Use...End use`](Concepts/shared.md#useend-use), de lo contrario se genera un error (esto no es necesario cuando se añaden elementos utilizando funciones como [`push()`](#push) o [`map()`](#map) porque activan automáticamente una estructura interna *Use...End use*). Sin embargo, es posible leer un elemento sin una estructura *Use...End use*.

|
:::info

Para más información sobre las colecciones compartidas, consulte la página [Objetos y colecciones compartidos](Concepts/shared.md).

Expand Down
Loading

0 comments on commit 18444e1

Please sign in to comment.