• ベストアンサー

[AccessXP]VBAのものの本に書いているような条件式を受け付けない

DLookUp関数やOpenFormコマンドのWhereconditionで抽出条件式を設定するとき、ものの本では、 "フィールド2='" & Me![フィールド1] & "'"  ...式1 と書いてますが、今開発中のAccessのデータベースでは、フィルタプロパティに出る書き方のように、 "[テーブル1].[フィールド2]=" & Me![フィールド1]   ...式2 と書かないと、「演算子がありません」と言われます。 なぜでしょうか。 Accessは一度受け付けた条件式のスタイル以外を認めようとしない癖があるように感じます。一度、式2のように書いてそのプロシージャを実行したことがあるために、それ以後そのデータベースでは式1を条件式のスタイルとみなさないという癖です。この質問の答えと関係があるかどうかわかりませんし、「感じ」なので実際のところはっきりしませんが、感じるという方も書き込みをお願いします。

  • momoo
  • お礼率62% (51/81)

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

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

> "フィールド2='" & Me![フィールド1] & "'" フィールド2 がテキスト型の場合の記述方法です。 > "[テーブル1].[フィールド2]=" & Me![フィールド1] こちらは、数値型の場合ですね。 > それ以後そのデータベースでは式1を条件式のスタイルとみなさないという癖です。 こういったことはないと思います。 ちなみに、対象フィールドが日付/時刻型の場合は、 "[フィールド名]=#" & Me![コントロール名] & "#" のように記述します。

momoo
質問者

お礼

回答ありがとうございます。 そのフィールドは数値型でした。 なるほどと思いました。 最近、これらの違いを意識して使いこなせるようになってきました。 最後に、お礼が遅くなってごめんなさい。

