選択クエリのデザイングリッド「フィールド」にReplace関数を入力
→「昇順」で並び替え
Replace関数
クエリ実行後のフィールド名:Replace([Replace対象となるフィールド名],Replace前の文字列,Replace後の文字列)
※Replace関数の基本構造は Replace(文字列,検索文字列,置換文字列)
Replace関数「:」の左に来るフィールド名は、クエリ実行後に設定されるフィールド名となる。
クエリ実行前の元フィールド名と同じにはできない(循環参照)ので注意。
元フィールド名としてテーブル設定済の名称は、Replace()内の「文字列」すなわち「Replace対象となるフィールド名」の位置へ[]で囲んで記入。
Replace前の文字列として、省略したい文字列を""で囲んで記入。
フリガナから一定の文字を省くための関数なので、Replace後の文字列は""のみとする。この場合の""のことは「長さ0の文字列」と表現される。
例1:
キャクメイ列のカブシキガイシャ文字列を除いた顧客フリガナを、「フリガナ」フィールドとして誕生させる
フリガナ:Replace([コキャクメイ],"カブシキガイシャ","")
例2:
「株式会社」だけでなく「有限会社」「合同会社」「協同組合」など複数名称を省略対象とする
フリガナ: Replace(Replace(Replace(Replace([コキャクメイ],"カブシキガイシャ",""),"ユウゲンガイシャ",""),"ゴウドウガイシャ",""),"キョウドウクミアイ","")
例2では、省略したい名称の数だけReplace()で包む動作を繰り返す。
データベース(SQL)の世界では、ひとつの命令でひとつの結果を確定させる1対1の引数(ひきすう)が基盤らしい。
同時に複数の処理を済ませたい場合は、関数の中にさらに関数を入れ込むカッコ多用の形態(入れ子というらしい)に馴染む必要がある。
【フォーム・レポート構成後にフィールド名の変更を行う場合】
本ケースではクエリ実行後、元フィールド名は、Replace関数「:」の左に来る名称へと上書きされる。
これまで用いてきた元フィールド名はクエリ実行後に消失する情報であり、まだテーブルのみの構成であればクエリ実行の直前に、元フィールド名を一時しのぎとしてのニックネームに変更するなど、柔軟な対応が可能。
Accessの選択クエリは、開くたびに最新のテーブル情報を参照し計算を行う仕組みなので、新たな顧客名がリストに追加される都度、常にReplace結果を表示してくれる。今回と同じ(関数を搭載する)作業を繰り返す必要はない。
ただし、この時点ですでにフォームやレポート、各プロシージャにフィールド名が紐づいている場合は影響する可能性がある。
通常はフリガナをフォームやレポートに適用する事例は少ないのではと思う。
今のところ、コンボボックス上の表示順を50音順に設定するための作業フィールドとしてフリガナを活用するぐらいしか思い当たらない。