Access Tips

チェックボックス等の「トリプルステート」プロパティ

フォーム上に置いたチェックボックス、トグルボタン、オプションボタンには「トリプルステート」というプロパティがあり、これを「はい」にすることで、Nullを含めた3種の値を保持できるようになります。 ここではチェックボックスを例として試してみます。…

リレーションシップの設定画面の内容を印刷する

リレーションシップウインドウの内容を印刷する方法についてです。 以前のバージョンよりわかりにくくなったように思いますし、忘れたらスクリーンショットでもいいかと思います;-o-) 「データベース ツール」タブを選択し「リレーションシップ」をクリック…

コンボボックス等の「値集合ソースの値のみの表示」プロパティ

コンボボックスとリストボックスに存在する「値集合ソースの値のみの表示」というプロパティについてです。このプロパティは、「複数の値の許可」プロパティが「はい」になっていないと機能しませんのでご注意ください。 以下ではテーブルでのコンボボックス…

コンボボックス等の「値リストの継承」プロパティ

コンボボックスやリストボックスをフォーム上に置いた場合、プロパティに「値リストの継承」という項目が現れます。この設定が効果を持つのは、コントロールが連結コントロールである場合ですが、以下でその効果を見てみます。 まずこのようなテーブルを作成…

チェックボックス等の値がNullのときの表示をメッシュ状にする

チェックボックスやオプションボタンの値がNullの時の表示がわかりにくい(オプションボタンだと0とNullの区別が全然つきません)ので、区別しやすくするための対策です。 以下ではチェックボックスを例に説明しますが、オプションボタンでも方法は同じです…

文字列から数字だけを抽出する

文字列から数字のみを取り出すというとVal関数が思いつきますが、数字以外の文字が含まれているとそれ以降は取り出してくれないなど、使い勝手はかなり限られたものです。一方、CInt関数やCLng関数を使えば\やカンマは取り除けますが漢字などが含まれている…

住所から番地以下を抽出する

文字列として記録されている住所から、番地以下を取り出します。また、番地より前の文字列についても併せて抽出します。つまり住所を番地より前と番地以下に分割します。 なお、番地は半角もしくは全角のアラビア数字(1,2,3…)で記録されているものとします…

テキストボックス内でEnterキーだけで改行できるようにする

Excelの改行はAlt+Enter、Accessの改行はCtrl+Enterと覚えていて、常にこれを実践されている方も多いと思いますが、フォームのテキストボックスではEnterキーのみで改行させることが可能です。 フォームのデザインビューです。 テキストボックスのプロパティ…

オプショングループ(フレーム)に選択肢を追加する

オプショングループを設置したときにはウイザードが起動し、グループ内に設置する選択肢を設定することができますが、オプショングループを設置した後に選択肢を追加したいという場合が考えられます。その場合の方法についてです。 なお、選択肢となるコント…

「指定した式の構文が正しくありません。」エラーが出る意外な例

エラーの一種として「指定した式の構文が正しくありません。」というものがあります。 たいていは演算子や引用符の書き間違いなんかが原因ですが、式そのものに問題がなくともこのエラーが出る場合があります。 右の画像がその例です。関数の記述に誤りはあ…

改行を禁止する

改行を入力させない方法についてです。 「入力規則」欄に次のように書き込みます。例では短いテキスト型ですが、長いテキスト型のリッチテキスト形式であっても有効です。 Not Like "*" & Chr(13) & "*" データシートビューです。値が改行を含む状態で確定し…

入力規則を追加・変更したときにNull値がエラー扱いされる

既存のテーブルに入力規則を加えたり変更したときに、特に抵触するような値がないはずなのにエラーがでたことはないでしょうか。 原因は恐らくNullが存在することです。 再現してみます。「住所」列の値がNullであるレコードが1つあります。 ここで入力規則…

日付を表す文字列を日付型に変換する

日付が日付型ではなくテキスト型のフィールドに記録されている場合があります。 それが例えば「2017/07/19」とか「昭和57年11月8日」といった形式であれば必要に応じて日付型のデータと同じように計算に用いることもできます。しかし、形式によってはそうも…

いろは順で並べ替える

ひらがな、カタカナの並べ替えは基本的にアイウエオ順となりますが、どうしてもイロハ順にしたい、それも1文字だけでなく文字列全体にわたってイロハ順を適用して並べ替えたいという場合の対応です。 例として右のようなテーブルを用います。対象となるのは…

ゼロ埋めされた数値形式の文字列の左側の0を取り除く

ゼロ埋め(ゼロパディング)された数値(のような文字列)の左側の0を削除し、普通の数字に戻す方法です。 例としてこのようなテーブルのデータを用いてやってみます。 クエリデザインです。 「00123」といった文字列ならVal関数が使えますが\やカンマ、全角…

パラメータクエリで値を入力しないときにすべてのレコードを返す

