Visualizzare, modificare o creare un record in un'origine dati.

Descrizione

Se si aggiunge un controllo Display form (Visualizza modulo), l'utente può visualizzare tutti i campi di un record o solo i campi specificati. Se si aggiunge un controllo Edit form (Modifica modulo), l'utente può modificare tali campi, creare un record e salvare le modifiche apportate a un'origine dati.

Modulo di esempio e controlli di visualizzazione modulo

Se si aggiunge un controllo Raccolta, è possibile configurarlo in modo da visualizzare una tabella in un'origine dati e quindi configurare un modulo per visualizzare un record qualsiasi selezionato dall'utente nella raccolta. È inoltre possibile aggiungere uno o più controlli Pulsante che l'utente può selezionare per salvare le modifiche, annullarle e creare un record. L'uso congiunto di controlli consente di creare una soluzione completa.

Selezione di record

Per entrambi i tipi di modulo, impostare la relativa proprietà DataSource su una tabella di record e impostare la proprietà Item del modulo per visualizzare un record specifico in tale tabella. Ad esempio, è possibile impostare la proprietà Item di un modulo sulla proprietà SelectedItem di un controllo Raccolta. Quando l'utente seleziona un record nella raccolta, lo stesso record viene visualizzato nel modulo, se il modulo non mostra più campi. Se l'utente ritorna alla raccolta e seleziona un altro record, la proprietà SelectedItem della raccolta cambia. Questa modifica aggiorna la proprietà Item del modulo, che mostra il record appena selezionato.

Ogni controllo del modulo contiene uno o più controlli Scheda. Impostando la proprietà DataField di una scheda, si specifica il campo che mostra la scheda e altri dettagli.

Creare un record

Quando il controllo Edit form (Modifica modulo) si trova in modalità Modifica, l'utente può aggiornare il record specificato nella proprietà del modulo Item. Se controllata, la proprietà Mode restituisce Modifica.

Quando il controllo Edit form (Modifica modulo) si trova in modalità Nuovo, tuttavia, la proprietà Item viene ignorata. Il modulo non mostra un record esistente. Al contrario, i valori di ogni campo corrispondono ai valori predefiniti dell'origine dati con cui è stato configurato il modulo. La funzione NewForm imposta questa modalità per il modulo.

Ad esempio è possibile impostare la proprietà Text di un pulsante affinché mostri Nuovo e la relativa proprietà OnSelect su una formula che include la funzione NewForm. Se l'utente seleziona questo pulsante, il modulo attiva la modalità Nuovo in modo che l'utente possa creare un record a partire da valori noti.

Il modulo ritorna alla modalità Modifica se la funzione ResetForm o la funzione SubmitForm vengono eseguite correttamente.

  • È possibile impostare la proprietà Text di un pulsante affinché mostri Annulla e la relativa proprietà OnSelect su una formula che include la funzione NewForm. Se l'utente seleziona questo pulsante, vengono eliminate tutte le modifiche in corso e i valori nel modulo corrispondono, ancora una volta, ai valori predefiniti dell'origine dati.
  • È possibile impostare la proprietà Text di un pulsante affinché mostri Salva modifiche e la relativa proprietà OnSelect su una formula che include la funzione SubmitForm. Se l'utente seleziona il pulsante e l'origine dati viene aggiornata, i valori nel modulo vengono riportati ai valori predefiniti dell'origine dati.

Salvare le modifiche

Se si crea un pulsante Salva modifiche come descritto nella sezione precedente, l'utente può creare o aggiornare un record e quindi selezionare questo pulsante per salvare le modifiche all'origine dati. È possibile, invece, configurare un controllo Immagine o un altro controllo che esegua la stessa attività, così come si configura il controllo con la funzione SubmitForm. In ogni caso, le proprietà Error, ErrorKind, OnSuccess e OnFailure forniscono commenti sul risultato.

Quando viene eseguita la funzione SubmitForm, questa convalida prima i dati che l'utente desidera inviare. Se un campo obbligatorio non contiene un valore o un altro valore non è conforme a un vincolo, viene impostata la proprietà ErrorKind e viene eseguita la funzione OnFailure. È possibile configurare il pulsante Salva modifiche o un altro controllo in modo che l'utente possa selezionarlo solo se i dati sono validi, vale a dire, se la proprietà Valid del modulo è true. Si noti che l'utente deve non solo risolvere il problema, ma riselezionare anche il pulsante Salva modifiche o annullare le modifiche selezionando il pulsante Annulla, come descritto in precedenza, per reimpostare le proprietà Error e ErrorKind.

