過去ログ

                                Page      26
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼クエリで大文字小文字を区別  auxo 02/9/5(木) 13:12
   ┣Re:クエリで大文字小文字を区別  yu-ji 02/9/5(木) 13:49
   ┗Re:クエリで大文字小文字を区別  イケガミ 02/9/5(木) 15:00
      ┣Re:クエリで大文字小文字を区別  auxo 02/9/6(金) 15:51
      ┗試してみたのですが  auxo 02/9/12(木) 13:45
         ┗Re:試してみたのですが  イケガミ 02/9/12(木) 13:55
            ┗Re:試してみたのですが  auxo 02/9/12(木) 14:03
               ┗Re:試してみたのですが  イケガミ 02/9/12(木) 14:11
                  ┗Re:試してみたのですが  auxo 02/9/12(木) 14:20
                     ┗Re:試してみたのですが  イケガミ 02/9/12(木) 14:34
                        ┗Re:試してみたのですが  auxo 02/9/12(木) 14:54
                           ┗Re:Aテーブルに。。  イケガミ 02/9/12(木) 15:05
                              ┗Re:Aテーブルに。。  auxo 02/9/12(木) 15:12

 ───────────────────────────────────────
 ■題名 : クエリで大文字小文字を区別
 ■名前 : auxo
 ■日付 : 02/9/5(木) 13:12
 -------------------------------------------------------------------------
   クエリで大文字小文字を区別して抽出する方法はありますでしょうか?

2つのテーブルでリレーションを組み、一致するレコードを抽出したいのですが
うまく行きません。クエリでは無理なのでしょうか?
VBAで可能な場合はどのように組めばいいのでしょうか?

初心者の為、初歩的な質問とは思うのですが、ご教示いただけますよう
お願いいたします。

↓こんな感じにしたいのですが・・・
-------------
テーブルA
AAAA
Aaaa
bbbBB
BB
Baaa
-------------
テーブルB
aaAAA
AAAA
BB
=============
抽出結果
AAAA
BB

 ───────────────────────────────────────  ■題名 : Re:クエリで大文字小文字を区別  ■名前 : yu-ji  ■日付 : 02/9/5(木) 13:49  -------------------------------------------------------------------------
   ▼auxo さん:
>クエリで大文字小文字を区別して抽出する方法はありますでしょうか?
>
>2つのテーブルでリレーションを組み、一致するレコードを抽出したいのですが
>うまく行きません。クエリでは無理なのでしょうか?
>VBAで可能な場合はどのように組めばいいのでしょうか?

V3に同様の質問がありました。

http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=1780;id=Access

YU-TANG さんが書かれてる方法だと可能なのかな?

 ───────────────────────────────────────  ■題名 : Re:クエリで大文字小文字を区別  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/5(木) 15:00  -------------------------------------------------------------------------
   > クエリで大文字小文字を区別して抽出する方法はありますでしょうか?

○自作関数を作成します。

Function blnStrComp(strText1 As String, strText2 As String) As Boolean
'----------------------------------------------------------------------
'  文字列を比較し、同じであれば"True"を返す
'----------------------------------------------------------------------
  If StrComp(strText1, strText2, vbBinaryCompare) = 0 Then
    blnStrComp = True
  Else
    blnStrComp = False
  End If
End Function


○使用例

SELECT T_比較用A.Fld
FROM T_比較用A INNER JOIN T_比較用B ON T_比較用A.Fld = T_比較用B.Fld
WHERE (blnStrComp([T_比較用A].[Fld],[T_比較用B].[Fld])=True);


こんなのでいいのか分かりませんが、テストしたら
> 抽出結果
> AAAA
> BB
↑のようになりました。。

 ───────────────────────────────────────  ■題名 : Re:クエリで大文字小文字を区別  ■名前 : auxo  ■日付 : 02/9/6(金) 15:51  -------------------------------------------------------------------------
   ▼イケガミ さん:
>こんなのでいいのか分かりませんが、テストしたら
>> 抽出結果
>> AAAA
>> BB
>↑のようになりました。。

ありがとうございます!
早速試してみます。

 ───────────────────────────────────────  ■題名 : 試してみたのですが  ■名前 : auxo  ■日付 : 02/9/12(木) 13:45  -------------------------------------------------------------------------
   「このサブクエリでは1つのレコードしか返せません。」と表示されてしまいます。

何がいけないのでしょうか。。。
本当に初心者で申し訳ないですがよろしくお願いいたします。

 ───────────────────────────────────────  ■題名 : Re:試してみたのですが  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/12(木) 13:55  -------------------------------------------------------------------------
   > 何がいけないのでしょうか。。。
私が試したのは、↓だけですので、それ以外のことをしているのでしたら、
何をしたのかを教えてください。
> ○使用例
>
> SELECT T_比較用A.Fld
> FROM T_比較用A INNER JOIN T_比較用B ON T_比較用A.Fld = T_比較用B.Fld
> WHERE (blnStrComp([T_比較用A].[Fld],[T_比較用B].[Fld])=True);

> 「このサブクエリでは1つのレコードしか返せません。」と表示されてしまいます。
このエラーの場合でしたら、クエリの内容が分からないと、
答えることができないと思います。

 ───────────────────────────────────────  ■題名 : Re:試してみたのですが  ■名前 : auxo  ■日付 : 02/9/12(木) 14:03  -------------------------------------------------------------------------
   質問内容がつたなくてすみません。

