Delphi non mi permetterà di inserire righe con colonne mancanti, ma con trigger e generatori per quei campi

StackOverflow https://stackoverflow.com/questions/9021397

Domanda

Il problema è semplice: ho trigger e generatori nel mio database Firebird 2.1.4 per creare un incremento automatico della colonna su ciascun inserimento.

L'architettura del sistema è la seguente:

TSQLConnection > TSQLDataSet -> TDataSetProvider -> (DataSnap) -> TClientDataSet -> TDataSource
.

Tuttavia, se provo a pubblicare aggiornamenti nel mio tclientdataset con una colonna mancante, Delphi si lamenterà in questo modo:

Field 'XXX' must have a value
.

Se utilizzo un'istruzione Inserisci SQL con tali campi mancanti, la riga viene inserita e i trigger e i generatori funziona come previsto.

Come faccio a fare Delphi (DBX, DataSnap e tali) capire cosa sto cercando di fare (e permetterlo)?

Modifica

Fornire ulteriori informazioni basate su @ MJ2008 Commento: questo TclientDataset viene creato in fase di runtime, utilizzando il metodo clonecursor.Dopo aver chiamato il clonecursor, ho impostato la proprietà richiesta da questo campo su FALSE.Non aiuta con questo problema.Esempio:

myCds.CloneCursor(otherCds, True);
myCds.FieldByName('XXX').Required := False;
.

Ciò comporta la stessa eccezione lanciata.

È stato utile?

Soluzione

I had to set the TSQLDataset's Required property to False too. That solved the issue.

Altri suggerimenti

Just to complement: when you do a TClientDataset setting, the updates are in the end sent to the data access component, in this case TSQLDataset, so even if the TClientdataset doesn't require the field's value, if the data access component requires it the error is raised.

It'll be the same even if data come from a TADODataset, TIbDataset, or whatever.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top