Collegamento di tabelle diverse con le relazioni tra tabelle

Completato

TableRelation è una proprietà di tabella usata per stabilire una relazione tra due tabelle, ad esempio tra la tabella Cliente e la tabella Paese/area geografica. Ad esempio, se un cliente è situato in un determinato paese, tra le tabelle Cliente e Paese/area geografica esiste una relazione.

La proprietà TableRelation consente di definire le ricerche in altre tabelle. Questa proprietà mostrerà un menu a discesa nelle pagine, che consente di selezionare un valore della tabella collegata.

Screenshot del menu a discesa della proprietà TableRelation.

Relazione tabella normale

Una relazione tabella normale è una relazione semplice tra due tabelle. In questo tipo di relazione, è possibile usare la proprietà TableRelation per specificare la tabella che si desidera collegare. Specificando la tabella, è possibile collegarsi automaticamente alla chiave primaria di tale tabella.

Screenshot di esempio di una relazione tabella normale.

Relazione tabella filtrata

Una relazione tabella normale mostra tutti i record della tabella collegata. Usando una relazione tabella filtrata è possibile limitare i record visualizzati applicando uno o più filtri ai record della tabella. Di conseguenza, una relazione tabella filtrata mostrerà solo un sottoinsieme dei record.

Nell'esempio seguente, viene applicato un filtro al codice Country/Region per mostrare solo i paesi/aree geografiche in cui il campo EU Country/Region Code non è vuoto.

Screenshot della relazione tabella codice paese/area geografica filtrata.

Relazione tabella condizionale

Una relazione tabella condizionale è una relazione dinamica, ovvero non è fissa su una sola tabella. Il collegamento dipende da una condizione, pertanto, a seconda della valutazione della condizione è possibile che si faccia riferimento a una o all'altra tabella.

È possibile usare una relazione tabella condizionale nelle righe vendita di un ordine vendita. A seconda del campo Tipo il campo N. sarà collegato ad altre tabelle.

Screenshot di una riga vendita collegata alla tabella articoli.

Screenshot di una riga vendita collegata alla tabella risorse.

L'esempio di codice seguente mostra un frammento della tabella Riga di vendita (tabella 37), dove il campo N. è collegato ad altre tabelle, a seconda del valore presente nel campo Tipo. Questa relazione tabella condizionale usa anche una serie di relazioni tabella filtrate.

Screenshot di esempio di un frammento di codice con una relazione tabella condizionale.

Uso della sintassi di accesso alle opzioni nelle formule

Per impostare elementi SourceTableViews, TableRelations e così via correlati con altre tabelle tramite ID tabella (o, meno frequentemente, specificando ID codeunit per l'esecuzione), gli sviluppatori dovevano specificare l'ID intero dell'oggetto di destinazione. Questa sintassi non era intuitiva né leggibile dall'utente e poteva essere soggetta a errori.

Il linguaggio AL ora supporta l'uso della sintassi di accesso alle opzioni (nomi) nelle proprietà delle formule. Questo elimina la necessità di valori ID interi codificati e migliora la leggibilità e la gestibilità del codice.

Quindi invece di:

al-languageCopy
SourceTableView = where("Source Type" = const(18));

Sarà possibile usare il nome dell'opzione:

al-languageCopy
SourceTableView = where("Source Type" = const(Database::Customer));