Delphiは行方不明の列を持つ行を挿入させませんが、それらのフィールドのトリガーとジェネレータを使用して

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

質問

問題は簡単です。私は私のFirebird 2.1.4データベースにトリガーとジェネレータがあり、各インサートで列の自動増分を行うためにデータベースがあります。

システムのアーキテクチャは次のとおりです。

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

しかし、私がいくつかの不足列を持つ私のTclientDataSetで更新を投稿しようとすると、Delphiはこのように不平を言うでしょう:

Field 'XXX' must have a value
.

これらのフィールドにSQL INSERTステートメントを使用していない場合は、行が挿入され、トリガーとジェネレータが期待どおりに機能します。

Delphi(dbx、datasnapなど)を作るにはどうすればいいのかを理解していますか?

編集

@ MJ2008のコメントに基づいてより多くの情報を提供する:このTcrientDataSetは、cloneCursorメソッドを使用して実行時に作成されています。CloneCursorを呼び出した後、このフィールドの必須プロパティをfalseに設定します。この問題には役立ちません。例:

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

この結果はスローされています。

役に立ちましたか?

解決

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

他のヒント

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.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top