ACCESS:条件付き書式でDLOOKUP関数

このQ&Aのポイント
  • ACCESSで、フォームに該当の数値が入力されると注目!の意味でその数値を赤太字で表示させたいです。
  • 条件付き書式がいいと分かったので、KEY_INフォームのPO_NOに設定して、DLookUp関数を使用しましたが、何の数字でも反応してしまいました。
  • DLookUp関数に様々な書式を試しましたが、解決できませんでした。お助けいただけないでしょうか?
回答を見る
  • ベストアンサー

ACCESS:条件付き書式でDLOOKUP関数

こんにちは。 ACCESSで、フォームに該当の数値が入力されると注目!の意味で その数値を赤太字で表示させたいのですがどのようにしたらよいでしょうか? 実際には、 MAIN_TABLEというテーブルを元にKEY_INというフォームを作っています。 そのフォームのPO_NOに入力したときに赤太字にしたいです。 注目させたいものはBULLETIN_BOARDというテーブルの CHECK_POというフィールドにリストアップしています。 条件付き書式がいいと分かったので、 KEY_INフォームのPO_NOに設定して、、 フィールドの値 次の値に等しい DLookUp("[PO_NO]","BULLETIN_BOARD","[CHECK_PO]")  とすると何の数字でも反応して赤太字になってしまいました。 そして、セキュリティの警告のコンテンツを有効化のボタンを押して 再度確認してみると全然反応しなくなりました。 その後、 DLookUp("[PO_NO]","BULLETIN_BOARD","[CHECK_PO]="&[CHECK_PO]) DLookUp("[PO_NO]","BULLETIN_BOARD","[CHECK_PO]='"&[CHECK_PO]&"'")  も試してみましたがダメでした。 解決法が分からなくて苦労しています。 教えていただけないでしょうか?

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

  • ベストアンサー
  • oka_me
  • ベストアンサー率86% (26/30)
回答No.2

当方アクセス2007ですが、先程の回答の通りできちんと反映されています。 セキュリティの警告は恐らくマクロやVBA関連で出てくるものかと思うので 条件付き書式等のみではあまり関係ないとは思うのですが・・・(違ったらごめんなさい) 双方のデータ型が「テキスト型」なのであれば DCount("*","BULLETIN_BOARD","[CHECK_PO]='" & [PO_NO] & "'")>0 で動作するかとは思うのですが dcountの最初の項目は「"*"」になっていますか? (あるいは "[CHECK_PO]" 等、BULLETIN_BOARDのテーブル内に存在するフィールド名であれば何を指定しても大丈夫なはずですが、"[PO_NO]"というフィールドがBULLETIN_BOARDに存在しない場合に指定してもdcountで「0」が返され、「>0」が成り立たないので条件付き書式は反応しません) dcountは質問者様の仰る通り、指定した条件に一致するレコードの「数」を返す関数です。 入力したPO_NOフィールドの値に一致するレコードの数値が返ってきますので、その数値が「1」以上であれば(>0の部分)条件付き書式が適用され、一致がない場合は0が返りますので通常の書式になります。 dlookupで出来るかは私の知識内ではどうか分かりませんが・・・

jjnono
質問者

お礼

全く新規のファイルを作って試してみると、回答者様の仰るとおりできました! しかし、当該のファイルに適用しようとしてもできません。("*"もその通り打ちながら、、) 他の箇所でマクロは使っていますが、この条件付き書式とはやはり関係ないですよね。 ですがDCount関数のしくみはよく分かりました。 ありがとうございます。 もしかすると[PO_NO}のコントロールに何か制限がかかっているとかプロパティを見たら原因があるかもしれませんね。やってみます。 とにかく、ありがとうございました!!

その他の回答 (1)

  • oka_me
  • ベストアンサー率86% (26/30)
回答No.1

dcountではどうでしょうか。。 ★「フィールドの値」のプルダウンを「式」に変更 DCount("*","BULLETIN_BOARD","[CHECK_PO]='" & [PO_NO] & "'")>0 ※文字列の場合 DCount("*","BULLETIN_BOARD","[CHECK_PO]=" & [PO_NO])>0 ※数値の場合

jjnono
質問者

お礼