Se i dati superano la convalida, SubmitForm li invia all'origine dati, che può richiedere del tempo a seconda della latenza di rete.

  • Se l'invio ha esito positivo, la proprietà Error viene deselezionata, la proprietà ErrorKind viene impostata su ErrorKind.None e la formula OnSuccess viene eseguita. Se l'utente ha creato un record, ovvero, se il modulo era precedentemente in modalità Nuovo, il modulo passa alla modalità Modifica in modo che l'utente possa modificare il record appena creato o un altro record.
  • Se l'invio non riesce, la proprietà Error contiene un messaggio di errore descrittivo dell'origine dati che illustra il problema. La proprietà ErrorKind viene impostata in modo appropriato, a seconda del problema e viene eseguita la formula OnFailure.

Alcune origini dati sono in grado di rilevare quando due utenti tentano di aggiornare lo stesso record nello stesso momento. In questo caso, ErrorKind viene impostata su ErrorKind.Conflict, mentre la soluzione consiste nell'aggiornare l'origine dati con le altre modifiche dell'utente e riapplicare la modifica apportata dall'utente.

Suggerimento: se si inserisce un pulsante Annulla nel modulo in modo che l'utente possa annullare le modifiche in corso, aggiungere la funzione ResetForm alle proprietà OnSelect del pulsante anche se la proprietà contiene essa stessa la funzione Navigate per modificare le schermate. In caso contrario, il modulo manterrà le modifiche dell'utente.

Layout

Per impostazione predefinita, le schede vengono inserite in una singola colonna per le app dello smartphone e in tre colonne per le app dei tablet. È possibile specificare il numero di colonne di cui è dotato un modulo e se le schede devono essere bloccate su di esse quando si configura il modulo. Queste impostazioni non vengono esposte come proprietà perché sono usate solo per impostare le proprietà X, Y e Width delle schede.

Per altre informazioni, vedere Informazioni sul layout dei moduli dati.

Proprietà chiave

DataSource: origine dati contenente il record che l'utente mostrerà, modificherà o creerà.

  • Se non si imposta questa proprietà, l'utente non può visualizzare, modificare o creare un record e non vengono forniti metadati aggiuntivi o una convalida.

DefaultMode: modalità iniziale di un modulo. Vedere la descrizione di Mode sotto per i valori accettabili e i relativi significati.

DisplayMode: la modalità da usare per le schede di dati e i controlli all'interno del modulo.

Derivata dalla proprietà Mode e non può essere impostata in modo indipendente:

Mode DisplayMode Descrizione
FormMode.Edit DisplayMode.Edit Schede di dati e controlli sono modificabili, pronti per accettare le modifiche apportate a un record.
FormMode.New DisplayMode.Edit Schede di dati e controlli sono modificabili, pronti per accettare un nuovo record.
FormMode.View DisplayMode.View Schede di dati e controlli non sono modificabili ma sono ottimizzati per la visualizzazione.

Error: un semplice messaggio di errore da visualizzare per questo modulo in caso di errore nella funzione SubmitForm.

  • Questa proprietà si applica solo al controllo Edit form (Modifica modulo).
  • Viene modificata solo quando viene eseguita la funzione SubmitForm, EditForm o ResetForm.
  • Se non si verifica alcun errore, questa proprietà è vuota ed ErrorKind è impostato su ErrorKind.None.
  • Quando possibile, il messaggio di errore restituito sarà nella lingua dell'utente. Alcuni messaggi di errore provengono direttamente dall'origine dati e potrebbero non essere nella lingua dell'utente.

ErrorKind: se si verifica un errore durante l'esecuzione di SubmitForm, indica il tipo di errore che si è verificato.

  • Si applica solo a un controllo Edit form (Modifica modulo).
  • Questa proprietà ha la stessa enumerazione della funzione Errors. Il controllo Edit form (Modifica modulo) può restituire i valori seguenti:
ErrorKind Descrizione
ErrorKind.Conflict È stata apportata allo stesso record una modifica da un altro utente, causando un conflitto di modifiche. Eseguire la funzione Refresh per ricaricare il record e riprovare la modifica.
ErrorKind.None L'errore è di tipo sconosciuto.
ErrorKind.Sync L'origine dati ha segnalato un errore. Controllare la proprietà Error per altre informazioni.
ErrorKind.Validation È stato rilevato un problema di convalida generale.

Item: record in DataSource che l'utente mostrerà o modificherà.

LastSubmit: ultimo record inviato correttamente, inclusi eventuali campi generati dal server.

  • Questa proprietà si applica solo al controllo Edit form (Modifica modulo).
  • Se l'origine dati genera automaticamente o calcola i campi, ad esempio un campo ID con un numero univoco, la proprietà LastSubmit avrà questo nuovo valore in seguito alla corretta esecuzione di SubmitForm.
  • Il valore di questa proprietà è disponibile nella formula OnSuccess.

Mode: il controllo è in modalità Modifica o Nuovo.

