Funzione Errors

Si applica a: App canvas App basate su modello

Restituisce informazioni su errori relativi alle modifiche precedenti apportate a un'origine dati.

Panoramica

Possono verificarsi errori quando un record di un'origine dati viene modificato. Le cause di questi errori sono molteplici, ad esempio interruzione della rete, autorizzazioni non adeguate e conflitti di modifica.

Le funzioni che modificano i dati nelle origini dati, ad esempio Patch, Collect, Remove, RemoveIf, Update, UpdateIf e SubmitForm segnalano gli errori in due modi:

  • Ognuna di queste funzioni restituirà un valore di errore come risultato dell'operazione. Gli errori possono essere rilevati con IsError e sostituiti o eliminati con IfError e App.OnError come abitualmente. Per altre informazioni, vedi Gestione degli errori.
  • Dopo l'operazione, la funzione Errors restituirà anche gli errori delle operazioni precedenti. Ciò può essere utile per visualizzare il messaggio di errore su una schermata modulo senza la necessità di acquisire l'errore in una variabile di stato.

Puoi evitare alcuni errori prima che si verifichino usando le funzioni Validate e DataSourceInfo. Per altri suggerimenti su come usare le origini dati ed evitare errori, vedere Utilizzare le origini dati.

Descrizione

La funzione Errors restituisce una tabella di errori contenente le colonne seguenti:

  • Record. Il record dell'origine dati in cui si è verificato l'errore. Se l'errore si è verificato durante la creazione di un record, questa colonna includerà blank.
  • Colonna. La colonna che ha causato l'errore, se l'errore può essere attribuito a una singola colonna. In caso contrario, la colonna includerà blank.
  • Messaggio. Una descrizione dell'errore. Questa stringa di errore può essere visualizzata per l'utente finale. Si noti che questo messaggio può essere generato dall'origine dati, potrebbe essere molto lungo, contenere nomi di colonna non elaborati e quindi non avere alcun significato per l'utente.
  • Errore. Un codice di errore che può essere usato nelle formule per consentire di risolvere l'errore:
ErrorKind Descrizione
ErrorKind.Conflict È stata apportata allo stesso record un'altra modifica, causando un conflitto di modifiche. Usare la funzione Refresh per ricaricare il record e riprovare la modifica.
ErrorKind.ConstraintViolation Sono stati violati uno o più vincoli.
ErrorKind.CreatePermission È stato effettuato un tentativo di creazione di un record e l'utente corrente non ha l'autorizzazione di creare record.
ErrorKind.DeletePermission È stato effettuato un tentativo di eliminazione di un record e l'utente corrente non ha l'autorizzazione di eliminare record.
ErrorKind.EditPermission È stato effettuato un tentativo di modifica di un record e l'utente corrente non ha l'autorizzazione di modificare record.
ErrorKind.GeneratedValue È stato effettuato un tentativo di modificare una colonna generata automaticamente dall'origine dati.
ErrorKind.MissingRequired Il record non include il valore per una colonna obbligatoria.
ErrorKind.None Non sono stati rilevati errori.
ErrorKind.NotFound È stato effettuato un tentativo di modificare o eliminare un record, ma non è possibile trovare il record. Un altro utente potrebbe avere modificato il record.
ErrorKind.ReadOnlyValue È stato effettuato un tentativo di modificare una colonna di sola lettura.
ErrorKind.Sync È stato identificato un errore dall'origine dati. Controllare la colonna dei messaggi per altre informazioni.
ErrorKind.Unknown Si è verificato un errore di tipo sconosciuto.
ErrorKind.Validation È stato rilevato un problema di convalida generale, che non corrisponde a nessun tipo.

Gli errori possono essere restituiti per l'intera origine dati o solo per una riga selezionata, specificando l'argomento Record della funzione.

La funzione Patch o un'altra funzione di dati può restituire blank se, ad esempio, non è stato possibile creare un record. È possibile passare blank alla funzione Errors, la quale restituirà in questi casi informazioni appropriate sugli errori. Un uso successivo delle funzioni di dati sulla stessa origine dati eliminerà queste informazioni sull'errore.

Se non ci sono errori, la tabella restituita dalla funzione Errors sarà vuota e può essere verificata con la funzione IsEmpty.

Sintassi

Errors( DataSource [, Record ] )

  • DataSource: obbligatorio. L'origine dati per la quale si vuole restituire errori.
  • Record: facoltativo. Un record specifico per il quale si vuole restituire errori. Se non si specifica questo argomento, la funzione restituisce errori per l'intera origine dati.

Esempi

Procedura dettagliata

In questo esempio verrà usata un'origine dati denominata IceCream:

Gelato.

Tramite l'app, un utente carica il record Chocolate in un modulo di immissione dati e modifica il valore Quantity a 90. Il record da usare si trova nella variabile di contestoEditRecord:

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Cioccolato" ) } )

Per effettuare questa modifica nell'origine dati, usa la funzione Patch:

  • Patch( IceCream, EditRecord, Gallery.Updates )

dove Gallery.Updates restituisce { Quantity: 90 }, poiché è stata modificata solo la proprietà Quantity.

Si presupponga che immediatamente prima di chiamare la funzione Patch, un altro utente modifichi il valore Quantity di Chocolate a 80. Power Apps rileverà questo problema e non consentirà che si verifichi la modifica di conflitto. È possibile verificare questa situazione con la formula:

  • IsEmpty( Errors( IceCream, EditRecord ) )

che restituisce false, in quanto la funzione Errors ha restituito la tabella seguente:

Record Colonna Messaggio Errore
{ Flavor: "Chocolate", Quantity: 100 } blank "Un altro utente ha modificato il record che si sta tentando di modificare. Ricaricare il record e riprovare." ErrorKind.Conflict

È possibile includere un'etichetta nel modulo per visualizzare l'errore all'utente.

  • Per visualizzare l'errore, impostare la proprietà Text dell'etichetta con questa formula:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

È anche possibile aggiungere un pulsante Reload (ricarica) nel modulo, in modo che l'utente possa risolvere il conflitto direttamente.

  • Per visualizzare il pulsante solo quando si verifica il conflitto, impostare la proprietà Visible del pulsante con questa formula:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Per annullare le modifiche quando l'utente seleziona il pulsante, impostare la proprietà OnSelect con questa formula:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )