Accessの条件式の書き方について

このQ&Aのポイント
  • Accessの条件式の書き方について教えてください。具体的には、顧客名簿と取り込みデータのテーブルを使用して、E-Mailとお名前で顧客名簿を検索する場合の条件式の書き方がわかりません。
  • 例えば、非連結のフォームを使用して顧客名簿と取り込みデータのレコードセットを取得し、Do Loop文を使用して巡回しながらE-Mailとお名前で抽出したい場合、どのように書けば良いのでしょうか?
  • また、Accessの学習に役立つサイトも教えてください。既存の本は難しい内容ばかりで、初心者には理解しづらいです。
回答を見る
  • ベストアンサー

Access の条件式の書き方について。

こんにちわ。 早速ですが、困ってます。 当方Access95,97時代にVBAで開発補助をしていたのにもかかわらず、すっかりきれいに忘れ去ってしまいました。 4年ぶりにaccessがふってわいてきて困っております。 たとえば、「顧客名簿」というテーブルと「取り込みデータ」という2個のテーブルがあり、 取り込みデータの中から、E-Mailと、お名前の項目を使用して、顧客名簿を検索(抽出)し、顧客名簿にデータがない場合は顧客IDをふって登録する というものをつくる場合、非連結のフォームの場合、 顧客名簿と取り込みデータにレコードセットします。 その後、取り込みデータでDo Loop 文で巡回させ、 その間に、E-Mail と お名前 で 抽出したい場合の条件式の書き方がわかりません。 rsSO を、取り込みデータのレコードセット rsTK を、顧客名簿のレコードセットとする場合、 どのように書けばよいのでしょうか?? ' & " ←こういう記号の使い方及び、And 演算子の使い方を教えてください。 また、勉強しやすいサイトがあったら教えてください。 本を見たのですが、上級編しか残っておらず、ちんぷんかんぷん・・・。 自分の忘れっぷりに驚愕・・・(T_T 変数 = "E-Mail='" & rsSO![E-mail] & "and" & rsSO![お名前] rsTK.Filter = txtKEY ↑ものの見事に失敗しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

>' & " ←こういう記号の使い方及び チョット切り取り位置が間違っていますね。 & は、「文字列」を「連結」する「演算子」です。 ------ 文字列、とは 変数に入ってない状態の文字列は、ダブルコーテーションで囲まれています。 "ほげ~" ってな感じ。 例外事項として、文字列の中にダブルコーテーションを含めたいときは、 "ここは""OKWeb""です。" のように、""と記述します。 変数に入れた後はダブルコーテーションは不要です。 strA = "ほげー" MsgBox strA ってな感じです。 「&」演算子は文字列と文字列(または変数)をくっつけますので、 1+1=2 の伝で行くと "今日は" & "眠かった" = "今日は眠かった" となります。 ってなことで、お書きになった 変数 = "E-Mail='" & rsSO![E-mail] & "and" & rsSO![お名前] って式ですが、 変数 = "E-Mail='hoge@ho.geand南野 海太" と書いたのと同じこととなり、「なんだこれわ」とAccess君が唸ってしまうことになります。 正しくは、 変数 = "[E-Mail] = 'hoge@ho.ge' AND [お名前] = '南野 海太'" とすればOKなんですが、このような結果にするためには、 変数 = "[E-Mail] = '" & rsSO![E-mail] & "' AND [お名前] = '" & rsSO![お名前] & "'" と書く必要があります。 ダブルコーテーションで囲まれた部分が「文字列」で、 & が「文字列と変数をくっつけるための記号」、ってな感じの目で眺めてみれば、お分かりいただけると思います。

333and333
質問者

お礼

!!!!!!!!!!!!!!!!ありがとうございます(感謝) わかりました!!すごいよくわかりました!! 古い記憶と一致しました(x_x)!! 昨日一晩唸ってもわからなかったのに。 感謝です。 ありがとうございました。!!!