Mode Descrizione
FormMode.Edit L'utente può modificare un record usando il modulo. I valori nelle schede del modulo sono precompilati con il record esistente e l'utente può modificarli. Se la funzione SubmitForm viene eseguita correttamente, viene modificato un record esistente.
FormMode.New L'utente può creare un record usando il modulo. I valori nei controlli del modulo sono precompilati con le impostazioni predefinite per il record dell'origine dati. Se la funzione SubmitForm viene eseguita correttamente, viene creato un record.
FormMode.View L'utente può visualizzare un record usando il modulo. I valori nei controlli del modulo sono precompilati con le impostazioni predefinite per il record dell'origine dati.

Il modulo passa dalla modalità Nuovo alla modalità Modifica quando si verifica una di queste modifiche: - Il modulo viene inviato correttamente e viene creato un record. Se la raccolta è impostata per spostare automaticamente la selezione su questo nuovo record, il modulo passerà alla modalità Modifica per il record creato in modo che l'utente possa apportare altre modifiche. - Viene eseguita la funzione EditForm. - Viene eseguita la funzione ResetForm. Ad esempio, l'utente può selezionare il pulsante Annulla che è stato configurato con questa funzione.

OnFailure: determina la risposta di un'app quando un'operazione sui dati non è stata completata.

  • Questa proprietà si applica solo al controllo Edit form (Modifica modulo).

OnReset: risposta dell'app quando viene reimpostato un controllo Edit form (Modifica modulo).

  • Questa proprietà si applica solo al controllo Edit form (Modifica modulo).

OnSuccess: determina la risposta di un'app quando un'operazione sui dati è stata completata.

  • Questa proprietà si applica solo al controllo Edit form (Modifica modulo).

Unsaved: true se il controllo Edit form (Modifica modulo) contiene modifiche dell'utente che non sono state salvate.

  • Questa proprietà si applica solo al controllo Edit form (Modifica modulo).
  • Usare questa proprietà per avvertire l'utente prima che perda le modifiche non salvate. Per impedire all'utente di selezionare un altro record in un controllo Raccolta prima di salvare le modifiche apportate al record corrente, impostare la proprietà Disabled della raccolta su Form.Unsaved e, analogamente, disattivare le operazioni di aggiornamento.

Updates: valori da scrivere nuovamente nell'origine dati per un record caricato in un controllo del modulo.

  • Questa proprietà si applica solo al controllo Edit form (Modifica modulo).
  • Usare questa proprietà per estrarre i valori dei campi delle schede all'interno del controllo. È quindi possibile usare questi valori per aggiornare manualmente l'origine dati richiamando la funzione Patch o servendosi di un altro metodo esposto da una connessione. Non è necessario usare questa proprietà se si usa la funzione SubmitForm.
  • Questa proprietà restituisce un record di valori. Ad esempio, se il controllo del modulo contiene i controlli delle schede per i campi Nome e Quantità e i valori della proprietà Update per tali schede restituiscono "Widget" e 10, rispettivamente, la proprietà Updates per il controllo del modulo restituirà { Nome: "Widget", Quantità: 10 }.

Valid: indica se un controllo Scheda o Edit form (Modifica modulo) contiene voci valide pronte per l'invio all'origine dati.

  • Questa proprietà si applica solo al controllo Edit form (Modifica modulo).
  • Una proprietà Valid del controllo Modulo aggrega le proprietà di Valid di tutti i controlli Scheda nel modulo. Una proprietà Valid del modulo è true solo se i dati in tutte le schede del modulo sono validi; in caso contrario, la proprietà Valid del modulo è false.
  • Per abilitare un pulsante per salvare le modifiche solo quando i dati nel modulo sono validi ma non sono ancora stati inviati, impostare il pulsante Abilitato su questa formula:

    SubmitButton.Enabled = IsBlank( Form.Error ) || Form.Valid

Proprietà aggiuntive

BorderColor: colore del bordo di un controllo.

BorderStyle: indica se il bordo di un controllo è Solid (Tinta unita), Dashed (Tratteggiato), Dotted (Punteggiato) o None (Nessuno).

BorderThickness: spessore del bordo di un controllo.

Fill: colore dello sfondo di un controllo.

Height: distanza tra i bordi superiore e inferiore del controllo.

Visible: indica se un controllo viene visualizzato o è nascosto.

Width: distanza tra i bordi sinistro e destro di un controllo.

X: distanza tra il bordo sinistro di un controllo e il bordo sinistro del contenitore padre, schermata se non c'è un contenitore padre.

X: distanza tra il bordo superiore di un controllo e il bordo superiore del contenitore padre, schermata se non c'è un contenitore padre.

Altre informazioni

Per una panoramica completa sul funzionamento dei moduli, vedere Informazioni sui moduli dati.