Delphi ne me laissera pas insérer des rangées avec des colonnes manquantes, mais avec des déclencheurs et des générateurs pour ces champs

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

Question

Le problème est simple: j'ai des déclencheurs et des générateurs dans ma base de données Firebird 2.1.4 pour effectuer une augmentation de la colonne automatique de chaque insert.

L'architecture du système est la suivante:

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

Cependant, si j'essaie de poster des mises à jour dans mon TCLientDataSet avec une colonne manquante, Delphi se plaindre comme ceci:

Field 'XXX' must have a value

Si j'utilise une instruction d'insertion SQL avec ces champs manquants, la ligne est insérée et les déclencheurs et les générateurs fonctionnent comme prévu.

Comment puis-je faire de Delphi (dbx, datasnap et telle) comprendre ce que j'essaie de le faire (et de le permettre)?

Modifier

Fournir plus d'informations basées sur le commentaire de @ MJ2008: Ce TClientDaTaset est créé au moment de l'exécution, à l'aide de la méthode Clonecursor.Après avoir appelé le clonecursor, j'ai défini la propriété requise de ce champ sur FALSE.Cela n'aide pas avec ce problème.Exemple:

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

Il en résulte la même exception étant lancée.

Était-ce utile?

La solution

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

Autres conseils

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top