- ベストアンサー
Access2002の重複クエリで大文字小文字を区別したい
教えてください。 Accessの重複クエリで大文字と小文字は別物として判断したいのですがやり方がわかりません。具体的には、英単語で地名と普通の名詞を区別したのです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
全てをVBAで処理し、重複のテーブルを作る方法は考えられるのですが、 「重複クエリ」を使う方法では、取り敢えずですが、次の方法は どうでしょうか。 ・モジュールの「新規作成」でコードウィンドに下記コードをコピーして 貼り付けます。 ・この関数は、文字列を小文字は"0"、大文字は"1"に変換します。 例えば、LSChk("AaBbCC") とすると"101011" が返ります。 ・テーブル作成クエリで必要フィールドの他に最後のフィールド欄に 例えば、重複チェックするフィールド名が[地名]とした場合ですが、 重複CHK:[地名] & LSChk([地名]) と設定します。 ・これで作成されたテーブルの[重複CHK]には、もし"Tokyo"であれば "Tokyo10000" となっていますので、あとは、通常の重複クエリで このフィールドの重複を調べます。 ・なお、全てVBA処理する場合は、宣言エリアに Option Compare Binary を 記述すると大、小文字を識別できます。 Option Compare Binary Option Explicit Function LSChk(St As String) As String Dim L As Integer Dim ChkOut As String For L = 1 To Len(St) If Mid(St, L, 1) = StrConv(Mid(St, L, 1), vbLowerCase) Then ChkOut = ChkOut & "0" Else ChkOut = ChkOut & "1" End If Next L LSChk = ChkOut End Function もっと簡単な方法があるかも知れませんが、取り敢えずの方法です。 これで如何でしょうか。
その他の回答 (1)
(1) 演算で文字コードを出力し、数値として評価する (2) StrComp関数を使用する のどちらかでしょうか? いずれにせよ、速度は犠牲になります。(特に、(1)で)
お礼
早速ありがとうございました。 StrComp関数を使いたいのですが、使い方がわからないのです。申し訳ないのですが、もしよかったら教えていただけませんでしょうか?
お礼
本当にありがとうございました。 早速やってみました。LSChk関数ははじめてでした。 思っていたとおりのことができました。感動です。 他のことにも応用できそうです。 お手数をおかけしてすみません。 Accessが好きになりそうです。