2つの名簿テーブルを比較してどちらのテーブルにも含まれている個人を抽出したいと考えております。

テーブル名とフィールドは以下のとおりです。

====================
テーブル名「名簿A」

氏名
電話番号
住所
メールアドレス
====================
テーブル名「名簿B」



電話番号
住所
メールアドレス
====================

たとえば、この2つの名簿をメールアドレスで一致したものを抽出する場合は選択クエリのデザインビューで「名簿A」のフィールドを読み込ませ、
メールアドレスフィールドの抽出条件として

Like [名簿B].[メールアドレス]

を入れれば抽出ができたのですが、メールアドレスは、名簿ごとに記入されていたりしなかったりするので、名前での一致を行いたいと思っています。

ここで問題なのが、名簿Aは「氏名」で入力されているのに対し、名簿Bでは「姓」と「名」が別フィールドになっております。

そこで自分なりにやってみたのが、選択クエリのデザインビューで「氏名」のフィールドの抽出条件として

Like (*[名簿B].[姓]*)

を設定するものでした。
これがうまくいけば最終的には

Like (*[名簿B].[姓]*) And Like (*[名簿B].[名]*)

という風にして、名簿Aの「氏名」フィールドに名簿Bの「姓」も「名」も入っているものを抽出できるかな?と考えたのですが、上記のように入力すると、自動的に

Like ("*[名簿B].[姓]*")

となってしまい、何も抽出されなくなってしまいました。

このような方法では希望する抽出は行えないのでしょうか?

お分かりのかた、よろしくお願いいたします。

A 回答 (2件)

> 名簿Aの「氏名」欄には姓と名の間にスペースが入っているものがあり



[名簿B].[姓] & [名簿B].[名]を使った時のクエリで考えてみます。

クエリをSQLビューで表示した時、抽出条件のところは

[名簿A].[名前] Like [名簿B].[姓] & [名簿B].[名]
とか
[名簿A].[名前] = [名簿B].[姓] & [名簿B].[名]

になっていると思います。

[名簿A].[名前]の部分に細工して、Replace([名簿A].[名前]," ","")に書き換えます。
(Replace で空白を削除してあげます)

それをもとに
Replace([名簿A].[名前]," ","") = [名簿B].[姓] & [名簿B].[名]
としてみるとどうなりますか。


※バージョンによっては、クエリ内で Replace が使えないものがあったかと思います。
その時には、補足なりに記述してください。
(対処方法はあります)
    • good
    • 0
この回答へのお礼

できました!

とてもわかりやすい解説ありがとうございました。
クエリをSQLビューで書き換えるというのは初めてやりました。

大変勉強になりました。
最後の解決までお付き合いいただきましてありがとうございました!!

お礼日時:2009/05/13 16:38

> Like ("*[名簿B].[姓]*")



Like "*" & [名簿B].[姓] & "*"

でどうなりますか。

[名簿B].[姓] & [名簿B].[名] でもよいと思います。

※同姓同名には適用できないかと。
    • good
    • 0
この回答へのお礼

ありがとうございます!
なるほど、&を使えばいいのですね。

Like "*" & [名簿B].[姓] & "*"
こちらの方法だと、表示はされるようになったのですが、特に一致しているものだけではなく、名簿Aの内容が全て表示されてしまいました。

[名簿B].[姓] & [名簿B].[名]
こちらの方法ではうまく抽出されました!
ただ、名簿Aの「氏名」欄には姓と名の間にスペースが入っているものがあり、それはやはり抽出されませんでした。

[名簿B].[姓] & "*" & [名簿B].[名]
Like([名簿B].[姓] & "*" & [名簿B].[名])

などを試してみましたが、うまくいきませんでした。

やはり難しい作業なのでしょうか…

お礼日時:2009/05/13 12:15

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセスのフィールドに値をペースト(VB・Access)

Visual Basic 2005 Express Editionで、
フォーム上のボタンをクリックすると変数内の文字列を
Accessフォームの特定のフィールドにセットするというVBを作りたいのですが、
AccessのVBは未経験であるため難儀しております。
Accessのフィールドに値を入れるところがわかりません。

AccessVB初心者の同僚は以下のように教えてくれましたがまったく動きません。

Dim copy_text
Dim myAccess
copy_text = "○○株式会社"
set myAccess = CreateObject("Access.Application")
myAccess.Forms("フォーム1").Controls("会社名").text = copy_text

本来"○○株式会社"は変数ではなくクリップボード内に入っています。
なのでクリップボード内の値をアクセスのフィールドにペーストするのでもかまいません。

ネットはいろいろ調べていますが、未経験の自分は基礎編・入門編であっても理解できません。
未経験の自分が作ることに問題がありますが、他にやる人がいないので仕方がありません。
どなたか助けて下さい(涙)

