![]() |
||
<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2000超入門部屋--Where文を書いてみる | ||
1 2 3 4 5 |
んでは、今までいじってたフォームは閉じて・・・。今度は、D何とかっていう関数をいろいろ使ってみましょうか。
別のフォームを作りましょう。今度は、レコードソースなしの無地フォームを一個作ってください。
で、テキストボックスを一個。てきとうに作ってください。
このテキストボックスの「コントロールソース」欄に、Dなんとか関数を作ってみましょう。
たとえば、「テーブルという名前のテーブルの中の金額というフィールドに入ってる値を全部集計して出しなさい」っていう場合は、
Dsum関数ですね。書き方は↑こうなります。
=DSum("金額","テーブル")
フォームビューに切り替えると、なんか出てきます???
「テーブルという名前のテーブルの中の金額というフィールドに入ってる値の中でもっとも高いのはいくらか出しなさい」という場合は、DMax関数がいいですね。
と、こう出てきます。おや、左側に数字が寄ってるな・・・。まあいいか。
で、もし、「テーブルという名前のテーブルの中の金額というフィールドに入ってる値を、分類が防具のものだけ集計したい」場合・・・。ふつうはね、クエリ使うべきなんですよ。集計クエリ(Σ)っていうのがあるので・・・。でも、もし、このフォームとは直接関係のないテーブルやクエリから、一時的に値をとってきたい・・・なんていう場合は、ちょっと便利かもしれないです。
=DSum("金額","テーブル","分類='防具'")
Dなんとか関数はたいてい、カッコの中身(”引数”という名で出ています)が、
(対象となるフィールド名を文字列扱いで入力,対象となるフィールドがあるテーブルかクエリ名を文字扱いで入力,なんか条件があるなら文字扱いで入力)
ってなってます。半角カンマで区切ります。
え?長ったらしい?文句言わないでくださいよー。わかりやすいでしょ?いいえ、わかりやすいです。
「文字列扱い」っていうのは、たいていの場合ダブルコーテーションで囲むことをさしますんで、
("金額","テーブル","分類='防具'")
こうなるわけです。
条件の部分は、今しがたやったフィルタのとこの式と書き方は同じです。(Me.Filterってのはいらないですよ、あたりまえですけど・・・)
商品番号が004の商品の金額を表示しなさい、ということなら・・・
=DLookUp("金額","テーブル","番号='004'")
こうかな。番号って、001、002ってなってますけど、テキスト型でしたよね。だから、シングルコーテーションで囲みます。
数字だからといって、数値型ではないのです。この辺もわかりにくいとこかもしれないですね。実際にどういう値が入ってるか、ということより、データ型がなんだ?ということが重要になってきます。
そしたら、「テキストボックスに入力した値を使って」というのもできますよ。
こんな風に、もう一個、テキスト2なんていう名前のテキストボックスを作って・・・。
式はこんな感じかな?さっきやったフィルタの式と、おんなじです。
=DLookUp("金額","テーブル","番号='" & [テキスト2] & "'")
テキスト2の方に番号を何か入れると、その番号をテーブルの中から探してきて、金額をテキスト0に返します。
何にも入れなかったり、該当する番号がテーブル内になかった場合は、空っぽ(Null)を返す仕組みになってます。Dなんとかっていう関数は。。。
これらの関数が、みなさんのデータベースでどんなふうに活用できるかは、わたしにはわかんないですけども・・・。繰り返しますが、MS-Accessの中で「検索」とか「絞込み」とかいう仕事は、基本的にクエリがまかないます。フィルタを使ったり、こうしたDなんとかっていう関数を活用する場合でも、基本的な考え方はクエリにあると思ってください。闇雲に式を書いても思ったような抽出はできないです。「どのテーブルの、どのフィールドの値を、どういう条件のもとに取ってきたいのか」ということを整頓して考えられるようになることが、データベース作りには欠かせません。クエリって、そういう技術を養うのにはとっても適した素材だと思いますよ。
クエリをイメージすることができると、おのずとWhere文の構文も浮かんでくるんじゃないかと思いますよ。
![]() |
![]() |
![]() |