早速のご回答ありがとうございます。 教わった方法で式に変更して試してみましたが、どうも上手くいきません。 MAIN_TABLEとBULLETIN_BOARDのデータ型がバラバラだったのでテキスト型に合わせてやってみたんですが、う~ん、反応しません。 DCount("[PO_NO]","BULLETIN_BOARD","[CHECK_PO]='"&[PO_NO]&"'")>0 ともしてみましたがダメでした。 コンテンツの有効化が原因でしょうか?相性が悪いとか、、、? ちなみに、最初ACCESS2003で作ったものを2007に変え、今は2010で使っています。 しかし、DCount関数になるのはなぜですか?数えた数が出てくるのだと思っていました。

関連するQ&A

  • MS ACCESSで条件付き書式

    以前こちらで同じ質問をさせてもらい、 http://questionbox.jp.msn.com/qa8491190.html 書式設定については適切な解答を得られたのですが、適用しようと思っているファイルのコントロールに設定しようとしてもどうしてもうまく作動しません。 どのような原因が考えられるか教えてください!! >前回の質問 こんにちは。 ACCESSで、フォームに該当の数値が入力されると注目!の意味で その数値を赤太字で表示させたいのですがどのようにしたらよいでしょうか? 実際には、 MAIN_TABLEというテーブルを元にKEY_INというフォームを作っています。 そのフォームのPO_NOに入力したときに赤太字にしたいです。 注目させたいものはBULLETIN_BOARDというテーブルの CHECK_POというフィールドにリストアップしています。 >前回の回答 dcountではどうでしょうか。。 ★「フィールドの値」のプルダウンを「式」に変更 DCount("*","BULLETIN_BOARD","[CHECK_PO]='" & [PO_NO] & "'")>0 ※文字列の場合 DCount("*","BULLETIN_BOARD","[CHECK_PO]=" & [PO_NO])>0 ※数値の場合 試しに新規のファイルを作って設定してみるとちゃんと赤太字になります。 ですが適用したいファイルでは黒細字のままです。(数式は何度も確認したのですが、、、) できた方とできない方とコントロールのプロパティを比べてみると、関係のありそうな違いは できた方は Format: General Number になっていて、 できない方は Format: 空白 。 数値型にしたくないので、できた方のGeneral Numberを消しても、、、ちゃんと赤太字。 ファイルにパスワードが掛かっているとかでもありません。 バージョンはACCESS 2003→2007→2010と変更してきて今は2010で使っています。 これが引っ掛かっているのでは?という点がありましたら教えてください!

  • 日付と文字列を条件としてDLookup関数で抽出さ

    日付と文字列を条件としてDLookup関数で抽出させたいです。アクセスです。 テーブル1のデザイン フィールド名 ID(数値型) フィールド1(テキスト型) 取得日時(日付/時刻型) テーブル1のデータ ID  フィールド1  取得日時 1       あ  2013/01/05 2       い  2013/01/05 この条件でvbaでIDの値を抽出したいのですが MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#") だと、1が返ってきちゃうのでフィールド1でもフィルタをかけたいのですが どうやればいいでしょうか? MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#" And "[フィールド1] = 'あ'") にすると、型が一致しません。(Error 13)になります。 ご教授よろしくお願いします。

  • Dlookup関数の使い方 (Access2007)

    まったくのAccess初心者です。Dlookup関数の使い方がどうやってもわからないので教えてください。 車種というテーブルには[車番]と[全長]というフィールドがあります。 データというテーブルに[車番]やその他([定員]や[車高]など)のフィールドがあり、フォーム入力で車番を入れると車種テーブルから全長を引っ張ってくるようにしたいのですが、どうすればいいでしょうか。 ネットや参考書で調べていますが、=dlookup(  )の中をどう書けばいいかさっぱりわかりません。 質問の書き方もおかしいかもしれませんが、よろしくお願いします。

  • DLookup Excel→Access

    エクセルVBAからアクセスのデータベースへ接続し テーブルの値を取得したいのですが エクセルVBAで mystr = DLookup("[フィールド]", "Tテーブル", "[名前] = '検索文字'") と言うコードでアクセスのデータを取得することはできませすか? テーブル名とフィールド名は指定できたのですが ファイル名の指定はどうすればいいのでしょうか? オフィス2010です。

  • Access DLookUp関数について

    DLookup関数を使用して、フォーム上にテーブルの値を返したいと思い、 試行錯誤をしたのですが、思うように値が返されません。。。 どうかお力添え下さいますようお願い致します。 「得意先&出荷先」テーブルに「得意先コード」「名称」項目を設け、 「詳細入力」フォームの「得意先コード」に値を入力をすると、 「得意先名称」項目に、テーブルの「名称」項目の値を返す動作を設定したいのです。 私は、下記のように書きましたが、「#Type!」と表示され、思うような動作をしません。 =DLookUp("[名称]","[得意先&出荷先]","[得意先コード] = '" & [Forms]![不具合詳細入力フォーム]![得意先名称] & "'") どこがおかしいのでしょうか?? またDLookUp以外でも、もし上記のような動作を実現させる方法がありましたら、ぜひご教授ください! 宜しくお願いいたします。

  • Access DlookUpのネスト

    Access 2010 です。 コントロールソースでの利用を想定しています。 DlookUpでDlookUpの結果を条件にネストする場合 =DLookUp("外フィールド1","外テーブル","[外フィールド2]=DLookUp(内フィールド,'内テーブル','rs('内フラグ')=Yes')") の様な利用の仕方をしたいのですが#エラーになってしまいます。 検索条件の =DLookUp(内フィールド,'内テーブル','rs('内フラグ')=Yes')") 単体では正しく取得出来ているので、 ネストする際のクォーテーション絡みなどで正しく値が取得できていないのでは と考えておりますが、正しくはどう記述するべきでしょうか?

  • (access ) dlookupの抽出について

    「会社テーブル」 **企業コード **商品コード *会社名 「商品テーブル」 **商品コード **担当者コード *商品名 「住所テーブル」 **担当者コード *担当者名 *住所 仮に上記のようなテーブルがあり、下記がその条件式です =DLookUp("担当者名","住所テーブル","[担当者コード] = " & [テキスト入力欄]) フォーム上の[テキスト入録欄]に 「**担当者コード」 の値を入力し、 担当者名 や 住所 を任意のテキスト枠に返します。 その方法で[会社テーブル]の会社名を返す場合はどのようにしたらいいのでしょうか 上記のテーブルの通り、会社名には 担当者コード が存在しておりません 企業コードや会社コードを入力するという方法は二度手間になるためやりたくありません フォームを作成して3つのテーブルを繫ぎ、下記の式で抽出しようと試みましたができません =DLookUp("会社名","フォーム","[担当者コード] = " & [テキスト入力欄]) どなたか方法を教えてください

  • アクセス DLookup関数 なぜエラーになるのか

    アクセス DLookup関数 なぜエラーになるのかわからないです。 testと言うテーブルがあり、a・bと言うフィールドがあります。 aフィールドにあああと入ってる場合のbフィールドの値を取得したいのですが Debug.Print DLookup("[b]", "test", "[a] = あああ") だと、 実行時エラー2471「クエリ パラメータとして指定した式でエラー'[あああ]'が発生しました。」 になります。 どこがおかしいのか教えていただけますか?

  • AccessのDLookUpの第3引数の値について

    AccessのDLookUpの第3引数に「" [テーブル]![フィールド] =" & テーブル!フィールド & "」という値を指定した場合、文章で言うとどうい意味になるのでしょうか? ご存知の方がいらっしゃいましたら、教えて下さい。 よろしくお願い申し上げます。

  • 【Access97】DLookupについて

     Access97を使って今、データベースを作成していますが、行き詰まってしまいました。  まず大まかな構成を書くと… <テーブル> 【○○班データ】テーブル ・「データナンバー」フィールド ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド 【部材マスター】テーブル ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド <クエリー> 【○○班データクエリー】 「○○班データ」テーブルを元に選択クエリーを作成(全てのフィールド) <フォーム> 上記のクエリーを元に作成。 ここからが質問内容になるのですが、「部材名」をコンボボックスで入力したら、Dlookup関数をテキストボックスのコントロールソースに記述して「部材ナンバー」と「部材コード」が表示されるようにはできました。 ですが、フォームで表示された「部材ナンバー」や「部材コード」がクエリーやテーブルには反映(入力)されておらず、どうしたらいいか手詰まりになっています。 もし、対処法を御存知の方がいらっしゃったら、是非とも御教示をお願いします。 念の為にテキストボックスのコントロールソースで記述したDLookup関数を書いておきます。 「部材ナンバー」の呼び出し =DLookUp("[部材ナンバー]","[部材マスター]","[部材名]='" & [部材名] & "'") 「部材コード」の呼び出し =DLookUp("[部材コード]","[部材マスター]","[部材名]='" & [部材名] & "'")

専門家に質問してみよう