Accessのコントロールソースについてお探しですね。
広告
Accessのコントロールソースを使いこなそう!計算式の設定方法を分かりやすく解説
Accessでフォームやレポートを作っていると、必ず出てくる「コントロールソース」という項目。
Excelならセルに直接数式を入れるだけなのに、Accessだと「何を設定すればいいの?」「どうやって計算結果を表示させるの?」と迷ってしまう人も多いはず。
この記事では、コントロールソースの基本的な役割から、テキストボックスに計算式や関数を設定して値を表示させる具体的な方法、さらにエラーが出たときの対処法まで、初心者の方にも分かりやすく説明していきます。
コントロールソースって何?基本の役割を知っておこう
Accessの「コントロールソース」とは、フォームやレポートに置いたテキストボックスなどに、「どんなデータを表示するか」を指定する設定項目のことです。
Accessでは、データの本体はすべてテーブルに保存されていて、フォームやレポートはそのデータを見たり入力したりするための「窓」のような役割をしています。
この窓に対して、「テーブルのどの項目(フィールド)を表示するか」を結びつけるのが、コントロールソースの一番基本的な使い方です。
例えば、「顧客名」というテキストボックスのコントロールソースに、テーブルの「顧客名」フィールドを設定すると、そのテキストボックスには実際の顧客の名前が表示されます。
そして、画面で編集した内容は、そのままテーブルに保存される仕組みになっています。
でも、コントロールソースにはテーブルのフィールド名だけじゃなく、計算式や関数を直接設定することもできるんです。
これを使えば、テーブルには保存されていない「消費税込みの金額」や「複数のフィールドを組み合わせた文章」などを、フォーム上でリアルタイムに作り出して表示できます。
こうやって計算式を設定して、特定のフィールドと結びついていないテキストボックスのことを「非連結コントロール」と呼びます。
Accessでは、データを保存するためのテキストボックスと、計算結果を表示するだけのテキストボックスをきちんと分けて管理することで、データベースとしてしっかりした構造を保ちながら、柔軟な画面表示を実現しているんですね。
テキストボックスに計算式を入れてみよう
テキストボックスに計算式を設定して計算結果を表示させるには、まずフォームやレポートを「デザインビュー」で開きます。
設定したいテキストボックスを選んでプロパティシートを表示し、「データ」タブにある「コントロールソース」の欄に、直接計算式を入力していきます。
ここで大事なポイントが一つ。
Accessのコントロールソースで計算式を使うときは、Excelと同じように、**必ず先頭に半角の「=」(イコール)をつける**必要があります。
このイコールがないと、入力した計算式が単なる文字列として扱われてしまい、計算してくれません。
これは最初に覚えておきたい基本ルールです。
計算式の中では、足し算や掛け算といった普通の算数記号に加えて、文字をつなげる「&」(アンパサンド)もよく使います。
そして、Accessの重要なルールとして、**他のテキストボックスやフィールドの値を参照するときは、その名前を半角の角カッコ「[ ]」で囲む**必要があります。
実際によく使う計算式の例を見てみましょう。
・単価と数量を掛けて合計金額を表示する:
`=[単価]*[数量]`
・商品の税込み価格(8%)を計算する:
`=[価格]*1.08`
・顧客名の後ろに「様」をつけて表示する:
`=[顧客名] & “様”`
こんな感じで、基本的な記号とフィールド名を組み合わせるだけで、テーブルに余計な計算用フィールドを作らなくても、必要な情報を画面上に表示できます。
計算式を入力したら、必ずフォームビューか印刷プレビューに切り替えて、ちゃんと意図した通りの結果が表示されているか確認する癖をつけましょう。
関数を使ってもっと便利に
簡単な計算や文字のつなぎ合わせだけじゃなく、Accessに最初から用意されている「関数」をコントロールソースに組み込むと、もっと高度で実用的な表示ができるようになります。
関数を使うときも基本は同じで、コントロールソースの先頭に「=」をつけて、その後に関数名と必要な情報(引数)を指定します。
プロパティシートの入力欄に直接キーボードで打ち込むこともできますが、複雑な関数を書くときや引数の順番が分からないときは、入力欄の右端にある「…」ボタンをクリックして「式ビルダー」を使うのがおすすめです。
式ビルダーを使えば、使える関数の書き方やフォーム上のコントロール名を一覧から選びながら入力できるので、間違いをぐっと減らせます。
実際の開発でよく使われる便利な関数の例を紹介します。
・今の日付と時刻を自動で表示する:
`=Now()`
・数値を時間の形式(時間:分)に変換して表示する:
`=Format([処理時間]/24, “hh:nn”)`
・値が空っぽ(Null)のときは0を表示し、値があればそのまま表示する:
`=IIf(IsNull([金額]), 0, [金額])`
特にFormat関数やIIf(アイアイエフ)関数は、ユーザーにとって見やすい画面を作る上で欠かせない機能です。
例えば、ユーザーが入力した普通の数値を時刻データとして見せたいときや、未入力の項目があっても他の計算が止まらないようにしたいときなど、関数を使うことでAccessの便利さはぐんと上がります。
最初は難しく感じるかもしれませんが、よく使う関数から少しずつ試していけば、できることの幅は確実に広がっていきますよ。
よくあるエラーと対処法
コントロールソースに計算式や関数を設定して、デザインビューからフォームビューに切り替えたとき、テキストボックスに「#エラー」や「#Name?」といった見慣れないメッセージが表示されることがあります。
これは、設定した数式の内容や参照しているデータに何か問題があるサインです。
**「#Name?」というエラー**は、コントロールソースに入力したフィールド名や関数名が間違っているか、そのフォームのレコードソース(データの参照元)に存在しない名前を指定しているときに出ます。
角カッコの閉じ忘れがないか、全角と半角を間違えていないか、式全体とプロパティの設定をもう一度よく見直してみましょう。
一方、**「#エラー」と表示される場合**は、名前は正しく認識されているけど、計算そのものができない状態です。
よくある原因は、割り算で分母がゼロになっている場合や、計算式で使っているフィールドに数値以外の文字やNull(空の値)が入っていて、計算ができない場合などです。
こういう状況を防ぐには、Nz関数を使ってNull値をゼロに変換してから計算するなど、あらかじめ対策を入れておくのが大切です。
また、計算結果を表示するテキストボックス自身の「名前」プロパティが、計算式の中で参照しているフィールド名と全く同じだと「循環参照」が起きてエラーになることがあります。
コントロール名には「txt金額合計」のように分かりやすい目印(プレフィックス)をつけて区別するようにしましょう。
広告
