解決済みの質問
こんばんは。
Access2003にて、テーブルに住所のデータがすでに何件か入っています。
(学習教材のサンプルデータです)
住所のフィールドから、ウイザードを使って「住所フリガナ」
のフィールドを作り、住所のフリガナを更新(自動保存)しても、
そこから新しく入力したデータには住所のフリガナがつくのですが、
すでに入力してあるデータには住所フリガナがつきません。
こうしたことは仕様なのでしょうか?
ただ、入力してあるデータを何かいじくろうとするとデータ(住所フリガナ)が
変化します。でも1個1個やるのは大変です。
先日からアクセスを勉強し始めたばかりで、なにぶん初歩的な質問で恐縮ですが
よろしくお願いいたします。
投稿日時 - 2010-01-29 21:37:51
Accessには残念ながらそのような機能
はありません。ExcelにはGetPhonetic
という便利な関数があります。Excelに
同様のデータがあるのならば簡単に
変換できるのですが。
かといってこのままでは何ですから、
もしPCにExcelがあるのならば、その
関数をAccessから呼び出して変換する
ことができます。少し面倒ですが
以下の方法を行ってみてください。
まず、テーブルの名前を住所とします。
フィールドは、ID、氏名、フリガナ
とします。次のコードを標準モジュール
に貼り付けそのまま保存してください。
Function cmdGetPhonetic(strName As String) As String
Dim exObj As Object
Set exObj = CreateObject("Excel.Application")
cmdGetPhonetic = exObj.GetPhonetic(strName)
End Function
次に、変換の確認をするためのクエリ
Q確認を作成します。以下のSQL文を
新規クエリのSQLビューに貼り付け、
Q確認として保存してください。
SELECT 住所.ID, 住所.氏名, cmdGetPhonetic([氏名]) AS フリガナ
FROM 住所;
次にテーブルのフリガナを更新する
クエリQフリガナ更新の作成です。
同様に以下のSQL文を新規のクエリの
SQLビューに貼り付けてください。
UPDATE 住所 SET 住所.フリガナ = cmdGetPhonetic([氏名]);
これで準備は終了です。まず元データの
住所テーブルを別名で保存しておいてく
ださい。次にQ確認のクエリを実行して
ください。すると表示は遅いですが、
順次フリガナが表示されていきます。
ただし、このクエリは表示だけでテ
ーブルが変更されるわけではありません。
次にQフリガナ更新のクエリを実行
するとQ確認で表示されたようにテ
ーブルのフリガナ変更されていきます。
このクエリはすべてのフリガナを
変更します。これでは空白の部分を
埋めることにはならないので以下の
SQL文で新規のクエリのSQLビューに
貼り付け、Qフリガナ部分更新として
保存してください。
UPDATE 住所 SET 住所.フリガナ = cmdGetPhonetic([氏名])
WHERE (((住所.フリガナ) Is Null));
これを実行するとフリガナが入って
いないレコードを更新します。
いかがでしょうか。少々説明が長く
なりましたが、何かあれば書き込んで
ください。
投稿日時 - 2010-01-30 06:18:37
お礼
すごく詳しい、説明をいただき本当に感謝しています。
「ふりがな」のフィールドの設定方法がテキストにのっていたので、
試しに作ったところ、結果の画面をみて率直に疑問に感じたので
質問させていただいた次第です。
そういえばAccessを使っているだけだった時、
一番最初のフィールドとかの設計をしっかりしておかないと、
後で仕様を変えるのは大変だ、と以前言われたことを思い出しました。
投稿日時 - 2010-01-31 02:03:22
0人が「このQ&Aが役に立った」と投票しています