関連するQ&A

  • MS ACCESS2000のVBAでDocmd.openformしてます

    openform のパラメータのwhereconditionに、like演算子を使って、 「 フィールド名 like %文字% 」 というような指定をしたいのですが、上手くいきません。 演算子が無いとか、いろいろ言われてしまいます。 どのように記述すると、動作するでしょうか?

  • ACCESS VBAのOpenForm書き方

    ACCESS VBAについて教えてください。 DoCmd.OpenFormのWhereConditionの部分の記述がわからないのです。 1つの条件の場合は問題なく表示できたのですが、複数条件にすると「抽出条件でデータ型が一致しません。」とエラーになってしまいます。 なぜでしょうか? このように記述しています。 DoCmd.OpenForm "会員データ", , , "種別 = '" & Me![種別] & "' AND 会員番号 = '" & Me![会員番号] & "'" 種別、会員番号ともに数値データです。

  • access での検索条件の選択

     いつも大変お世話になっております。  この度、accessのデーターベースを作成したのですが、今度、そのデーターベースから特定の条件のデーターを抽出することになったのですが、データーベースを使用する人がどんな人でも抽出できるように、抽出条件をリストからの選択式にしたいのですが、方法が解りません。  access自体はあまり詳しく知らないのですが、ご教授のほどよろしくお願いします。

  • アクセスのVBAについて

    win2000、アクセス2000を使用しています。 「検索条件」というフォームのテキストに条件を入力したら、「検索結果」というフォームへ抽出されるようにしたいのです。 条件を入力する際に一部分(キーワード)の入力でも当てはまるデータが抽出されるようにしたいのですが、検索条件を入力するテキストボックスが10ヶ所あり、それぞれにキーワードでの抽出をしたいのです。 DoCmd.OpenForm "検索結果", acNormal, , "[施工年度] Like '*" & t_04.Value & "*'" ※[施工年度] →フィールド名  t_04    →テキスト名 上の状態では、うまくいきましたが、条件が複数ある時はどうやって続けたらよいかわかりません。 単純に And で続けたらエラーがでてうまくいきません。 アクセス初心者のため、うまく説明できず申し訳ありませんが、どうぞよろしくお願いします。

  • アクセス:フィールドが非表示で消えるのを防止する式

    アクセス2010を使っています。 アクセスのクエリのデザインにおいて、あるフィールドAで並び替えも抽出条件もなく非表示の状態にして、結果を開き、また閉じると、そのフィールド自体が消えます。 これを防止したいのですが、並べ替えは必要ないので、抽出条件式を何か使いたいと考えました。抽出条件式はどのようなものが無難でしょうか。「is null」や「is not null」は試しましたが、だめなようでした。これ以上いろいろと試すうちにクエリ自体を妙なことにしてしまいそうで悩んでいます。 フィールドAに入るのは短い日本語の文字列です。人名です。 フィールドAは、表示すると後の段階で困るのですが、ある別のフィールドBの条件式の材料(?)としてデザインの中に開いておかなければならないようです。完全に消してしまうとフィールドBがエラーになります。しかし(並び替えと条件式なしで)非表示にすると、フィールドAが消えてしまいます。 初心者ゆえに不首尾な質問と思いますので、必要があれば補足いたします。どうぞ上級者の方、教えてください。

  • Access DLookup関数で複数条件の記述

    とても困っているので、どなたか教えて下さい! 今AccessでDLookup関数を使ってフィールドの値を取り出そうとしているのですが、 色んなエラーメッセージが出て先に進めません。 ★値を取り出そうとしているテーブル★ ■顧客台帳  ・顧客ID(オートナンバ)  ・顧客氏名(テキスト型)  ・生年月日(日付・時刻型)      以下略 ここから DLookup("顧客ID", "01顧客管理台帳", "顧客氏名 = " & Chr(34) & Me.Txt顧客氏名 & Chr(34) And "生年月日 = " & Me.Txt生年月日) 補足:Me.Txt顧客氏名(書式なし)    Me.Txt生年月日(日付(S)定型入力9999/99/99)    は、事前に入力されているものとします。 という式を使って、入力した顧客氏名と生年月日に一致する顧客IDを取り出したいのですが、 「型が違います」というエラーが出てしまいます。 条件式に[ ]等をつけてみても、「指定した式で参照されている'|'フィールドが見つかりません」 という様なエラーが出てしまいます。 条件の部分が間違っていると思うのですが、この式、またはやり方の問題点がお分かりになる方がおられましたら、ご指摘の方よろしくお願いいたします。

  • アクセスadpでのDLookUp関数

    アクセス2003 adpのレポートのあるコントロールのコントロールソースにDLookUp関数を使おうとしています。 =DLookUp("列名","ストアドプロシージャー名") *ストアドプロシージャーの抽出条件にパラメータを設定してあります レポートの「入力パラメータ」にも記入してあります *ストアドプロシージャーを実行した結果のレコードは1つのみです mdbでは =DLookUp("列名","クエリー名") でうまくいっていたのですが adpの場合#エラーになってしまいます 一時ファイルにレコードを追加してそれを引数にすればうまくいくのですが、 できればストアドプロシージャーを引数にしたいと思っています。 どなたかご教授をお願いいたします

  • Access2003 式ビルダでのLikeについて教えてください

    Acccess初挑戦の状態で困っております。 例えばデータベース内の名前で「山」の文字が含まれる名前を抽出させたい場合、「クエリの抽出条件でLike "*山*"」とすることで抽出できるのはわかるのですが、フォームでマクロの式ビルダを用いて同様の抽出を行いたいのです。 「顧客データ」のテーブルにある「お客様名」のフィールドから、「検索フォーム」の「名前検索」に入力されたキーワードを含むものを抽出させるために、以下の用に式ビルダで作成したのですが、 [顧客データ]![お客様名]=[Forms]![検索フォーム]![名前検索] 完全に一致する場合しか抽出してくれません。 データベース内に「山田 太郎」の名前があったとして検索フォームで「山田 太郎」と入力すると抽出されます。これを「山」と入力しただけで「山田 太郎」が抽出されるようにしたいのです。 Likeの演算子を用いてアスタリスクを使用すれば、できるのかなとは思うのですが、式ビルダへの記述方法がわかりません。 アドバイス頂ければ助かります。

  • Accessで任意のテーブルのフィールド値をクエリの抽出条件にできますか?

    Accessで任意のテーブルのフィールド値をクエリの抽出条件にできますか? 工程管理のAccessDBがあり、毎日更新される工程を管理するため、数種類の選択クエリを作成しています。 そのクエリからExcelのデータベースクエリを使ってExcelシートにクエリ毎に各シートに取り込んでいます。 Accessクエリは不定期で抽出条件を変更しています。 抽出条件はどのクエリでも同時に同じものを使うところが多いため、任意に入力した値を抽出条件に指定できれば、一度で全クエリの抽出条件を変更できるのではないかと考えています。 色々調べてもフォームを使った方法は紹介されていますが、上記の条件下でいい方法はないでしょうか? 抽出条件は『Is Null Or >#2008/06/30#』のような感じです。

  • Access2000 (VBA) ' & "などの記号の意味

    次のコードで迷ってます。 InputBoxに入力した、都道府県と同一ものだけをレポートに表示させるものです。(ちなみにこのコードは正しく動きます。) Private Sub コマンド2_Click() Dim myStr As String myStr = InputBox("抽出する都道府県は?") DoCmd.OpenForm FormName:="顧客マスタ表形式フォーム", _ WhereCondition:="[都道府県]='" & myStr & "'" End Sub この、 "[都道府県]='" & myStr & "'" が理解できません。 (一番外の”は、WhereConditionの条件を示すのは分かります。) ただ、'や&がなぜ必要で、このコード内ではどのような役割をしているのか分かりません。(’や&を消すとエラーになるので、この書き方が正解なのでしょうけど、理解できずに困っています。) そもそも、データ型が文字列でも、変数には&のような文字列連結演算子が必要なのか? なぜ、’が必要なのか?

専門家に質問してみよう