Accessでパラメータクエリを使う方法
Accessでクエリを作るとき、抽出条件に値をセットすると、その値を含むレコードだけを抽出することができます。
抽出条件に「[]」(半角角括弧)をセットするとクエリを実行したときにダイアログが表示され、値を入力することができます。このような使い方をパラメータクエリと言います。
括弧内に文字を入れるとそれが表示されます。例えば「[商品コードを入力]」とするとダイアログ内に「商品コードを入力」と表示されます。
ゆるくつくる stabuckyのブログ
Accessでクエリを作るとき、抽出条件に値をセットすると、その値を含むレコードだけを抽出することができます。
抽出条件に「[]」(半角角括弧)をセットするとクエリを実行したときにダイアログが表示され、値を入力することができます。このような使い方をパラメータクエリと言います。
括弧内に文字を入れるとそれが表示されます。例えば「[商品コードを入力]」とするとダイアログ内に「商品コードを入力」と表示されます。
Accessのクエリを使うと、通常はフィールド名がそのまま表示されますが、別名を付けることができます。「別名: フィールド名」のようにコロンを使います。
しかし、別名を元のテーブルのフィールド名と同じにしようとすると次のようなエラーが出ます。
クエリ定義のSELECTで指定されている別名'xxxxx'が循環参照を発生させています。
別の名前にすればいいのですが、どうしても同じにしたい場合はどうすればいいでしょうか。 (さらに…)
次のようなテーブル「height」があったとします。名前と身長のデータです。
Suzukiが二つ入力されています。データが同じならば問題はないかもしれませんが、身長が異なります。
SQLを使って、このようなデータの不一致を探す方法を紹介します。Access2007で確認しました。 (さらに…)
データベースから別のテータベースにクエリをコピーするには、コピー&ペーストでできますが、他人にクエリを渡すのは意外に面倒です。
データベースそのものをメールに添付して送信する方法がありますが、ここではSQLそのものを送信する方法を書きます。
SQLはクエリのデザインを文字列で表現したものですので、メールの本文に書いて送信することができます。
Accessで次のようなテーブル「member」があったとします。
id | name | roomid | weight | date |
---|---|---|---|---|
1 | Ito | 1 | 60 | 2013/1/1 |
2 | Abe | 1 | 62 | 2013/1/1 |
3 | Sato | 2 | 61 | 2013/1/1 |
4 | Eda | 2 | 68 | 2013/1/1 |
5 | Ito | 1 | 65 | 2013/7/1 |
ある学校の体重の管理簿だと考えてください。
roomidが教室番号です。weightが体重で、dateがそれを量った日です。
このテーブルを使って教室毎の人数を数えてください。
単純に数えるには次のようになります。 (さらに…)
次のようなテーブル「member」があったとします。
id | name | height |
---|---|---|
1 | Ochiai | 179 |
2 | Tanaka | 172 |
3 | Sato | 177 |
4 | Suzuki | 176 |
5 | Inoue | 175 |
6 | Ueno | 179 |
7 | Endo | 178 |
8 | Ito | 180 |
9 | Yamamoto | 175 |
10 | Aoki | 170 |
これに身長(height)の高い順に順位を付けます。Access2007で確認しました。
SQLは次の通りです。
「member AS member1」として同じテーブル「member1」を作ります。
「SELECT Count(member.id) FROM member WHERE member.height > member1.height」として、自分より身長の高い者の数を数えています。これに1を加えることで順位になります。自分より身長の高い者がいない場合は0で、これに1を加えて「1」、一人いる場合は1で、これに1を加えて「2」となります。
結果は次の通りです。
rank | name | height |
---|---|---|
1 | Ito | 180 |
2 | Ueno | 179 |
2 | Ochiai | 179 |
4 | Endo | 178 |
5 | Sato | 177 |
6 | Suzuki | 176 |
7 | Yamamoto | 175 |
7 | Inoue | 175 |
9 | Tanaka | 172 |
10 | Aoki | 170 |
同じ身長の場合、同じ順位になっています。
ExcelのワークシートにAccessのデータベースのテーブルを取り込む方法です。
単なるインポートではなく、リンクなので、更新すればデータベースと同じ状態になります。
Excel2007とAccess2007で確認しました。 (さらに…)
Accessで次のようなテーブルがあったとします。(テーブル名:tabletime)
開始時刻 | 終了時刻 |
---|---|
8:45:00 | 9:00:00 |
9:00:00 | 12:00:00 |
9:30:00 | 11:20:00 |
ここで次のような問題を考えます。
開始時刻から終了時刻までの経過時間を求めよ。ただし1時間単位とし1時間未満の端数は切り上げる。
Access2007ではテーブルやクエリをナビゲーションウィンドウで操作します。
Accessだけでなく、ExcelやWordなど、今までにないユーザーインターフェースです。
使い勝手が分からないので、初期設定のままにしておくと、テーブルやクエリが縦にずらっと並んで探しにくくなります。
そんなときは、ユーザー設定でグループ化することで探しやすくすることができます。
使用目的に関連するテーブルやクエリをグループ化します。 (さらに…)
Accessで半角の「?」(クエスチョンマーク)を検索するにはどうしたらよいでしょうか。
実はAccessで検索する場合に「?」を使うと「任意の1文字」を表す、いわゆるワイルドカードになってしまいます。そのため、普通に検索すると、すべての文字がヒットしてしまい、使えません。
「?」という文字そのものを検索するには、角括弧で挟み「[?]」を検索する文字列に指定します。
「*」(アスタリスク)もワイルドカードになってしまうので、「[*]」を使います。
Excelの場合もワイルドカードになってしまいますので、工夫が要りますが、方法が違います。
半角チルダを使い、「˜?」「˜*」とします。
Wordの場合は、ワイルドカードとして使用しなければ、通常通り検索できます。 (さらに…)