重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!gooアプリ版

選択クエリー作成時に、実績データのテーブルと商品マスタのテーブルで
商品コードを結合させたのですが、うまく抽出できませんでした。
ACCESS2003使用です。

<実績データの商品コード>
 AAA ← 半角
<商品マスタの商品コード>
 AAA ← 半角
 AAA ← 全角

商品マスタに、半角と全角が存在していた場合、どちらとも一致していると
みなされダブって集計されてしまいました。
ACCESS97では半角と全角では不一致と判断していたのですが、2003
で同じクエリーを作ったところ、半角と全角でも一致とみなされているようです。
半角と全角では「不一致」とする方法を教えてください。

A 回答 (2件)

Access97はUnicodeへの過渡期だったと記憶しています。


なので、出来たのかも?
こんな標準モジュールを用意して

Function chr2asc(Optional trgStr As String) As String
Dim splitStr As String '文字の区切りの「文字は|」です
Dim i As Long
If trgStr = "" Then
trgStr = "00000000"
End If

splitStr = "|" '文字区切り記号をパイプラインに設定。苦し紛れかもです
'企業名にパイプラインを使っているのは無さそう?なので大丈夫かと・・

For i = 1 To Len(trgStr)
chr2asc = chr2asc & Format(Asc(Mid(trgStr, i, 1))) & splitStr
Next
chr2asc = Left(chr2asc, Len(chr2asc))
End Function

で、これをクエリのデザインビューで新たなフィールドを設定し、こんな風

フィールド 商品コード|商品コードASC:chr2asc([商品コード])
テーブル 商品マスタ |

としたようなクエリを作成して
この辺(それぞれの「商品コードASC」)で結合プロパティを設定されては如何ですか?
※お察しの通り、最大で一文字あたり、7文字+区切り文字1文字を要します
 なので最悪の場合には 255 / 8 ≒ 31 文字でエラーとなります
 
    • good
    • 0
この回答へのお礼

解答ありがとうございます。
試してみたいと思います。
また分からない事があれば質問出したいと思いますので、
その時はまたよろしくお願い致します。

お礼日時:2006/08/25 16:50

事前にもう1個ずつクエリを作成して


ASC関数を使った自作関数を使えば出来そうな気もしますが、
半角・全角を区別するとして
大文字・小文字は区別しなくとも良いのでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
大文字・小文字も不一致にしたいです。
ASC関数は使ったことがないので良く分からず、今調べている所です。
ACCESS97では不一致だったものが、2003では変わったのでしょうか???

※商品コードを結合させて、商品マスタテーブルから情報をプラスして、
 実績データテーブルの金額を集計させたいのです。
 今の状態ですと、全角と半角両方と結合してしまうので、
 金額が二重に集計されてしまって困っています。

お忙しい所すみません。宜しくお願いします。

お礼日時:2006/08/22 09:23

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