DO: Funzione Set Collection dei pannelli
copia linkDescrizione del difetto
Impossibile salvare i dati in un pannello Document Oriented qualora sia stato utilizzato il metodo SetCollection con parametro Master=True.
Effetti del malfunzionamento
- Il sistema salvava solo ed esclusivamente il documento presente sulla riga attiva e non tutta la collection del pannello.
- Se si inseriva un documento e senza salvarlo lo si cancellava, in fase di salvataggio del pannello veniva generato un errore di PK non valorizzata.
Soluzioni
Era sufficiente implementare l'evento OnCommand del pannello e gestire i comandi di Update e Delete con il seguente codice:
// ************************************************************************
// Evento notificato dal pannello prima di eseguire un comando di pannello.
// ************************************************************************
event Prodotti.Prodotti.OnCommand(
int Command // E' un numero intero che rappresenta il comando ...
inout boolean Cancel // Può essere impostato a True per cancellare il c...
boolean UserOperation // E' un valore booleano che vale True se l'evento...
)
{
if Command = Update
{
Cancel := True
//
IDCollection c of Prodotto := Prodotti.Collection
c.SaveToDB(??, ??)
}
//
if Command = Delete
{
Cancel := True
//
IDCollection c of Prodotto := Prodotti.Collection
Prodotti.DeleteRow()
c.RemoveDeleted()
}
}
// Evento notificato dal pannello prima di eseguire un comando di pannello.
// ************************************************************************
event Prodotti.Prodotti.OnCommand(
int Command // E' un numero intero che rappresenta il comando ...
inout boolean Cancel // Può essere impostato a True per cancellare il c...
boolean UserOperation // E' un valore booleano che vale True se l'evento...
)
{
if Command = Update
{
Cancel := True
//
IDCollection c of Prodotto := Prodotti.Collection
c.SaveToDB(??, ??)
}
//
if Command = Delete
{
Cancel := True
//
IDCollection c of Prodotto := Prodotti.Collection
Prodotti.DeleteRow()
c.RemoveDeleted()
}
}
Funzionalità interessate
L'uso del metodo SetCollection della libreria pannello.
Note
- Attenzione: La correzione del difetto rende ora possibile effettuare le ricerche nei pannelli ove sia stata utilizzata la procedura SetCollection con il parametro Master=True. Tale possibilità non era presente nelle versioni precedenti di Instant Developer. Qualora non si desideri permettere la ricerca dei dati è possibile disabilitare il flag Può ricercare tramite la videata delle proprietà del pannello o utilizzare il metodo CanSelect.
Ultima modifica: 22/09/2021 / Validità: da 8.0.3560