.. _orm_genropy/virtual_columns/virtual_columns: Introduzione ============ Le colonne "virtuali" sono speciali tipi di colonne calcolate in tempo reale al caricamento della pagina. Esse non contengono quindi valori "veri" nel database, ma valori calcolati esclusivamente su richiesta per operazioni di vario tipo. Ci riferiamo a: - :ref:`aliasColumn` - :ref:`formulaColumn` - :ref:`pyColumn` Le colonne virtuali sono individuabili nel model come segue:: self.db.table('fatt.cliente').model.virtual_columns.keys() ['__protecting_reasons', '__is_protected_row', '__invalid_reasons', '__is_invalid_row', 'rsociale_upper', 'etichetta', 'n_fatture', 'tot_fatturato', 'provincia_nome', 'regione_sigla', 'regione_nome', 'zona', 'provv_calc', '__allowed_for_partition'] È importante osservare che normalmente le :ref:`Operazioni di lettura` restituiscono come risultato soltanto le colonne «vere», a meno che non vengano specificatamente richieste le colonne di tabelle in relazione (nelle interrogazioni di tipo :ref:`query e readColumns` ) oppure non venga specificato il parametro ``virtual_columns`` (nelle interrogazioni di tipo :ref:`record` ). Ad esempio, per richiedere una formulaColumn all'interno di una query è possibile **richiedere esplicitamente la colonna**:: myquery = clienti_tbl.query(columns="*,$n_fatture", where='$provincia = :prov', order_by='$n_fatture', prov='MI') .. hint:: Si noti che come valore di ``columns`` abbiamo scritto ``*,$n_fatture``: con questa notazione comunichiamo al motore sottostante che vogliamo ricevere tutte le colonne «vere» del record (rappresentate per l’appunto dall’asterisco) e, in aggiunta, anche la colonna *$n_fatture* .. Il parametro ``virtual_columns`` viene usato in realtà anche in altri contesti: - nelle stampe (verificare) - nelle Rpc (verificare) A volte virtual_columns, altre _virtual_columns, non mi è ben chiaro come funziona In alternativa è possibile "staticizzare" le colonne virtuali, in sede di definizione delle colonne, con l'attributo ``static=True``. In questo caso a ogni :ref:`Interrogazione` così come in ogni :ref:`Trigger` la colonna sarà sempre disponibile per la lettura .. davvero?Controllare .. raw:: html
**Allegati:** - `Genropy ORM - Colonne virtuali (JNotebook) `_ - `Genropy ORM - Colonne virtuali (HTML) `_ .. sectionauthor:: Davide Paci