Query ORDA più sofisticate con formule

Tradotto automaticamente da Deepl

In 4D v17 R6, le query ORDA diventano sempre più potenti e concise. Questo post è dedicato a coloro che hanno bisogno di criteri di ricerca più sofisticati di una semplice sintassi come“name = Smith‘”. Con questa release di R, è possibile utilizzare qualsiasi metodo di progetto o espressione 4D nel metodo query() metodo membro utilizzando delle formule.

Quale modo migliore per spiegare questa funzione se non con un esempio? Scaviamo nei dettagli.

HDI: esempio di query ORDA con formule

SCRIVERE UNA DOMANDA UTILIZZANDO UNA FORMULA

Il metodo query() è stato aggiornato per supportare un singolo Formula come parametro.

Esempio

Nella classe di dati Students , cerchiamo gli studenti con un punteggio in inglese superiore al loro punteggio medio complessivo.

Si noti che ogni entità è accessibile dalla formula con il comando This con il comando

C_OBJECT($formula;$students)
// In the Students dataClass, grades is an object field containing students' grades for each subject
// Example of JSON representation of the grades object field:
// {math:50,english:90,history:85}
// The studentAverage project method computes the student's overall average in all subjects
$formula :=Formula(This.grades.english>studentAverage (This))
$students :=ds.Students.query($formula)

Utilizzare una formula con altri criteri di ricerca

Le formule possono essere facilmente combinate con altri criteri di ricerca. Di seguito è riportato un esempio che mostra come fare.

Esempio

Nella classe di dati Students , continuiamo a cercare gli studenti con un punteggio in inglese superiore alla media generale e il cui paese è l’Inghilterra.

L’oggetto $formula viene utilizzato come valore segnaposto, come qualsiasi altro.

C_OBJECT($formula;$students)
C_TEXT ($country) // $country = "France"

$formula :=Formula(This.grades.english>studentAverage (This))
$students :=ds.Students.query(":1 e paese=:2";$formula;$country)

utilizzare una formula nella stringa di query

Una formula può anche essere inserita nella stringa di query con un’istruzione eval().

Sebbene ciò possa essere comodo per codificare rapidamente una query, si perderanno i vantaggi derivanti dall’uso di un oggetto formula (come il completamento automatico, i colori nell’editor di codice e le chiamate di ricerca).

C_OBJECT($students)
C_TEXT ($country) // $country = "France"

$students :=ds.Students.query("eval(This.grades.english > studentAverage (This)) and country=:1";$country)

NOTA: Anche il metodo query() sull’oggetto selezione entità è stato aggiornato per supportare le formule. Per saperne di più, consultare la documentazione.

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert è entrata a far parte del team 4D Product come Product Owner nel 2017. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente.Marie-Sophie si è laureata presso la scuola di ingegneria ESIGELEC e ha iniziato la sua carriera come ingegnere presso IBM nel 1995. Ha partecipato a vari progetti (di manutenzione o di costruzione) e ha lavorato come sviluppatrice Cobol. In seguito ha lavorato come progettista UML e sviluppatore Java. Ultimamente i suoi ruoli principali erano l'analisi e la scrittura dei requisiti funzionali, il coordinamento dei team di business e di sviluppo.