Access Tips
文字列に含まれる特定の文字をすべて取り除くという場合は、Replace関数を使えば一発で済みます。ただ、左端や右端(あるいはその両方)に並んでいるものだけを取り除くという場合はちょっと工夫が必要です。スペースを取り除こうとするのであればTrim,LTrim…
フォームでExcelの入力時メッセージのようにポップアップでヒントを表示する機能です。 方法は簡単です。コントロールのプロパティ「ヒントテキスト」に、表示させようとする文字列を書き込めばOKです。 フォームビューです。 正確には入力時でなくとも、オ…
ユニオンクエリ、といいますかSQLでUNIONを使った場合、内容が重複する行は1行にまとめられて出力されます。 ただしUNION ALLを使えば重複する行が何行あってもそのまま出力されます。 これらを併用した場合、つまりSQLにUNIONとUNION ALLが混在する場合に重…
SQL集合関数(Sum関数など)や定義域集合関数(DSum関数など)は大変便利ですが、Excelの関数と違って複数のフィールド(列)の間で値を集計することはできません。 Accessの場合、基本的にテーブルを分割して正規化したうえで運用することが前提となってい…
起動しているファイル(accdbファイルなど)が置かれているフォルダのパスやファイル名そのものを取得・表示する方法です。 具体的にはCurrentProjectオブジェクトの各プロパティを参照します。 考えられる例としてレポートでの表示を試してみます。 テキス…
コンボボックスで値を選択している時に複数の列の内容を表示させることができますが、選択後に表示させることができるのは1列だけ、つまり1つの値だけです。これだとコードしか表示できないため誰のことかわからないとか、氏名しか表示できないため同姓同名…
ListIndexプロパティにより、コンボボックス(及びリストボックス)の何行目が選択されたのかを知ることができます。 例として「駅コードcmb」という名前のコンボボックスとともにテキストボックスを置き、そのコントロールソースを以下のようにします。 =[…
コンボボックスでは選択中に複数の列の値を表示しておくことができますが、選択後に表示しておける値は基本的に1つだけです。これを解決し、選択後も複数の列の値を表示しておく方法についてです。 ただ、ちょっとタイトルに偽りありという感じの解決法です…
ある日付から満何年経過しているか(つまり満年齢)を求めるケースについては別途紹介しています(こちら)が、ここではさらに(年未満の)満経過月数、そして月未満の経過日数を求めてみることとします。 右のようなテーブルを例としてみます。入会日から今…
フォームのコンボボックスには「区切り文字」というプロパティがありますが、通常のコンボボックスで値を変更しても特に変化はありません。 例として「;」(セミコロン)にしてみますが… コンボボックスの見た目はいつも通りで、どこにもセミコロンは現れま…
添付ファイル型フィールドを作成した際に、テーブルのデータシートビューではそのフィールド名が表示されません。 試しに添付ファイル型のフィールドを2つ持つテーブルを作成してみましたが… データシートビューではなぜかフィールド名がクリップのマークと…
通常、クエリを作成した際には必要となる列を選択しますが… その内容にかかわらずすべての列が表示されてしまうことがあります;-o-) 原因は、クエリのプロパティ「全フィールド表示」の値が「はい」になっていることです。 これを「いいえ」にすると… 選択し…
クエリでDISTINCT句を用いることにより、値の重複を取り除くことができます。 また、これと名前が似たDISTINCTROW句というのもあります。「レコードの重複を除く」というはたらきをしますが意味がわかりにくく、あまり知られていません。実際あまり使いどこ…
クエリのプロパティに「固有の値」というものと「固有のレコード」というものがあります。 「固有の値」を「はい」にすると、抽出される値が重複する場合にその重複が除かれて出力されます。SELECT文にDISTINCT句を加えるのと同じことであり、実際に加わりま…
カッコとその中の文字列を取り除く方法です。 タグに置き換えてPlainText関数により削除するという方法をとります。もちろん鍵カッコなどにも応用可能ですが、半角クォーテーションのように前後とも同一の記号である場合には使えません。 例として右のような…
一定の「期間」を記録したレコードが多数ある場合に、その期間が重複していることをチェックし、抽出する方法についてです。 なお、ここでの重複とは「期間のうち一部でも重複している」という状態を指します。 期間の重複判定について 例1:各レコードに対し…
Accessには、ExcelのRANK関数のように直接的に順位を求める関数がありませんが、DCount関数を利用することで順位を求めることができます。 例として右のようなテーブルを用い、「点数」列の値が大きい順に順位をつけてみます。 クエリで求めてみましょう。 …
クエリで列を指定する場合はその名前で指定しますが、ソートの基準となる列を指定する場合には、列の番号を用いることもできます。 ただし全くの豆知識といえるもので、実用的におすすめできるようなものではありません。下記の内容からわかるように、抽出す…
システムにより自動的に作成されているオブジェクト(テーブル)があります。 通常の使い方をしている限り表示する必要は特にありませんが、この内容から有用な情報を得ることができますし、データマクロを用いてログを作成するという用途に用いることも出来…
システム開発者のメモ用のテーブルや、単独で開いても機能しないサブフォームのように、ユーザーに開かれたくないオブジェクトもあります。 こうしたオブジェクトをユーザーから見えないようにするため、隠しオブジェクトという機能があります。ここでは、隠…
ある数値を、指定した数値の整数倍に丸める、いわゆる床関数と天井関数についです。 EXCELではFLOOR関数とCEILING関数として用意されていますがAccessには用意されていませんので、ここではInt関数を使って実現します(ただしマイナスの数値については考慮し…
レポートにおけるエラー発生の回避策についてです。 まず、対象となるエラーを再現してみます。 右のようなテーブルがあります。 クエリで次のような列を設けます。つまり「点数」列の値に基づきサブクエリによって順位を算出します。 順位: (SELECT COUNT(*…
クエリで関数等を使ったときに、元の列と同じ列名で出力する方法についてです。 例として右のようなテーブルを用います。 「身長」列がテキスト型になっているのがわかります。 そこでクエリにおいて関数を使い、数値型に変換します。このとき、出力される列…
CSV形式のファイルをインポートしようとしたときに、メニューにCSVファイルの選択肢がなくて迷うことがあるかもしれません。結論としては「テキスト ファイル」を選べばいいだけですが、実際にちょっとやってみます。 まず、インポートしようとするCSVファイ…
正規化はデータベース作成の際の重要なプロセスですが、その正規化の説明において主キーが持ち出されることがあります。 具体的な例としては「第2正規形とは、主キーの一部により他の項目が特定されるような関係(部分関数従属)が存在しない状態」というよ…
結論としてはF11キーを押しましょう。 さて、通常Accessのウインドウの左端に表示されているウインドウ、つまりナビゲーションウインドウですが、その右端をドラッグして幅を変えることができます。 しかし、この幅を中途半端に狭めてしまうと… 右端の線が消…
AccessにはCount関数やDCount関数がありますので、値がいくつあるのかを数えるのは簡単ですが、重複する値があるとき値が何種類あるのかを数えるのは結構面倒です。また、グループごとに種類を数えたいという場合もあります。データベースソフトによっては「…
ふりがなから索引をつくるときに頭文字の「さ」と「ざ」、「た」と「だ」などが別々になって困るといったケースがあります。 そこで、文字列から濁点(゛)半濁点(゜)を取り除き、これらを同一のものとみなせるようにします。清音処理とも呼ばれます。 具…
フォームやレポートのコントロールを、テーブルやExcelのセルのようにビシッと揃えたいという時の操作です。 例として、大きさも位置もバラバラなテキストボックスが置かれている右のようなレポートを用います。 まずは幅を揃えます。幅は、最も広いものに合…
通常、選択クエリはデータを抽出するために用いますが、クエリにおいても一定の条件を満たせばデータの追加・更新を行うことは可能です。 また、複数のテーブルに基づくクエリを編集することも可能です(くどいですが一定の条件があります)。このとき、ある…