テスト用にT_比較A、T_比較Bというテーブルをつくりました。
それぞれのテーブルにはFldという項目が1つだけある状態です。

クエリの抽出条件に下記SELECT〜文を入れて[実行]したところ
「このサブクエリでは・・・」のメッセージが表示されました。

(SELECT T_比較用A.Fld
FROM T_比較用A INNER JOIN T_比較用B ON T_比較用A.Fld = T_比較用B.Fld
WHERE (blnStrComp([T_比較用A].[Fld],[T_比較用B].[Fld])=True))

 ───────────────────────────────────────  ■題名 : Re:試してみたのですが  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/12(木) 14:11  -------------------------------------------------------------------------
   >(SELECT T_比較用A.Fld
>FROM T_比較用A INNER JOIN T_比較用B ON T_比較用A.Fld = T_比較用B.Fld
>WHERE (blnStrComp([T_比較用A].[Fld],[T_比較用B].[Fld])=True))

抽出条件に使うのではなく、新規フィールドに

フィールド |比較:blnstrcomp([T_比較用A].[Fld],[T_比較用B].[Fld])
抽出条件  |True

のようにしても同じでしょうか?

 ───────────────────────────────────────  ■題名 : Re:試してみたのですが  ■名前 : auxo  ■日付 : 02/9/12(木) 14:20  -------------------------------------------------------------------------
   たびたびすみません。

新規フィールドに以下を入力してみました。

>フィールド |比較:blnstrcomp([T_比較用A].[Fld],[T_比較用B].[Fld])
>抽出条件  |True

「比較」というフィールドに「-1」というデータが10件入った状態で表示されました。

ちなみにテストデータのT_比較Aには12件のデータが、
T_比較Bには5件のデータが入っており、
意図した抽出(Bのデータに完全一致するAのデータの抽出)が行われると
5件(Bと同様のデータ)のデータが抽出されるようにしたいのです。

 ───────────────────────────────────────  ■題名 : Re:試してみたのですが  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/12(木) 14:34  -------------------------------------------------------------------------
   >ちなみにテストデータのT_比較Aには12件のデータが、
>T_比較Bには5件のデータが入っており、
>意図した抽出(Bのデータに完全一致するAのデータの抽出)が行われると
>5件(Bと同様のデータ)のデータが抽出されるようにしたいのです。

最初の質問のときのように、具体例をあげていただくと、
こちらで検証ができますので、助かるのですが。。

 ───────────────────────────────────────  ■題名 : Re:試してみたのですが  ■名前 : auxo  ■日付 : 02/9/12(木) 14:54  -------------------------------------------------------------------------
   こちらで試しているデータは下記となります。

クエリのSQLビューにイケガミさんから教えていただいた構文を入力してみましたら
少し前進したように思います。
※ Accessの基本的なところだと思うのですが、わかっていなくて申し訳ありません。

比較BにNoフィールド(オートナンバーではありません)を追加しました。
その方が結果がわかりやすいかと思ったので。。。

■テストテーブル

T_比較Aテーブル
--------------
Fld
--------------
asdfg
ASDFG
Asdfg
AsdfG
efufw
efqwhfeoi
xdocujhd
asdfg
ASDFG
AsdfG
efufw
xdocujhd


T_比較Bテーブル
--------------
Fld    No
---------+----
asdfg   1
ASDFG   2
AsdfG   3
efufw   4
xdocujhd 5

■クエリ
SQLビューに下記を入力した状態で実行してみました。

SELECT T_比較用A.Fld, T_比較用B.[No]
FROM T_比較用A, T_比較用B
WHERE (((blnStrComp([T_比較用A].[Fld],[T_比較用B].[Fld]))=True);

■実行結果

結果は↓となりました。
--------------
Fld    No
---------+----
asdfg   1
ASDFG   2
AsdfG   3
efufw   4
xdocujhd 5
asdfg   1
ASDFG   2
AsdfG   3
efufw   4
xdocujhd 5


出来ているような気もするのですが、
同じデータが2回ずつ抽出されています。

よろしくお願いいたします。

 ───────────────────────────────────────  ■題名 : Re:Aテーブルに。。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/12(木) 15:05  -------------------------------------------------------------------------
   >出来ているような気もするのですが、
>同じデータが2回ずつ抽出されています。

Aテーブルの方に同じ値が2レコードずつあるからですね。
IDをAテーブルにつけて、確認すると分かり易いです。


>T_比較Aテーブル
>--------------
>Fld
>--------------
>asdfg
>ASDFG
>Asdfg
>AsdfG
>efufw
>efqwhfeoi
>xdocujhd
>asdfg
>ASDFG
>AsdfG
>efufw
>xdocujhd

 ───────────────────────────────────────  ■題名 : Re:Aテーブルに。。  ■名前 : auxo  ■日付 : 02/9/12(木) 15:12  -------------------------------------------------------------------------
   あ、ホントだ。。。
すみません。気づきませんでした。

別途データを作って実行してみましたら結果は以下のようになりました。

A_No    B_No    Fld
-----+-------+----------
1    1    asdfg
2    2    ASDFG
4    3    AsdfG
5    4    efufw
7    5    xdocujhd

何度もお手数をおかけしてすみませんでした。
本当にありがとうございます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 26