• 締切済み
  • 困ってます

Accessの条件式

こんにちは、VBA初心者です。 条件分岐についての質問です。 関連しそうなWebサイトなどを調べて見たのですが、今一分からないため質問させてください。 社内でAccessを使って荷物の出荷管理表をつくっています。 大まかなものは完成しているのですが1点だけ修正したい箇所があります。 出荷表は、「品番」「品名」「個数」「納期」「出荷日」「出荷責任者」「担当者」「出荷先」 これらを示すテーブルとクエリ、情報入力用のフォームと出力用のレポートからなっています。 この中で『出荷先』は客先の社名を記載し、その語尾に「様」を表示するようにレポート内にてラベルを使用しています。 今まではこれで良かったのですが、社の運営方針が少し変わり、自社倉庫・自社系列への出荷品が入ることになりました。 これらの出荷先への出荷の場合には「様」は必要ないということで出荷先への記載は社名(または倉庫名)のみとなります。 このため、レポート内での「様」ラベルの使用ではなく、条件分岐のIF文を使って必要に応じて語尾の表示ができるようにしたいのです。 条件式は、『出荷先のデータが○○○(自社関連先名)のとき○○○のみ表示』『出荷先データが×××(自社関連先以外)のときのみ×××+(スペース)様と表示』 もしくは、レポート内に「様」ラベルを残しておき、 『出荷先データが○○○のときのみこのラベルを非表示にする』というものを考えています。 自分でも初歩的な質問とは思うのですが是非ご教授をお願いします。 バージョンはXP2002でAccess2003を使用しています。 【テーブル】【クエリ】 品番、品名、個数、納期、出荷日、出荷責任者、担当者、出荷先 【フォーム】 テーブル1と同様の内容でテキストボックスとデータの新規作成、削除、レポート表示用のコマンドボタンを配置。 各テキストボックスの名前は[情報名T(例:出荷先T]としています。 【レポート】 フォーム同様にテキストボックス配置し、名前は[情報名LT]としています。 現在は出荷先の後ろにのみ、「様」ラベルを配置。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数444
  • ありがとう数5

みんなの回答

  • 回答No.2

ラベルでは、レコードの値に合わせて書式などを変えることはできません。 なので、敬称の表示/非表示を切り替えるのでしたら、テキストボックスを 新たに追加するか、現在の『出荷先』テキストボックスを連結コントロール (コントロールソースにフィールド名を指定したコントロール)から 演算コントロール(コントロールソースに式を指定したコントロール)に 変更するのがよいかと思います。 (但し、自社関連先かそれ以外かを判定できるフィールドがあることが前提) とりあえず、『出荷先』の文字数によらず敬称との間隔を一定にする意味で、 現在の『出荷先』を演算コントロールに変える方法を説明します。 現在『出荷先』を表示させているテキストボックスのコントロールソース:  出荷先 修正後(自社関連の『出荷先』が常に「○○○」を含むと仮定):  =出荷先 & IIF([出荷先] Like "*○○○*", "", " 様") ※IIF関数は、第1の引数が成立する場合には2番目の引数に指定した値  (ここでは空文字(=空白))を、成立しない場合は3番目の引数に指定した値  (ここでは「 様」)を、それぞれ返します。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 >ラベルでは、レコードの値に合わせて書式などを変えることはできません。 そうですか、変更はできないのですね・・・ とりあえず教えていただいた方法を試してみようと思います。 丁寧な回答をありがとうございました。 また質問するような機会がありましたら宜しくお願いします。

関連するQ&A

  • Access2013 不一致抽出

    不一致抽出方法についてご教授いただけないでしょうか? 下記のようなテーブルA、テーブルBがありお互いの差を抽出結果として表示したいと思っています。 比較したいテーブルが複数ある為抽出フォーム側のテキストボックスにて抽出条件を入れたいと思っています。 フォーム1のテキストボックス1とテキストボックス2に比較したいテーブルA、テーブルBと入力したいと考えています テーブルA JANコード    品名  店番 4912345678901 品名1  00001 4923456789012 品名2  00001 4934567890123 品名3  00001 4945678901234 品名4  00001 テーブルB JANコード    品名  店番 4912345678901 品名1  00002 4934567890123 品名3  00002 4945678901234 品名4  00002 4956789012345 品名5  00002 抽出結果 JANコード    品名  店番 4923456789012 品名2  00001 4956789012345 品名5  00002

  • Accessのフォームについて教えて下さい

    Access 2010のフォームについてお教え下さい。 テーブルにはテーブル名T1、フィールド「ID」、「Price」というテキストボックス。2フィールドがあります。 テーブルの各データは、 ID,Price 001,100 002,200 003,300 フォームにはにフォーム名F1、「cmb」というコンボボックスと、「price」というテキストボックスが配置されています。 「cmb」のデータは値集合ソースで、「SELECT T1.ID FROM T1;」と指定しています。 「cmb」で選択したデータのプライスを「Price」テキストボックスに表示したいと思います。 例えば、「001」を選択したら、「100」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。

  • Access2003 タブコントロールについて

    フォームの詳細にタブコントロールを配置して、 その中にサブフォームを入れています。 そのサブフォームにあるテキストボックスの文字を レポートのテキストボックスに表示させたいです。 ただのフォームなら =Forms!フォーム名!テキストボックス名 でレポートに表示できますがタブコントロールがある場合は レポートのテキストボックスのコントロールソースに どういうふうに記述すればよいのでしょうか? よろしくおねがいします。

  • 回答No.1

出荷先のテーブルに敬称欄を追加すれば良いのでは?

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 >出荷先のテーブルに敬称欄を追加すれば良いのでは? もちろんこの方法もできますが、 ただでさえフィールドが多くごちゃごちゃしているのでこれ以上の追加は避けたいのです。 ですので、VBAを使った方法を取りたく思い、今回の質問をさせていただきました。

関連するQ&A

  • Accessちゃん活用中

    突然ですが、3つ質問させて戴きます。フォームのレコードソースは3つとも同じテーブルからです。 Q1:フォームを開いた時、五十音順に表示させる方法 (テーブルの画面で五十音順になっていてもフォームに表示されてくる順番はID番号順になってしまいます。) Q2:フォームビューの時、ひとつのテキストボックスに会社Noや社名・ふりがな等を入力した時、ヒットした社名が出てくるようにするには?(検索機能) Q3:フォームを開いた時、必要な会社名のレコードだけ使いたいという時の設定方法。 例えば、テーブルに200件分のデータがあるとしら、その150行目から200行目までとか、同じ会社名のデータだけしかこのフォームではいらないんだけどなぁという時。 以上、なんでもけっこうですので、是非ご教示くださいますようお願い申し上げます。参考にさせてください。

  • AccessでBetween条件を含むクエリーで、Between条件を

    AccessでBetween条件を含むクエリーで、Between条件を入力しなくてもデータを抽出するには? Access97でデータの抽出を行いたいと思います。 「顧客名」「商品名」「出荷日」という項目を含むクエリーから、希望のデータを抽出するフォーム(名:検索フォーム)を作成しています。 検索フォームにそれぞれ「顧客名」「商品名」「出荷開始」「出荷終了」という名前の非連結のテキストボックスを作り(規定値を"*"にしています)、それに値を入力すると、これらのテキストボックスの下に配置したサブフォームに抽出されたデータが抽出される様にしたいのです。 現在、クエリーの「顧客名」項目の抽出条件に「[forms]![検索フォーム]![顧客名]」という様に入力し、同じ様な記述を「商品名」項目にも行い(条件は[商品名]としています)、出荷日に「Between[forms]![検索フォーム]![出荷開始]And[forms]![検索フォーム]![出荷終了]」と記述しています。(これらは全てAnd条件にしています) さて、この検索フォームの値入力項目で、全てのテキストボックスに入力しなくても(1つ以上値が入力されていれば)データをサブフォームに抽出できるようにしたいのです。 現在、「出荷開始」&「出荷終了」に値を入力すれば、その他の値(「顧客名」と「商品名」)を入力してもしなくてもデータが抽出できますが、「出荷開始」&「出荷終了」を入力しない限りデータが抽出されません。 この「出荷開始」&「出荷終了」を入力しないケースでもデータが抽出できる様なフォームを作成したいのですが、 どの様に記述を変えたらよいでしょうか?

  • Access_テーブルへデータ追加する方法

    自分なりに調べてみましたが、わからなかったのでご存知の方がいらっしゃいましたら、ぜひ教えてください。 【状況】 アクセスのサンプルデータ(MDB)を自分でアレンジしています。VBAで計算させた結果をフォーム上(ラベル)で表示させています。 【やりたいこと】 上記ラベルに表示された結果をデータとしてテーブルに落としたいと考えています。 【問題?】 非連結のテキストボックスなら落とすことが可能でしたが、ラベルに表示された値?データはテーブルに落とす方法が分かりません。 ご存知の方がいらっしゃいましたら、ぜひ教えてください。よろしくお願い致します。

  • Access テキストボックスの移動

    フォーム上に、ラベルとテキストボックスで1セットになっているものがあります。 ラベルにはフィールド名、テキストボックスには実際のデータが表示されています。 フォーム上でテキストボックスだけを移動させたい時は、テキストボックス左上の大きい黒い四角をドラッグすれば可能ですが、これと同じ動きが出来るキーはありますでしょうか? ←や→のキーではラベルまで一緒に動いてしまうので・・・。

  • accessのレポートで…

    レポート(テーブル1から作成)にあるフィールド1には「1・2・3…」という数字が入っています。 この1・2・3はテーブル2(ID・名前)とリンクしています。 フォーム上ではコンボボックスにして、テーブル2の名前も表示するようになっています。 (テーブルに値としては入っていません) これでレポートを作成した場合、テーブル2の名前を表示させたいのですが、テキストボックスで Iif([フィールド1] = "1","****",Iif(… というようにしてしまうと、せっかくリンクにしたのにデータが固定になってしまうのを避けたいんです。 フォームだとコンボボックスの更新後処理とレコードの移動にコードをかけば最新の情報を表示することができたんですが、レポートでもこのようなことはできるんでしょうか? (コードをかいて処理したいです) Access2000です。 よろしくお願いします。

  • Access2010についての質問です。

    アクセス「超」初心者です。 あるクエリ上のデータを検索(抽出?)して、フォームに反映させたいのですが、基本的なところで躓いております。 クエリ【Q基本データ】にあるフィールドは [階] [場所] [物] です。 [階][場所]は、別にテーブルがあり、そこから選ぶようになっています。 (→【T階テーブル】【T場所テーブル】) このクエリを基に作成したフォーム【F基本データ】上で、検索を行いたいのです。 フォーム【F基本データ】のヘッダー部分に、 テキストボックスを2つ[階検索][場所検索]と ボタンを1つ[検索] それぞれ配置し検索を行えるようにしたいのですが・・・ (テキストボックスはそれぞれ【T階テーブル】【T場所テーブル】からコンボボックスで選ぶようにしています) [検索]ボタン > プロパティシート > イベント > クリック時 の埋め込みマクロにアクション「フォームを開く」を入力していけば良いのでしょうか??? テキストボックスが2つだとマクロでは無理とか??? テキストボックス1つにつき、ボタンを1つ配置したら良いのか??? ご教授いただけましたら幸いです。

  • ACCESSのフォーム内のテキストボックスのコントロールソース

    ACECESSでフォームを作り、テキストボックスを作成します。次に、そのテキストボックスへテーブルAのデータBを割り当てたとします。このとき、このテキストボックスに、テーブルAのデータBが割り当てられている事を確実に知る方法はありますでしょうか。 このテキストボックスのプロパティのコントロールソースを参照すると、データBが表示されますが、テーブルAの情報が表示されません。自分で作成したフォームについてはそれでも良いのですが、今回他の人が作成したフォームを見る必要があり、どのテーブルのどデータを割り当てているかを確実に知りたいのですが、その方法をご存じでしたら教えて下さい。

  • ACCESSにて・・・

    accessにて・・・ フォームには初期値としてテーブルのデータがテキストボックス等に表示されます。 本来は、変更すべき項目があれば変更して(この時点ではテーブルは更新されない)、更新ボタンを押すとテーブル更新・・・としたいのですが・・・フォームのテキストボックス等に入力した項目が入力した時点でテーブルに更新されてしまいます・・・何か設定があるのでしょうか?

  • ACCESSのフォームを使っての住所録の検索なのですが,

    Accessのフォームを使って住所録から,データを抽出し,その結果をまず表示,その後ラベルシールに印刷をしたいのですが,フォームでの検索は,テーブルのすべての項目について複数の項目を同時検索をできるようにしたいです。 テーブルの構造はごく普通の住所録です。データ件数は8万件ほどです。 どういう方向で作業を進めるべきか分からないのですが,こういった場合は,まず,検索用のフォームを作成し,コマンドボタン(検索・印刷)を配置して, それに対してイベントかマクロの記述をするんだろうなとは思うのですが・・・ 私が思うに,抽出結果を格納するテーブル・検索フォーム・ラベル印刷用のレポートが必要なのだろうと思いますが,それらが何でつながっていくのかが分かりません。参考書などでは,一つ一つのことが別々に書いてあって作業の全体像が分かりません。作業の方向と必要なスキルが同程度などか詳しい方教えてください。

  • ACCESSでフォーム入力→レポート出力したい

    ACCESSでフォーム入力→レポート出力したい OS:XP,ACCESS2000 フォームのテキストボックスに入力した文字をレポートのテキストボックスに表示したい。 フォーム: ファイル名は「フォーム1」で、その中に作ったテキストボックス名は「入力データ」 コマンドボタン名は「レポート出力」 レポート: ファイル名は「レポート1」で、その中に作ったテキストボックス名は「出力データ」 フォーム1とレポート1を立ち上げてフォームのテキストボックスにデータを入力した後、 コマンドボタンを押してもレポート1のテキストボックスに入力したデータが表示されません。 レポート1を選択した後にデザインボタンを押し、その後にもう一度立ち上げると、 なぜかデータが書き込まれています。 コマンドボタンを押したのと同時にレポート1にデータが表示されるようにするには どうすれば良いですか? プログラムは以下の様になっております。 (1)クラスオブジェクト下 Private Sub コマンドボタン_Click() Call レポート書き出し() End Sub (2)標準モジュール下 Public Function レポート書き出し() Dim F As Form Dim R As Report Set F = Forms![フォーム1] Set R = Reports![レポート1] R![出力データ] = F![入力データ] End Function