2016-10-24 4 views
5

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; 

は、データセットの永続フィールドがあり、クエリが開いたときに作成されるこれらの追加のフィールドをしたい場合は、まずacCombineAlwaysdataset.FieldOptions.AutoCreateModeを設定する必要があなたに

+3

*からではなく、クエリから返される列を指定しないのはなぜですか? –

+0

はい、これはこのエラーを回避する最良の方法ですが、私はサーバー上でクエリを書く唯一の人ではありません。もし誰かが忘れてしまったら、私はAVの代わりに役に立つメッセージを返したいと思います。 –

答えて

6

ありがとうございます。

クエリを開いた後、lcAutomatic in dataset.Fields.LifeCyclesで追加フィールドの存在を確認できます。

新しいフィールドに興味がある場合は、dataset.Fieldsを繰り返し、field.LifeCycle = lcAutomaticを確認してください。

こちらの設定を使用すると、おそらくそのチェックは必要ないようです。

+0

RESTクライアントは取得するフィールドが増えていることを知りませんので、私はチェックを続けます。 –

関連する問題