• 締切済み

クエリは何故「開く」と表現するのか

みなさんがトラブルで焦っている中、のんきな質問をいたします。 Accessで一番目にするのですが、クエリを「実行する」ではなく「開く」なのはどうしてなんでしょうね? フォームやレポートは「開く」で違和感ないですけど。 実行結果を開いているから?

みんなの回答

回答No.4

Accessについては詳しくないですが、標準SQLの考え方で。 複数行になりえる検索する場合、カーソルを使います。 カーソル宣言をしておき、次のようにSQLを実行します。 open(カーソルのオープン) ↓ fetch(カーソルを使って1行取り出し。対象行がなくなるまで繰り返し) ↓ close(カーソルをクローズ) 検索条件の値を、埋め込み(バインド)変数や ?パラメタ を使っている場合は、open前にそれらの変数に値を設定しておきます。 そして、openすることで、検索対象行が決まり、ソートも行えるようになります。 open済の状態で、それらの変数の値を変えても、再openしなければ意味がありません。 つまり、検索条件を確定させ、検索した結果を、一時的なファイルのように扱っています。 参考までに、SQL例を示しておきます。 (1)カーソル宣言 declare cursor cr1 for select c1,c2,c3 from t1 where c1 between ? and ? order by c1 (2)カーソルをオープン open cr1 using 1番目の?に入れる値 -- 今回は、得たいc1の最小値 ,2番目の?に入れる値 -- 今回は、得たいc1の最大値 (3)カーソルがら行を1行ずつ取り出す fetch cr1 into :xc1 ,:xc2 ,:xc3 (4)カーソルのクローズ close cr1

AndYouAndI
質問者

お礼

ご回答ありがとうございます。 カーソルのオープンのことは思い浮かびませんでした。 カーソルに関しても「オープン」だから機械的にそう記述しますが、 考えてみればこれもなんで「オープン」なんだろう(笑)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.3

ファイルを開く  クエリもファイルから(Table)から抽出や写像したもので一種の仮想的なファイルと同じようにみなすことができるので 「クエリを開く」という言い回しがあると思います。 私はSelectのクエリは「開く」といいますが削除クエリは「実行する」といいます。 削除クエリを開くは違和感があります。

AndYouAndI
質問者

お礼

ご回答ありがとうございます。 やはり「ビュー表」みたいなイメージですかね。 >削除クエリを開くは違和感があります おっしゃるとおりで、「開く」と「実行する」のどちらに統一出来るかと考えると、 日本人的感覚では「実行する」なんですよね・・。

回答No.2

> VBAでは大抵 ’DoCmd.OpenQuery "クエリその1"  > みたいな感じなんです。 OpenQuery は引数に選択クエリも実行クエリも指定できますので、確かに実行クエリを指定したときはちょっと違和感がありますね。 DoCmd.RunSQL とか、CurrentDB.Execute の引数には、実行クエリ(SQL)しか指定できません。 ADO の Execute メソッドだと、選択クエリでも、実行クエリでも使えますね。

AndYouAndI
質問者

お礼

再度のご回答ありがとうございます。 ほとんどの場面で既存のクエリを利用しますよね。 SQL文をそのまま実行させることはあまりないけど、DoCmd.RunSQLならなんとなくイメージが湧くのに対して、 >ちょっと違和感がありますね そうなのよ(笑) 列車等に乗るのに「take」を使うのと似たようなもどかしさがあるのです。 まあ「マシンに火を入れる」なんて表現も、関係ない人からしたら「???」かもしれませんが(笑)

回答No.1

フォーム、レポートもそれらを通じてデータを表示すると意味で、「開く」と表現しているのと同じで、選択クエリで、実行結果をデータシートビューで表示するのを、「開く」と表現しているのではないでしょうか。 クエリでもレコードセットを返さない実行クエリ(更新クエリ、追加クエリ、削除クエリ、テーブル作成クエリ)などは、開くという表現は使わずに「実行する」と表現していると思います。

AndYouAndI
質問者

お礼

ご回答ありがとうございます。 VBAでは大抵 ’DoCmd.OpenQuery "クエリその1"  みたいな感じなんです。 「『"クエリその1"クエリを開く』を実行せよ」ってなニュアンスかしら。

関連するQ&A