プログラムのユーザーが実行時に定義したクエリからフィールドのリストを取得する際に問題があります。ユーザーが SQL クエリをメモ コントロールに入力できるようにしてから、返されるフィールドを通過させ、出力の書式設定、列の値の合計などを実行させたいと考えています。そのため、列名を取得して、追加情報を入力する場所を確保する必要があります。
パラメーターがなくても問題ありませんが、クエリのフィルター パラメーターを定義させる必要もあります。したがって、パラメーターを null に設定したい場合は、パラメーターのデータ型が何であるかを知る必要があります。
Delphi 2006 を使用しています。DBExpress コンポーネントの TSQLConnection と TSQLQuery を使用して、Firebird 2.1 データベースに接続しています。以前は、次を使用して成功していました。
for i := 0 to Qry.Params.Count - 1 do Qry.Params[i].value := varNull;
日付パラメーターを使用しようとしたときに問題があることがわかりました。それまでのパラメータはすべて整数(レコード ID)だったのは偶然でした。varNull は値が 1 の列挙定数にすぎないことが判明したため、許容できる結果 (レコードなし) が正常に機能していました。
フィールドのリストだけが必要です。おそらく、SQL ステートメントの SELECT 句を解析する必要があります。Qry.Prepared を True に設定すると、フィールドのリストが表示されると思いましたが、そのような運はありませんでした。パラメータの値が必要です。
アイデアがあれば、ぜひお聞きしたいです。助けてくれてありがとう。