select *からXXXクエリが最終的に予想よりも多くのフィールドを取得できる場合は、そのクエリを作成して永続フィールドを定義してから新しいフィールドが追加されたかどうかを確認します。クエリが返されるかどうかを確認するときは、フィールドを作成して永続フィールドを定義したときよりも
通常、新しいフィールドが追加されても心配することなくクエリを開くことができます。新しいフィールドが永続フィールド内にない場合、フィールドは表示されません。しかし、Datasnap REST Serverでは、永続フィールドを作成したときよりも多くのフィールドを持つクエリからデータセットを返そうとすると、AVを取得します。
クイックチェックがあるかどうかを知りたいのであれば、AVの代わりにもっと役に立つエラーを返すことができます。以下のような
何か:
MyQuery.Open;
if MyQuery.FieldDefs.Count <> MyQuery.Fields.Count then begin
raise Exception.Create('The number of returned Fields doesn''t match the expected');
end;
は、データセットの永続フィールドがあり、クエリが開いたときに作成されるこれらの追加のフィールドをしたい場合は、まずacCombineAlways
にdataset.FieldOptions.AutoCreateMode
を設定する必要があなたに
*からではなく、クエリから返される列を指定しないのはなぜですか? –
はい、これはこのエラーを回避する最良の方法ですが、私はサーバー上でクエリを書く唯一の人ではありません。もし誰かが忘れてしまったら、私はAVの代わりに役に立つメッセージを返したいと思います。 –