dポイントプレゼントキャンペーン実施中!

Windows8、Access2013で環境依存文字を検索する時、正しく表示されません。
どのようにしたら解決できるでしょうか?

例えば、新規にテーブルを作り、次の3件を登録します。
「吉岡 雄一」、「吉岡 雄一」、「岡 雄一」

この時、1件目の「吉」は「土」+「口」の環境依存文字です。

そして、クエリで、1件目の「吉岡 雄一」を検索しようとしますと、1件目と3件目の「岡 雄一」が表示されます。

ちなみにこの時のクエリをSQLビューで確認すると次のようになっています。
SELECT テーブル1.名前
FROM テーブル1
WHERE (((テーブル1.名前)='吉岡 雄一'));

この「吉」はもちろん、「土」+「口」の環境依存文字です。


Accessの誤動作なのか、それとも何かアップデートをすれば解決する問題なのか、
あるいは、特殊な方法(Access VBAなど)があるのか、
はたまた、Microsoftの修正を待たないと解決しない問題なのかが分かりません。

正しく、1件目の「吉岡 雄一」だけを表示する方法がありましたらお教えください。

A 回答 (2件)

2013環境はないので2010で確認しましたが、質問者さんと同じ結果でした。


クエリでの比較は、テキストモードでの比較なのでそれのバグが原因だと思われます。
(テキストモードとは、大文字/小文字、半角/全角、ひらがな/カタカナ を区別しないというモード。)

吉 だけなら No.1の回答者さんの方法でいいと思いますが、他にも環境依存文字の存在する可能性があるなら、StrComp関数でバイナリモードで比較するといいかもしれません。その代わり、大文字/小文字、半角/全角、ひらがな/カタカナ を区別するという比較になりますが。

フィールド StrComp([フィールド名],[氏名を入力してください。],0)

抽出条件 0

これで2010環境では、パラメータに 土口 の吉田さんを入力すると1件のみの表示になりました。
    • good
    • 0
この回答へのお礼

お返事遅くなりました。

貴殿の教えていただいた通り、「strcomp」を使えばばっちりでした。

なるほど、こういう方法も可能なのですね。
(SQL文に使える関数をもっと勉強しなければいけませんね。>自分)

ありがとうございました。

解決したので締め切らせていただきます。

お礼日時:2013/08/05 18:51

Accessから遠ざかって13年。

もはや、簡単な関数さえうろ覚え。ですから、私の回答は、多分、参考にならないでしょう。

Q、1件目の「吉岡 雄一」を抽出する方法。
A、AscW関数を使う。

SELECT *
FROM テーブル名
WHERE (((AscW(Left([名前],1)))=-10174) AND ((名前)="吉岡 雄一"));

吉は、土口です。

PS、解明は不十分。

>環境依存文字を検索条件に含めた場合、
>環境依存文字含む文字列とそれを抜いた文字列に一致する複数のレコードを戻す。
>ならば、環境依存文字含むで積を取れば良い。

このように考えてAscW関数を使いましたが、あくまでも素人の予想。プロの回答をお待ち下さい。

この回答への補足

ありがとうございます。

そういう方法もある事が解りました。

ただ、今回は3件のテストデータだから教えていただいた方法で可能ですが、
本来、名前検索を行おうとしてるので、どんな名前が来るか、どんな名前で検索されるかわからないので、
そのたびに環境依存文字かどうかを1文字ずつチェックすることは、残念ながら運用上無理かと思います。

ただ、何かの時にはこういう方法もあるんだと覚えておきます。
ありがとうございました。

補足日時:2013/08/05 18:48
    • good
    • 0
この回答へのお礼

すみません、ここの質問は初めてだったので、使い方が分からず、補足になってしまいましたが、
本来、お礼という形でコメントすべきでした。

失礼しました。

お礼日時:2013/08/05 18:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!