Modifica o crea uno o più record in un'origine dati oppure unisce record esterni a un'origine dati.

Usare la funzione Patch per modificare i record in situazioni complicate, ad esempio quando si eseguono aggiornamenti che non richiedono alcun intervento dell'utente o usano moduli che si estendono su più schermate.

In situazioni meno complicate, è possibile usare il controllo Modulo di modifica per aggiornare più facilmente i record in un'origine dati. Quando si aggiunge un controllo Modulo di modifica, si fornisce agli utenti un modulo da compilare e in cui salvare le modifiche a un'origine dati. Per altre informazioni, vedere Informazioni sui moduli dati.

Panoramica

Usare la funzione Patch per modificare uno o più record di un'origine dati. I valori modificati dei campi specifici non hanno alcun effetto sulle altre proprietà. Questa formula, ad esempio, modifica il numero di telefono per un cliente denominato Contoso:

Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: “1-212-555-1234” } )

Usare Patch con la funzione Defaults per creare record. Usare questo comportamento per compilare un singola schermata per la creazione e modifica di record. Questa formula, ad esempio, crea un record per un cliente denominato Contoso:

Patch( Customers, Defaults( Customer ), { Name: “Contoso” } )

Anche se non si usa un'origine dati, è possibile usare Patch per unire due o più record. Ad esempio, questa formula unisce due record in un unico record che identifica sia il numero di telefono sia la località per Contoso:

Patch( { Name: "Contoso", Phone: “1-212-555-1234” }, { Name: "Contoso", Location: “Midtown” } )

Descrizione

Modificare o creare un record in un'origine dati

Per usare questa funzione con un'origine dati, specificare l'origine dati e quindi specificare un record di base:

  • Per poter essere modificato, un record di base deve provenire da un'origine dati. Il record di base potrebbe provenire da una proprietà Items di una raccolta, potrebbe trovarsi in una variabile di contesto oppure provenire da altre origini. In tutti i casi, deve essere possibile rilevare l'origine dati del record di base. Ciò è importante in quanto il record includerà informazioni aggiuntive che consentiranno di ritrovarlo successivamente per eventuali modifiche.

  • Per creare un record, usare la funzione Defaults che crea un record di base con valori predefiniti.

Specificare quindi uno o più record di modifiche che contengono nuovi valori di proprietà che eseguono l'override dei valori di proprietà del record di base. I record di modifiche vengono elaborati seguendo l'ordine dall'inizio alla fine dell'elenco degli argomenti, in cui gli ultimi valori delle proprietà sovrascrivono i valori precedenti.

Il valore restituito di Patch è il record modificato o creato. Se è stato creato un record, il valore restituito può includere proprietà generate automaticamente dall'origine dati.

Quando si aggiorna un'origine dati, potrebbero verificarsi alcuni problemi. Usare la funzione Errors per identificare ed esaminare i problemi, come illustrato in Working with Data Sources (Uso delle origini dati).

Le funzioni correlate includono la funzione Update, che può essere usata per sostituire un intero record, e la funzione Collect, che può essere usata per creare un record. È possibile usare la funzione UpdateIf per modificare proprietà specifiche di più record in base a una condizione.

Modificare o creare un set di record in un'origine dati

La funzione Patch può essere usata anche per creare o modificare più record in una sola operazione.

È possibile infatti specificare una tabella di record di base nel secondo argomento, anziché indicare un record di base singolo. I record di modifiche vengono anche specificati in una tabella, con una corrispondenza uno a uno con i record di base. Il numero di record di ogni tabella di modifiche deve essere identico al numero di record della tabella di base.

Quando si usa la funzione Patch in questo modo, il valore restituito è anche una tabella in cui ogni record ha una corrispondenza uno a uno con i record di base e di modifiche.

Unire record esterni a un'origine dati

Specificare due o più record da unire. I record vengono elaborati seguendo l'ordine dall'inizio alla fine dell'elenco degli argomenti, in cui gli ultimi valori delle proprietà sovrascrivono i valori precedenti.

La funzione Patch restituisce il record unito e non modifica gli argomenti o i record in nessuna origine dati.