関連するQ&A

  • accessで条件ごとにレポート印刷をしたい

    accessは初心者です。 顧客名簿テーブルを基に会社別にレポート印刷をしたいと思っています。 会社別にレポート作成、若しくは会社名を入力ごとに検索抽出しレポート作成をしたいと思っています。 どのようにすれば出来るのでしょうか? どなたか教えていただけますでしょうか。宜しくお願いいたします。 テーブル:顧客名簿 フィールド:会社名,氏名,住所,TEL,備考 レポート名:リスト

  • Accessデータ並べ替えをハイブリッドにしたい

    [使用しているツール] Access 2007 PROFFESSONAL [やっていること(現状)] 1つのテーブルで複数のクエリ(複数のフィールドの並べ替えが必要な為)と複数(クエリと同数)のフォームを作成して、フォームの数だけコマンドボタンを作成してフォームを一覧表示で開いています。 [やりたいこと] 1つのテーブルで「1つのクエリ」による複数のフィールド(名)を切替えて、「1つのフォーム」で表示(一覧)させたいと思っています。 例えば、テーブル名:顧客名簿(取引先、県名、商品名、入庫日)、クエリ名:顧客名簿クエリ、フォーム名:顧客名簿一覧としたとき、(取引先、県名、商品名、入庫日)をコンボボックス等で切り替えることで、指定したフィールド(名)で並び替えられたデータを「フォーム名:顧客名簿一覧」に表示させられないでしょう。 [考えたこと] コンボボックス(名前:コンボ1)を作成し値集合ソースに「”取引先”;”県名”・・・・。」と入力、クエリ「顧客名簿クエリ」の抽出条件欄にビルダを起動させて「・・・コンボ1」を指定、フォーム「顧客名簿一覧」のレコードソースにクエリ「顧客名簿クエリ」を選択しました。しかし、フォーム「顧客名簿一覧」を開いても、データは抽出できずデータなしの表示で先へ進めていません。 以上ですが、宜しくお願いします。

  • アクセスの複雑な条件での結合について

    久々に質問させていただきたいのですが、 アクセスでテーブル同士を結合させたいのですが、 現在、複雑すぎてデザインビューで表示できないので、SQLで作ったのですが、処理が重くて困っています。 やりたい結合は新しいデータと古いデータを結合したいです。 しかし、一つの結合ではデータの一貫性がないところがあり、抽出もれがおおいので、以下の条件で抽出しています。 テーブルA(日付1、姓、名前、名前カナ、日付2、・・・) テーブルB(日付3、姓、名前、名前カナ、日付4・・・) 結合条件 日付1=日付3 AND (氏名の名前=名前 OR 名前カナ=名前カナ) AND (year(日付2)=year(日付4) AND month(日付2)=month(日付4)) データ上、女性が多く、また、紙のパンチのデータのため、氏名の漢字も違っている場合があるので、このような条件にしましたが、軽くできないでしょうか? 明らかにデータがよろしくないのは承知していますが、アドバイスお願いします。

  • Access 抽出条件

    クエリの抽出条件で特定のレコードを抽出したいのですが 最新の三年分のレコードデータを抽出する場合どのような式にすればよいのでしょうか? テーブルには年月フォームがあり年月が入力されています。

  • Accessのクエリについて質問です。

    Accessのクエリについて質問です。 T_元データ、T_書換データという2つのテーブルがあります。 それぞれのテーブルは顧客番号、金額1、金額2、金額3というフィールドがあります。 テーブル生成クエリで、以下のような新規テーブルを生成したいと思います。 ---------------------------------------------------------------- 【1】顧客番号が一致した場合、T_元データの金額1、金額2、金額3を T_書換データの金額1、金額2、金額3に書き換えたい。 【2】顧客番号一致しない場合、T_元データの金額1、金額2、金額3を をのまま表示させたい。 ---------------------------------------------------------------- 【1】については正常に書き換えができていますが、 顧客番号が一致しない場合は、金額1、金額2、金額3がブランクになってしまいます。 【2】のような動きにするにはどうしたらよいのでしょうか? ちなみに、結合プロパティは以下のように設定しています。 左のテーブル名:T_元データ  右のテーブル名:T_書換データ 左の列見出し:顧客番号    右の列見出し:顧客番号 2を選択 ('T_元データ'の全レコードと'T_書換データ'の同じ結合フィールドのレコードだけを含め る。) よろしくお願いいたします。

  • Accessクエリの抽出条件

    Access2000を使用しています。 クエリの抽出条件にテーブルの値を使用したいのですが、その方法がわかりません。 テーブルAには、「日付」、「当者コード」 などの項目があります。 テーブルBの項目は「担当者コード」のみです。また、1レコードしか登録 されていません(2レコード以上になることはありません)。 そこで、テーブルAに対するデータ抽出条件を、テーブルBの「担当者」としたいのですが、 どのように記述すればよろしいでしょうか・・・? よろしくお願いします。

  • クエリの条件にての"*"の使い方

    いつもお世話になっております。 Access2000にてクエリの抽出条件で悩んでいます。フォームにて入力があったときはそれで抽出・入力が無かった時は全て抽出したいと思い Like forms![フォーム名]![コントロール名]&"*" をクエリの抽出条件にセットしました。入力があったときはOKなのですが、入力が無かった時はテーブルにデータがあるレコードのみを抽出してしまいます。データが入ってないレコードも抽出したいのですがどのように記述すればいいのでしょうか? 宜しくお願い致します。

  • ExcelまたはAccessで顧客管理をしたい。

    Windows7 Excel2010 Access2003 を使用しています。 Excelで添付のような顧客名簿と顧客履歴を作り、それらを入れたフォルダを共有フォルダにして、2人で利用しています。 そこでこの度、コードを入力するとその顧客の名簿データと履歴データが表示され、それらのデータを編集するものを作りたいと考えています。 まず、Accessでとりあえず作ることはできたのですが、上記ExcelデータをリンクテーブルにしたらAccessで編集することができないことがわかり、行き詰まりました。 上記Excelデータは他の多くの処理に使っているので、Accessにインポートして編集する場合、編集後のデータをExcelにエクスポートする必要があります。 インポート~エクスポートを自動化する方法があるのでしょうか? 次に、Excelのパラメータークエリを利用して「外部データの取り込み」をしてみましたが、各データの表示はできましたが編集ができません。 AccessでもExcelでもどちらでもかまいませんので、どなたか教えていただきたく、どうぞ、宜しくお願いいたします。

  • アクセスVBA 変数での抽出条件の書きかた

    顧客データテーブルからの抽出です。 変数を使った書き方がわかりません。 よろしくお願いします。 テーブルのレコードには [氏名]:鈴木 [telnum]:0123456789 が存在します。 Private Sub テキスト0_BeforeUpdate(Cancel As Integer) Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("顧客マスタ", dbOpenDynaset) Dim str As String str = "0123456789" rs.Filter = "[telnum] = ' " & str & " ' " Set rs = rs.OpenRecordset MsgBox (rs!氏名) ’←エラーメッセージ”カレントレコードがありません。”が出ます End Sub

  • Access 抽出クエリーについての条件

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

専門家に質問してみよう