Visual Basic 2005 Express Editionで、
フォーム上のボタンをクリックすると変数内の文字列を
Accessフォームの特定のフィールドにセットするというVBを作りたいのですが、
AccessのVBは未経験であるため難儀しております。
Accessのフィールドに値を入れるところがわかりません。

AccessVB初心者の同僚は以下のように教えてくれましたがまったく動きません。

Dim copy_text
Dim myAccess
copy_text = "○○株式会社"
set myAccess = CreateObject("Access.Application")
myAccess.Forms("フォーム1"...続きを読む

Aベストアンサー

探したらこんな方法ありました・・・

すでに開いているなら
Dim myAccess
copy_text = "○○株式会社"
Set myAccess = GetObject(, "Access.Application")
myAccess.Forms("フォーム1").Controls("会社名").Text = copy_text
Set myAccess = Nothing
とかではどうでしょう?
エラーチェック必要ですが。

開くなら
http://www.ken3.org/vba/backno/vba015.html
などがありました。

QOutlookで[全員に返信]をクリックすると、[宛先]と[CC]をす

Outlookで[全員に返信]をクリックすると、[宛先]と[CC]をすべて[CC]に入るように設定。

今までOutlookずっと愛用していますが、現在は最新版のOutlook2010を使用してます。

[全員に返信]をクリックすると、元メールの[送信元]と[宛先]が新メールの[宛先]に変わり、[CC]はそのまま引継ぎますが、元メールの[送信元]と[宛先]と[CC]を全部[CC]に入るように設定などありますか。

または、[送信元]だけを[宛先]にして、ほかはすべて[CC]に入ってもいいですが。

Aベストアンサー

>[全員に返信]をクリックすると、元メールの[送信元]と[宛先]が新メールの[宛先]に変わり、[CC]はそのまま引継ぎます

これって、Microsoftのメールソフトの仕様ですかね。
自分が受信したメールの宛先やCCであっても、Outlook Expressもそうなるようです。

私のメインのThunderbirdでは、自分が複数の宛先やCCに含まれている場合でも、それらの受信メールから「全員に返信」で、受信メールの「送信元」のみが、返信メールの宛先に入り、他の「宛先」や「CC」はすべてCCに表示されます。

>[送信元]だけを[宛先]にして、ほかはすべて[CC]に入ってもいいですが。

この部分での方法は、返信メールの宛先欄で、送信元以外をドラッグして選択して右クリックから切り取り、CC欄に右クリックから貼り付けするしかないと思います。

QAccessがインストールされていなくても、アクセスのアプリケーション

Accessがインストールされていなくても、アクセスのアプリケーションが動かせると聞きましたが、本当でしょうか?
お客様から、「AccessがインストールされていないPCで、別PCで作成したAccessのアプリケーション
を動かしているものがある」と聞きました。
私はそんな手段を使ったことがないのでよく分からないのですが、もし本当でしたら、その方法等教えて下さい。

Aベストアンサー

> AccessがインストールされていないPC

正確には、「製品版のAccessがインストールされていない」で、
「Accessのランタイム版がインストールされている」ということ
だと思います。

大雑把にいうと、製品版は新規MDBファイルの作成や、既存
MDBファイルの編集が行えるのに対し、ランタイム版は既存の
MDBファイルの参照とデータ編集しか行えない、という違いが
あります。

ですので、もしも「新規ファイルの作成/既存ファイルの編集」が
目的だとすると、残念ながらランタイム版では目的に合いません。
(Accessで作成したデータベースの配布などに使用します)

なお、Access2003では別途購入の必要があったようですが、
Access2007・2010では無償提供となっています。

googleでの検索結果を参考までに載せておきます:
http://www.google.co.jp/search?hl=ja&q=access+%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0+%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89&aq=f&aqi=g2g-cr3&aql=&oq=&gs_rfai=

> AccessがインストールされていないPC

正確には、「製品版のAccessがインストールされていない」で、
「Accessのランタイム版がインストールされている」ということ
だと思います。

大雑把にいうと、製品版は新規MDBファイルの作成や、既存
MDBファイルの編集が行えるのに対し、ランタイム版は既存の
MDBファイルの参照とデータ編集しか行えない、という違いが
あります。

ですので、もしも「新規ファイルの作成/既存ファイルの編集」が
目的だとすると、残念ながらランタイム版では目的に合いません。
(Acc...続きを読む

Q[ctrl] + [V] で書式無しテキストとして貼り付ける

PowerPoint2002を使用しています。

テキストを [ctrl] + [C] でコピーし、[ctrl] + [V] で貼り付けるときに、書式無しテキストとして貼り付ける方法はないでしょうか?

書式なしテキストとして貼り付けるには、
「編集」→「形式を選択して貼り付け」→「書式なしテキスト」と選択しますが、これでは手間がかかります。
マクロを登録すればよいのかもしれませんが、もっとスマートにできる方法がありましたら教えてください。

Aベストアンサー

こんにちは

私はテキストエディタを別に立ち上げておき,一度そこにペーストしてから再びコピーし
て,パワーポイントにペーストしています.
コピー&ペーストを2回繰り返すことになりますが,[型式を…]をやるよりは楽かなぁ~
と思っています.書式を無くしたいときはいつもこの方法を使っています.

[型式を…]のコマンドをツールバーに入れてしまうという方法もありますが,メニューか
ら選ぶという手間が省けるという程度です.

Q.htaccessでアクセス制限動作しません

.htaccessを設置しましたが、正常に動作しません。
ニフティ法人Webホスティングにて、独自ドメイン使用のホームページを開設
しています。(.htaccess利用可、ファイルのパーミッション(属性)を「604」に
するということをニフティに確認済み)

サイト全体に対して、123.net123456780.t-com.ne.jp からのアクセス制限をしたく、.
htaccessを設置しました。.t-com.ne.jp より前の部分、またIPアドレスも一定では
ない為、t-com.ne.jp 特定ホストからのアクセス制限をしました。

---------.htaccess記述--------
order allow,deny
allow from all
deny from .t-com.ne.jp

-----------------------------
・ 各行、最終行は改行
・ FTPファイル転送後、ファイル名を「.htaccess」に、属性を「604」に変更

上記では、アクセスされてしまい、「.t-com.ne.jp」の「.(ドット)」を削除し、
 「t-com.ne.jp」に書き換え、前手順で設置をしましたが、.htaccessが
動作せず、依然として t-com.ne.jp からアクセスされています。

サイト全体のアクセス制限をしたいので、図の様にサイトトップページ、
および各ページフォルダと同じ場所に、.htaccessを設置しました。

.htaccessの記述方法、設置場所が間違っているのでしょうか?
どのようにすれば、アクセスを制限するようになるでしょうか?
ご存知の方いらっしゃいましたら宜しくお願いいたします!

.htaccessを設置しましたが、正常に動作しません。
ニフティ法人Webホスティングにて、独自ドメイン使用のホームページを開設
しています。(.htaccess利用可、ファイルのパーミッション(属性)を「604」に
するということをニフティに確認済み)

サイト全体に対して、123.net123456780.t-com.ne.jp からのアクセス制限をしたく、.
htaccessを設置しました。.t-com.ne.jp より前の部分、またIPアドレスも一定では
ない為、t-com.ne.jp 特定ホストからのアクセス制限をしました。

---------.htaccess記述-------...続きを読む

Aベストアンサー

ごめん。ドメイン全部なら

deny .t-com.ne.jp

でオッケーだったわ。

あと、考えられるのは「.htaccessをサーバーに転送する際に、バイナリモードで転送してる」だな。

一部のftpクライアントは、拡張子でテキスト転送かバイナリ転送を判断するから「.htaccess」は、転送モードを明示的に指定して、テキストモードで転送してやんないといけない。

さもないと、改行コードの違いで、全部の行がすべて無視されちゃう。

これ、.htpasswordとか、他のファイルでも起きるから注意。

QOutlookExpressの[eml]データを[msg]データに

メールデータについて教えて下さい。

通常OutlookExpressのメールデータを保存すると
拡張子が[eml]になりますが、
これをOutlookの[msg]に変換する方法は
ありますでしょうか?

理由は、取引先からメールデータを
[msg]で欲しいといわれたのですが、
私のメーラーはOutlookExpressのため
渡すことができません。

何か良い方法を教えて下さい。

Aベストアンサー

下記のサイトのソフトはいかがでしょうか?

参考URL:http://www.freedownloadscenter.com/Best/eml-convert.html

Q携帯サイトの.htaccessによるアクセス制限

携帯・PC両者で閲覧できるサイトを作っていて、.htaccessでアクセス制限(Basic認証) をかけています。
PCはもちろん、docomo,auでは正常に動作するのですが、vodafoneの一部の端末では、「このサイトはvodafone端末ではご利用になれません」と表示されて、閲覧することができません。
もとから、vodafone端末はhtaccessに対応していないのでしょうか?また、具体的に、全ての端末で閲覧することができる方法はないでしょうか?

セキュリティの面から、できれば.htaccessを利用したいのですが、無理なのであれば、その他のアクセス制限方法を教えてください。(条件を満たすもので)

また、htaccessが利用できない携帯電話端末名一覧が掲載されているHP等ご存知なら、ぜひ教えてください。

Aベストアンサー

> htaccessが利用できない携帯電話端末

.htaccessファイルはサーバー側のディレクトリを設定するもので、クライアントには全く関係ありません。
言い方を返れば、PCのブラウザも携帯のブラウザも.htaccessファイルには対応していません。

で、BASIC認証には、対応していないキャリアもあったはずです。
「キャリア basic認証」などで検索すると見つかると思いますが、とりあえず↓
http://www1.anx.co.jp/~kuwahara/cgi-bin/cgi/press110/6.shtml

もし対応しているはずのキャリアなら、
おそらく、何か別の理由、たとえば各端末ごとに表示できるページ(HTML)が決まっていたりサイズに制限がありますが、この点でvodafoneでは表示できないだけなのでは。
それを確かめるために、ためしに.htaccessファイルを削除してみて、vodafoneで表示できるか確認し、
表示できなければ、原因は.htaccessファイルではなくページそのものにあり、
表示できたら、原因はBASIC認証または他の記述、
と言うことになります。

> htaccessが利用できない携帯電話端末

.htaccessファイルはサーバー側のディレクトリを設定するもので、クライアントには全く関係ありません。
言い方を返れば、PCのブラウザも携帯のブラウザも.htaccessファイルには対応していません。

で、BASIC認証には、対応していないキャリアもあったはずです。
「キャリア basic認証」などで検索すると見つかると思いますが、とりあえず↓
http://www1.anx.co.jp/~kuwahara/cgi-bin/cgi/press110/6.shtml

もし対応しているはずのキャリアなら、
おそらく、...続きを読む

Qエクセル表示形式で[DBNnm1][$-FFFF]0となるのは?

アラビア数字を漢数字で表記(9105→九一〇五)するため「表示形式」、「ユーザー定義」で
[DBNnm1]0
と入力(詳しくはないのですが、このサイトで調べてそのようにしてみました)してファイルを保存しましたが、再びファイルを開いたときにそのセルの表示がアラビア数字に戻っており、表示形式が
[DBNnm1][$-FFFF]0
と変わっています。[$-FFFF]の部分は何を表しているのですか?
また、保存時のまま変わらないようにする対処法を教えてください。よろしくお願いします。

Aベストアンサー

「ユーザ定義」で”[DBNum1]G/標準”とやるだと思います。
この場合、9105->九千百五と変換されます。

9105->九一〇五と変換するには、関数を使わないと出来ないのではないでしょうか。

A1のセルに数字が入っている場合、A2のセルに以下の式を書きます。
=NUMBERSTRING(A1,3)

Qhtaccessでのアクセス拒否が効かない

あるホスト(xxxx.com)からホームページに
アクセスされないように、.htaccess で次のように設定いたしました。
(注:『xxxx.com』は、仮のアドレスで、実際はxxxxの部分は異なります)

order allow,deny
allow from all
deny from .xxxx.com

その.htaccessを設置した日から、
毎日閲覧されていたそのホスト(xxxx.com)からのアクセスがばったり、無くなりました。

しかし、約1ヶ月後、再びそのアドレス(xxxx.com)からの閲覧が始まりました。
.htaccessで拒否設定していても、アクセスできる抜け道があるのでしょうか?

よろしくお願いします。

Aベストアンサー

>アドレス(xxxx.com)からの閲覧が始まりました。
access.logを確認して上記の状態ですか?
access.logにログは残っているが、HTTPコード403を返しているならば
「閲覧」は出来ていませんよ

あと、apacheの設定ファイルの該当ディレクトリの上位ディレクトリ設定で、
AllowOverrideをNoneに変更したか
あるいは、Limitを外したりしませんでしたか?

Q[access]フィールドの中の特定の文字の数を出したい。

アクセス(Ver.2000)のテーブルの、一つのフィールド内に
色々な文字が並んでおります。
その中の特定の文字の数を数えたいのですが、クエリで数を出す方法は?


例えば

一行目のフィールドに『abc』
二行目のフィールドに『bcc』

という二つのレコードがあったとします。

上記をクエリで、
『a』→ 1
『b』→ 2
『c』→ 3
というように各文字の数を出したいのですが、
どのような方法で出せるでしょうか?


分かる方ご教授よろしくお願いします。

Aベストアンサー

■テーブルの作成
 新たにテーブル「T_検索文字」を作ります。フィールドは「検索文字」の1フィールドのみで
内容は、アルファベット26文字について調べるならば、

検索文字
--------
a
b
:(中略)
y
z

の26レコードです。

■選択クエリの作成
 次のSQL文をクエリのSQLビューでコピペして実行してみてください。

SELECT 検索文字,
Sum(Len([フィールド名])-Len(Replace([フィールド名],[検索文字],""))) AS 数
FROM テーブル名,
T_検索文字
GROUP BY 検索文字
HAVING Sum(Len([フィールド名])-Len(Replace([フィールド名],[検索文字],"")))>0;

 いかがでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング