Come utilizzare le funzioni Minimo/Massimo, Ceil up/Ceil down (arrotondato) e gli script Ruby
Vediamo come funzionano le funzioni, usando la tabella dei prodotti come esempio.
Questa tabella contiene le seguenti colonne:
Marca e modello;
Immagine;
Prezzo per giugno, luglio e agosto.
Il compito è mostrare il prezzo più basso per tutti e tre i mesi.
Il primo passo è aggiungere il campo Formula al modulo.
Selezionare "Funzione" nel primo elenco a discesa:
Selezionare "Minimo" nel secondo elenco a discesa:
Successivamente, devi selezionare i campi per il confronto. In questo caso, si tratta di tre campi prezzo.
E fai clic sul pulsante "Crea".
Ora nella nostra tabella è apparso il campo "Prezzo più basso", che confronta i tre valori nel record e mostra il minimo di essi:
La funzione "Massimo" funziona esattamente al contrario.
Considera le funzioni "Ceil up" e "Ceil down". Ecco una tabella con i clienti e i loro ordini.
Il compito è arrotondare il valore nella colonna "Importo pagabile".
Crea un nuovo campo Formula e seleziona la funzione "Ceil up" (o "Ceil down");
Successivamente, devi selezionare il campo richiesto dall'elenco a discesa e specificarne il significato.
Di conseguenza, otteniamo una colonna con un importo arrotondato:
Gli script consentono di eseguire operazioni logiche e aritmetiche.
Utilizzeremo la tabella "Saldi estivi" come esempio. Questa tabella contiene una colonna con i manager, la durata del loro lavoro e la somma delle vendite per l'estate..
Creiamo un nuovo campo Formula, selezioniamo l'opzione Funzione e la voce Script (Ruby) nell'elenco seguente.
Puoi usare i nomi dei campi HTML come operandi.
Fai clic sul collegamento sotto il campo funzione "Come inserire i dati del record":
Apparirà un elenco di campi disponibili. Seleziona un campo dall'elenco e copia il nome HTML:
Inoltre, puoi cambiare il nome del campo HTML proprio qui. È sufficiente inserire un nuovo nome e cliccare sul pulsante "Aggiorna":
Sono disponibili i seguenti operatori aritmetici e condizionali:
(+) addizione
(-) sottrazione
(*) moltiplicazione
(/) divisione
(>) vero, se l'operando di sinistra è maggiore di quello di destra
(<) vero, se l'operando di sinistra è minore di quello di destra
(%) modulo divisione
(==) vero, se i valori dei due operandi sono gli stessi.
Conditional operators:
(if) utilizzato per verificare se una condizione è vera. I valori di condizione false e nil sono falsi, mentre tutti gli altri saranno veri.
(elsif) utilizzato per condizioni aggiuntive.
(||) utilizzato per verificare più condizioni.
Torniamo indietro, per esempio. Il compito è calcolare il bonus per i manager.
Supponiamo che il rapporto bonus dipenda da diversi fattori. Il primo è l'esperienza lavorativa in azienda.
Creiamo il seguente script:
if work_months > 12
300
Ciò significa che se un dipendente ha lavorato in azienda per più di 12 mesi, riceverà un bonus di 300 $.
Creiamo un'altra condizione. Se il manager ha fatto più di 7000 vendite, riceverà 150 $ + 25%.
Lo script dovrebbe apparire così:
elsif sales > 7000
(150*0.25)+150
In tutti gli altri casi il bonus sarà di 150 $
else
150
È necessario specificare end, affinché lo script funzioni correttamente.
Ora possiamo calcolare il bonus per ogni manager:
Metodi e operatori disponibili: to_f, to_i, to_s, round, floor, ceil, ceiling_up, ceiling_down, include?, if, elsif, else, end.
Per verificare se il campo contiene un valore specifico puoi anche usare l'elemento [ ].
Esempio di utilizzo:
if 'supplies' ['stock']
true
else
false
end
Inoltre, puoi utilizzare due variabili: a e b
Oltre agli operatori aritmetici, puoi usare funzioni trigonometriche di base, logaritmiche, trascendentali e radici. Le funzioni devono essere scritte come segue: Math::function(Field_name). Ad esempio, Math::acos(Field_csIfon). Elenco dettagliato delle funzioni matematiche:
Funzioni trigonometriche
(::cos) Restituisce il coseno dell'argomento specificato.
(::sin) Restituisce il seno dell'argomento specificato.
(::tan) Restituisce la tangente dell'argomento specificato.
Funzioni trigonometriche inverse
(::acos) Restituisce l'arcocoseno dell'argomento specificato.
(::asin) Restituisce l'arcoseno dell'argomento specificato.
(::atan) Restituisce l'arcotangente dell'argomento specificato.
(::atan2) Restituisce l'argtangente di due argomenti specificati.
Funzioni trigonometriche iperboliche
(::cosh) Restituisce il coseno iperbolico dell'argomento specificato.
(::sinh) Restituisce il seno iperbolico dell'argomento specificato.
(::tanh) Restituisce la tangente iperbolica dell'argomento specificato.
Funzioni trigonometriche iperboliche inverse
(::acosh) Restituisce l'inverso del coseno iperbolico dell'argomento specificato.
(::asinh) Restituisce l'inverso del seno iperbolico dell'argomento specificato.
(::atanh) Restituisce l'inverso della tangente iperbolica dell'argomento specificato.
Funzioni di esponenzialità e logaritmiche
(::exp) Restituisce il valore di un dato valore elevato a una data potenza.
(::log) Restituisce il logaritmo di un dato valore in una data base.
(::log10) Restituisce il logaritmo in base 10 dell'argomento dato.
(::log2) Restituisce il logaritmo in base 2 dell'argomento dato.
Funzioni di frazione ed esponente
(::frexp) Restituisce la frazione e l'esponente dell'argomento specificato.
(::ldexp) Restituisce il valore per una frazione e un esponente specificati.
Funzioni radice
(::cbrt) Restituisce la radice cubica dell'argomento specificato.
(::sqrt) Restituisce la radice quadrata dell'argomento specificato.
Funzioni di errore
(::erf) Restituisce il valore della funzione di errore di Gauss per l'argomento specificato.
(::erfc) Restituisce il valore della funzione di errore complementare per l'argomento specificato.
Funzioni Gamma
(::gamma) Restituisce il valore della funzione gamma per l'argomento specificato.
(::lgamma) Restituisce il valore della funzione gamma logaritmica per l'argomento specificato.
Funzione ipotenusa
(::hypot) Restituisce sqrt(a**2 + b**2) per a e b specificati.
Ecco alcuni esempi di come semplificare il tuo lavoro usando le funzioni.
Abbiamo una tabella Candidati al lavoro:
Il compito è dividere i candidati in tre gruppi: un candidato idoneo, un candidato di riserva e un candidato non idoneo.
Possiamo usare il modulo di ricerca, ma poi dovremo usare tutti i criteri:
Un campo Formula con una funzione viene in soccorso. Creiamo una nuova formula "Selezione".
Dobbiamo dividere i candidati in tre gruppi condizionali.
Se il candidato ha:
- Età inferiore a 45 anni;
- Istruzione superiore;
- Esperienza lavorativa superiore a 5 anni;
- Una raccomandazione da un precedente datore di lavoro, allora tale candidato riceve lo stato "Idoneo".
Per il gruppo "Riserva", un candidato deve avere meno di 50 anni, istruzione superiore o terziaria e più di 5 anni di esperienza lavorativa.
Tutti gli altri candidati ricevono lo stato "Non idoneo".
Scriviamo il seguente codice per la funzione:
if age<45 && "education" == "Superiore" && exp > 5 && "recommend" == "SÌ"
"Appropriato"
elsif age<50 && "education" == "Superiore" || "Terziario" && exp > 5
"Prenotare"
else
"Non appropriato"
end
Nota bene: i valori numerici (inclusi i nomi dei campi html) non sono racchiusi tra virgolette. Le virgolette sono utilizzate solo per i valori stringa.
Come puoi vedere nello screenshot seguente, a ciascun candidato è stato assegnato uno stato in base ai criteri:
È molto più facile cercare su un singolo campo invece che su più criteri:
Lo stesso vale per la formattazione condizionale in una tabella:
Utilizziamo il campo "Selezione" per formattare i record nella tabella:
È molto più comodo generare un report dopo aver effettuato una ricerca o un raggruppamento per un campo:
Che contiene tutti i candidati in base ai criteri selezionati:
Non dimenticare le Azioni condizionali e il campo Azione.
Ad esempio, crea un pulsante con l'azione "Invia e-mail", che sarà disponibile solo nel record con i candidati "idonei".
Puoi vedere un esempio di come creare un pulsante Azione tramite questo link.
Un campo funzione può essere utilizzato come criterio nelle regole dei campi.
Ad esempio, abilita il campo "Selezione" nel modulo:
Successivamente, creiamo un nuovo campo "Aggiungi alla coda" (pulsante di scelta) con una scelta di due valori:
Crea una regola.
Se il campo "Selezione" è composto da "Prenota", allora mostra il campo "Aggiungi alla coda":
Ecco come appare sul modulo:
Le funzioni consentiranno non solo una gestione dei dati più efficiente, ma anche calcoli più complessi.
Ad esempio, considera una tabella di definizione del profitto:
Il compito è calcolare il profitto totale.
La formula è la seguente: profitto totale = fatturato - costo totale
Se eseguiamo un calcolo del genere utilizzando formule standard, allora dovremmo dividere il calcolo in diverse formule (calcolare separatamente fatturato e costo totale).
Utilizzando le funzioni Ruby, puoi eseguire questo calcolo in un campo:
(sell_price*quantity)-(buy_cost*quantity)
Profitto totale nella tabella:
Nota bene: per un calcolo corretto è necessario utilizzare il tipo di campo "Decimale".
Conteggio dei giorni tra le date
Ad esempio, utilizzeremo una tabella con i contratti.
Attività: mostra quanti giorni scadrà il contratto.
Crea il seguente script:
exp_date.mjd - DateTime.now
Dove:
exp_date - html nome del campo.
.mjd metodo - converte la data nel formato del calendario giuliano.
DateTime.now - oggetto il cui valore è la data e l'ora locale corrente.
Di conseguenza, otteniamo una colonna con il numero di giorni fino alla fine del contratto.
Ecco un altro esempio.
Attività: determinare l'anno di nascita, avendo solo l'età di una persona.
Creare il seguente script:
DateTime.year - age
Dove:
age - html nome del campo.
DateTime.year - oggetto il cui valore è l'anno corrente.
Di conseguenza, otteniamo una colonna con l'anno di nascita di ogni persona.
Collegamento alla visualizzazione del record
Utilizzando lo script, è possibile creare un collegamento alla visualizzazione dei record. Andare al menu "Record" e aprire la visualizzazione dei record.
Copia il link nella barra degli indirizzi:
Crea un campo Formula. Seleziona "Script (Ruby)" dall'elenco. Devi usare la variabile "a" e un collegamento record dal passaggio precedente (scritto tra virgolette). Sostituisci record id con "Numero di identificazione dell'ingresso" dall'elenco con il valore |internal_id|:
In questo modo otterrai un collegamento al record nella tabella:
Puoi utilizzare un collegamento al widget Record nello stesso modo: