Nota: questo problema/caratteristica mi interessa molto meno rispetto al topic della eliminazione da collection, di cui abbiamo appena parlato.
Comunque, la PK (e tutte le FK della applicazione) sono char fisse a 20, ed uso la DOC_ID per gestirle (anche se ho provato a disattivarla come test, ma il problema rimane)
Codice:
ho la necessità di editare un record, quindi opero in questo modo:
Nota: IIFattura è la PK
- Code: Select all
if (not(isNull(FattureCliente.IIFattura)))
{
CCFatture ccf = new()
ccf.IIFattura = FattureCliente.IIFattura
ccf.loadFromDB(1)
Fattura.FatturaMain.setDocument(ccf, false)
}
nel momento in cui (dal form Fattura) cerco di salvare il documento ccf (ccf.save_to_db),
tutto funziona.
Se invece di ricaricare il record dal db, lo prelevo direttamente dal pannello che lo mostra:
- Code: Select all
if (not(isNull(FattureCliente.IIFattura)))
{
CCFatture ccf = new()
ccf.copyFrom(FattureCliente.document)
Fattura.FatturaMain.setDocument(ccf, false)
}
nel momento in cui cerco di salvare ccf, ottengo l'errore mostrato sopra.
Digressione: concettualmente non so se questo possa essere un malfunzionamento, nel senso che il documento ccf, quando caricato dal db, forse è legato al proprio record in altri modi oltre la PK (modi interni ad INDE).
Viceversa, nel momento questo venga copiato tramite copyfrom, tale legame si spezza, e quindi quando noi chiediamo di salvare, il framework dovrebbe decidere in base a quale criterio, se debba essere un update piuttosto che un insert o anche un delete.
Comunque, che sia un malfunzionamento od una caratteristica voluta, credo che tutto filerebbe più liscio se (in base ai valori inserted e deleted) il framework aggiornasse/inserisse/cancellasse anche il ccf ottenuto dal secondo snippet.