Delphi no me permitirá insertar filas con columnas faltantes, pero con desencadenantes y generadores para esos campos

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

Pregunta

El problema es simple: tengo desencadenantes y generadores en mi base de datos Firebird 2.1.4 para realizar un incremento automático de la columna en cada inserto.

La arquitectura del sistema es la siguiente:

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

Sin embargo, si intento publicar actualizaciones en mi tclientdataset con alguna columna faltante, Delphi se quejará así:

Field 'XXX' must have a value

Si uso una declaración de inserción SQL con esos campos que faltan, la fila se inserta y los disparadores y los generadores funcionan como se espera.

¿Cómo hago de Delphi (DBX, DataSnap y tales) entiendo lo que estoy tratando de hacer (y permitirlo)?

editar

Proporcionando más información basada en el comentario de @ mj2008: este tclientdataset se está creando en tiempo de ejecución, utilizando el método CLoneCursor.Después de llamar al CloneCursor, configuro la propiedad requerida de este campo a FALSE.No ayuda con este tema.Ejemplo:

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

Esto resulta en la misma excepción que se tira.

¿Fue útil?

Solución

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

Otros consejos

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top