入力された値をそのまま抽出条件とするような単純なパラメータクエリの場合、何か値を入力しないと… レコードは1つも抽出されません。 さて、このクエリにおいて、何も入力しない場合にすべてのレコードを返す(つまり無条件とする)には、抽出条件をどのよ…

カレントレコードの背景色を変えて強調する

フォームの条件付き書式の条件には「フォーカスのあるフィールド」というのがありますが、これを適用しても書式が変更されるのはフォーカスのあるフィールドのみです。 そうではなく、カレントレコード(となっている詳細セクション)の全体の色を変えて強調…

帳票フォームに簡易な行番号(1,2,3…)を表示する

まずは結果から見てみます。 右のフォームはメインフォーム/サブフォーム形式になっていて、サブフォームは帳票フォームとなっています。 その左端に「行番号」という値が表示されています。 サブフォームの並べ替えを「商品コード」の降順に変更してみまし…

自テーブルをサブデータシートにして自動展開するとどうなるか

(※Tipsどころか時間の無駄ですのでご了承ください) さて、あるフォームのサブフォームとしてそのフォーム自身を設定することはできません。無限ループになってしまうからです。サブレポートについても同様です。 しかし、サブデータシートとしてそのテーブ…

選択中のコンボボックスのリストをコンボボックス本体より広げて表示する

コントロールに関するFAQの1つです。 正確に言いますとコンボボックス本体の幅、選択中のリストの各列の幅、選択中のリスト全体の幅を別個に設定する方法についてです。 さて、コンボボックスで値を選択しているときに表示されるリストの幅が狭くて表示され…

存在しない値リストに基づくコンボボックス等が表示される

コンボボックス及びリストボックスの値集合ソースについてはちょっと混乱しやすいのですが、その特に極端なケースについてです。 例を示してみます。テーブルでコンボボックスにより入力する列を設け(画像の例では「最終学歴」列)、「値集合タイプ」を「値…

コンボボックス等のスクロールバーを左側に表示する

何のことはない通常の設定ですが、コンボボックスやリストボックスのスクロールバーを左側に配置することができます。 設定のためのプロパティは「スクロールバーの配置」です。 デフォルト値は「システム」であり結果的にスクロールバーは右に表示されます…

相関係数を求める

相関係数は2種類のデータに線形関係、つまりY=aX+bのような関係がみられるかどうかを表す統計量です。ExcelですとCORREL関数があり簡単に求められますがAccessには同じ関数がないのでSQL集合関数で求めてみます。 例としてこのようなテーブルのXとYの相関係…

レポートでページ毎の合計を表示する

レポートにはグループごとの集計を行う機能があります。しかしページ番号に基づいてグループ化することはできず、基本的にページごとの集計を行うことができません。そこをなんとか通常の設定で実現してみます。 ただし若干面倒ですのでVBAでやった方がスマ…

パラメータクエリにIn演算子を用いて複数の条件で抽出するための設定

パラメータクエリでIn演算子を用いてカンマ区切りにより複数の値を指定し、いずれかに該当するレコードを抽出する方法についてです。 抽出の対象としてこのようなテーブルを用いるものとします。 失敗例 数値を抽出する例 文字列を抽出する例 Replace関数を…

エクスポート時にファイル形式と出力先を選択させる

このようなテーブルをファイルに出力する例を考えてみます。 オブジェクトをExcel等にエクスポートする場合、TransferSpreadsheetメソッド等がよく用いられますが、細かい設定の違いにこだわらなければOutputToメソッドを使うのも一つの方法です。 TransferS…

入力時にテキストボックスをズームさせる

フォーム上の小さなテキストボックスを編集時に拡大し、入力作業を容易にする方法です。 あまり使われるわけではないですが結構簡単ですので覚えておいて損はありません。 例としてこのようなフォームがあります。 「抱負」というテキストボックスがあります…

リボン上のボタンを大きく表示する(タッチモード)

WordやExcelと共通の機能ですが参考まで。 リボンにズラリと表示されているボタンが小さすぎて選択するのが難しい場合のために、ボタンを大きく表示する機能があります(この画像は未設定の状態)。タッチモードという名前からわかるようにタブレット機器で…

長さの指定の際に使える単位

デザインモードで長さを表す単位はcmとなっていますが、入力時にはcm以外にもいくつかの単位が使えます。 画像はレポートのデザインモードで、ここでは2つあるテキストボックスのうち上の方にあるものの幅を1in、つまり1インチと入力しようとしています。 入…

コンボボックスに値を直接入力するときに自動的に補完させない(自動拡張プロパティ)

コンボボックスへの入力は基本的にリストからの選択により行いますが、値を直接入力することも可能です。 このとき、入力中の値がリスト中と前方一致すると… そのリストの値が自動的に補われます(複数の値に前方一致する場合は、そのうち最初のもの)。 そ…