Sintassi

Modificare o creare un record in un'origine dati

Patch( OrigineDati, RecordBase, RecordModifiche1 [, RecordModifiche2, … ])

  • OrigineDati: obbligatorio. L'origine dati che contiene il record da modificare o che conterrà il record che si vuole creare.

  • RecordBase: obbligatorio. Il record da modificare o da creare. Se proviene da un'origine dati, il record viene trovato e modificato. Se viene usato il risultato della funzione Defaults, viene creato un record.

  • RecordModifiche: obbligatorio. Uno o più record che contengono le proprietà da modificare nel RecordBase. I record di modifiche vengono elaborati seguendo l'ordine dall'inizio alla fine dell'elenco degli argomenti, in cui gli ultimi valori delle proprietà sovrascrivono i valori precedenti.

Modificare o creare un set di record in un'origine dati

Patch( OrigineDati, TabellaRecordBase, TabellaRecordModifiche1 [, TabellaRecordModifiche2, … ] )

  • OrigineDati: obbligatorio. L'origine dati che contiene i record da modificare o che conterrà i record che si vuole creare.

  • TabellaRecordBase: obbligatorio. La tabella di record da modificare o da creare. Se proviene da un'origine dati, il record viene trovato e modificato. Se viene usato il risultato della funzione Defaults, viene creato un record.

  • TabelleRecordModifiche: obbligatorio. Una o più tabelle di record che contengono proprietà da modificare per ogni record della TabellaRecordBase. I record di modifiche vengono elaborati seguendo l'ordine dall'inizio alla fine dell'elenco degli argomenti, in cui gli ultimi valori delle proprietà sovrascrivono i valori precedenti.

Unire record

Patch( Record1, Record2 [, …] )

  • Record: obbligatorio. Almeno due record che si vuole unire. I record vengono elaborati seguendo l'ordine dall'inizio alla fine dell'elenco degli argomenti, in cui gli ultimi valori delle proprietà sovrascrivono i valori precedenti.

Esempi

Modificare o creare un record in un'origine dati

In questi esempi verrà modificato o creato un record in un'origine dati, denominata IceCream, che contiene i dati in questa tabella e che genera automaticamente i valori nella colonna ID:

Formula Descrizione Risultato
Patch( IceCream,
First( Filter( IceCream, Flavor = "Chocolate" ) ), { Quantity: 400 } )
Modifica un record nell'origine dati IceCream:
  • La colonna ID del record da modificare contiene il valore 1. Il record Chocolate ha tale ID.
  • Il valore nella colonna Quantity viene sostituito con il valore 400.
{ ID: 1, Flavor: "Chocolate", Quantity: 400 }

La voce Chocolate nell'origine dati IceCream è stata modificata.
Patch( IceCream, Defaults( IceCream ), { Flavor: "Strawberry" } ) Crea un record nell'origine dati IceCream:
  • La colonna ID contiene il valore 3, generato automaticamente dall'origine dati.
  • La colonna Quantity contiene 0, che corrisponde al valore predefinito per tale colonna nell'origine dati IceCream, come specificato dalla funzione Defaults.
  • La colonna Flavor contiene il valore Strawberry.
{ ID: 3, Flavor: "Strawberry", Quantity: 0 }

La voce Strawberry nell'origine dati IceCream è stata creata.

Dopo aver valutato le formule precedenti, l'origine dati restituisce i valori seguenti:

Unire record esterni a un'origine dati

Formula Descrizione Risultato
Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } ) Unisce due record esterni a un'origine dati:
  • I valori nella colonna Name di ogni record non corrispondono. Il risultato contiene il valore (Jim) nel record più vicino alla fine dell'elenco degli argomenti anziché il valore (James) nel record più vicino all'inizio.
  • Il primo record contiene una colonna (Score) che non esiste nel secondo record. Il risultato contiene tale colonna con il valore (90).
  • Il secondo record contiene una colonna (Passed) che non esiste nel primo record. Il risultato contiene tale colonna con il valore (true).
{ Name: "Jim", Score: 90, Passed: true }