Access2007でフォーム内のテキストボックスとテーブル内のデータを参照する方法

このQ&Aのポイント
  • Access2007でフォーム内のテキストボックスに入力した文字列と、テーブル内のデータを参照する方法について教えてください。
  • テーブルAとフォームBを作成し、テーブルAの答えフィールド内のデータをフォームB内の解答テキストボックスと比較します。
  • 同じデータがあった場合はフォームCを開き、データがなかった場合はフォームDを開くようにしたいです。どうすれば実現できますか?
回答を見る
  • ベストアンサー

Access2007で。

Access2007で。 今Access2007を使ってちょっとしたシステムを開発してるのですが、フォーム内のテキストボックスに入力した文字列と、テーブル内のデータを参照する事ってできるのでしょうか? 例えば テーブルA、フォームBとして テーブルAには 問題番号 問題文 答え 上記のフィールドがあり、 フォームB内の解答テキストボックスと、テーブルAの答えフィールド内データを参照し、 同じデータがあった場合はフォームCを開き、データがなかった場合はフォームDを開く。 このような形にしたいのですができるのでしょうか? 無知な質問で恐縮ですが、ご教授ください。

  • uvy
  • お礼率33% (1/3)

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

  • ベストアンサー
  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

できます。  クエリを使って 検索します。 SELECT * FROM テーブルA、WHERE テーブルA.答え = フォームBの回答txt です。 通常は文字列ですべて完全一致とはいかない場合が多いので = ではなく LIKE を使ったクエリになると思います。 問題の解答ですが ラジオボタンで 4択にするほうが 検索も簡単です。 文字列での検索は 不一致になる可能性もあります。 VBA で検索を行う場合は ADOもしくはDAO でのクエリ検索、Dlookup での検索のいずれかを行うことになります。 ■ ADOとDAOを使用したクエリの抽出条件式で、* と % の動きの違い http://www.nurs.or.jp/~ppoy/access/access/acM075.html ■DLookup 関数 : http://office.microsoft.com/ja-jp/access/HA012288251041.aspx フォームを開く方法 Dim varX As Variant varX = DLookup("[得意先名]", "得意先", "[得意先コード] = 1") IF varX <> empty then DoCmd.OpenForm "フォームC" else DoCmd.OpenForm "フォームD" End If 上記のコードをマクロで記述することもできます。  Access の マクロ を開き 同じ処理ができます。  

uvy
質問者

補足

クエリ、VBA両方の丁寧なご説明ありがとうございます! フォームの部分のテキストボックスには直接文字列を入力して、その入力した文字列をテーブルと照合したいのですがそれでもせきますか?

その他の回答 (2)

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.3

#1 です。 すみません。 1から全部 は教えられません。 ネットで調べて 基本的なことはマスターしてからのほうがいいです。 答えは #1,#2 に書いている通りです。 全部、教えてくださいは質問ではありません。 #1に載せている サイトほか下記などを よく読んでください。 ■ Access実践入門/マイクロソフトアクセス、単票入力フォーム http://www.msactry.com/down701/tan01.htm やり方がわかってきたら質問したほうがいいです。

uvy
質問者

お礼

すいません。失礼しました。 そんなつもりではなかったのですが。 ご協力ありがとうございました。

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.2

#1 です。 >>フォームの部分のテキストボックスには直接文字列を入力して、その入力した文字列をテーブルと照合したいのですがそれでもせきますか? #1 で答えていますが・・・ マクロおよびVBA などを使う以外に方法はないです。 操作を行うには ボタンを配置して そのボタンが押された場合にマクロもしくはVBAを 実行します。 意図していることと意味が違いますか?

uvy
質問者

補足

いえ、初心者なものでよくまだわからなくて・・・すいません。 この動作をVBAで一気にフォームを開くことまでをしたいのですが、教えていただいた構文を入力してもできなくて・・・ どんなVBAにしたらいいのでしょう?

関連するQ&A

  • Access クエリの最大項目数

    教えてください。 開発環境はAccess97です。 複数テーブルを互いに結合し、一つの選択クエリー[A]を 作成した後、フォーム[B]に関連付けて[B]上のテキスト ボックスで[A]のデータを表示したいと思います。 (一つのテキストボックスは一つの項目を表示する) 選択クエリーのフィールド数は最大128個までしか 設定できないと思うのですが、 フォーム[B]に一度に300個程度のデータを表示するには どうすればよいのでしょうか? サブフォームを使用せずにこれを実現することは可能でしょうか?

  • アクセスVBA テキストボックス入力値からの参照

    マイクロソフトアクセス初心者です。 現在、アクセスでデータベースを作成しています。 2つのフォーム(フォーム(1)、フォーム(2))、2つのテーブル(入力情報、マスタ)、2つのテーブルをもとにした1つのレポートを作成しています。 『フォーム(1)』のテキストボックスAに入力された値を、Dlookup関数で『フォーム(2)』のテキストボックスBに数値を参照しています。 『フォーム(2)』のテキストボックスに表示された値を、『フォーム(2)』に設置されたコマンドボタンをクリックすると、VBAで『テーブル入力情報』のフィールドAに入力されるようにしています。フィールドAについてのマスタとなるテーブルが『テーブルマスタ』です。 リレーションシップを設定せず、ただ単に値を入力することは出来るのですが、レポートを作成するにあたって、『テーブル入力情報』と『テーブルマスタ』のフィールドAに1(テーブルマスタ)対多(テーブル入力情報)のリレーションシップを設定したいと思っています。 リレーションシップを設定し、テキストボックスBに表示された数値を『テーブル入力情報』に入力する際、『テーブルマスタ』から該当するデータを選択して『テーブル入力情報』に入力されるようにしたいと思うのですが、現状では、リレーションシップを設定すると、入力値が真っ白になってしまい、レポートにも入力したデータが反映されません。 ちなみに、入力する際はフィールドA=Me.テキストボックスBのようにしています。 何か良い解決策がありましたら、是非教えていただけませんでしょうか? 分かり難い文章かと思いますが、どうぞ宜しくお願い申し上げます。

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • ACCESSのテキストボックス内の任意の文字

    お世話になります。 宜しくお願い致します。 ACCESS2010についてになります。 [フォームA]の[テキストボックスa]に、ある文字が含まれていたら、[テーブルB]の[フィールドb]を検索して、[フィールド'c]の値を[フォームA]の[テキストボックス'a]に表示させたいと思います。 (例) 『信長』が入っていたら、検索結果を表示させる。 [フォームA] [テキストボックスa] 『徳川家康』 ⇒  検索しない。 『織田信成』 ⇒  検索しない。 『織田信長』 ⇒  [テーブルB][フィールドb]を検索する。 [テーブルB] [フィールドb] [フィールド'c] 明智光秀 あけちみつひで 織田信長 おだのぶなが ⇒ 結果を表示する。 [フォームA] [テキストボックス'a] おだのぶなが おわかり頂けますでしょうか。 上手く表現できずにすみません。 お手数ですが、ご教示頂ければと思います。 宜しく、お願い致します。

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

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

  • access

    accessの超初心者で文がおかしくなるかもしれませんがよろしくお願い致します。 フォームのテキストボックスに計算した答えを出したいのが私のしたい質問です。 具体的には同テーブル内にある       A 100       B  50 の引き算の答えを表示させたいのですが具体的にはどういった方法をとればいいでしょうか? テーブル内のA、Bは直接入力しているのでテキストボックスにはその答えが何らかの方法で表示させればいいのですがその方法が皆目見当がつかずよろしくお願い致します。

  • ACCESSでVBを使って特定のデータを変更したいのですが・・・

    ACCESSのVB初心者です。 専門書も買って読んでるのですが、どうにも行き詰ったので質問させてください。 今やろうとしているのは、データNoが入るフィールドと文字列が入るフィールドの2つのフィールドから出来ている「Aテーブル」を作ってあり・・・フォームのテキストボックスに入力された任意の数字とAテーブルのデータNoを照合し、同じ番号を処理するコードを打ち込みたいのですが、どうにもやり方がわかりません。 フォームで「12」という数字をテキストボックスで指定し、「新規追加」をすると、Aテーブルに12のデータNoがない場合は、Aテーブルに12というデータNoと文字列を追加し、「データ削除」をすると、AテーブルのデータNo12を削除と言う感じでやりたいのですが・・・。 どなたか知識のある方、教えてくださいませ。 または、このサイトを見れば分かるんじゃないかと言う情報もお待ちしております。

  • アクセス2000でデータの追加がうまくいかないんですけど

    アクセス2000を使ってます。 基礎データというテーブルを作って、そこに「テキスト」というメモ型のフィールドを作り、 参照追加フォームというフォームを作って、その中に二つのテキストボックスを配置し、一方のテキストボックス1には「基礎データ」の「テキスト」をコントロールソースとして設定し、他方のテキストボックス2は非連結にし、コマンドボタンを二つ配置して、一方のコマンドボタン1を押すと、テキストボックス1のデータがテキストボックス2のデータにコピーされるようにVBAコードを書き、さらに、もうひとつのコマンドボタン2を押すと、非連結のテキストボックスのデータを、基礎データテーブルの「テキスト」というフィールドに追加する追加クエリを動かすようにしました。  このような状況で、コマンドボタン2を押すと、非連結のテキストボックス2のデータが、全角126文字までなら正常に動作するのですが、それ以上(全角127文字以上)になると、「引数が無効です。」というエラーが出てしまいます。 基礎データテーブルの「テキスト」はメモ型に設定してあるのに、どうしてこのようなエラーが出てしまうのでしょうか?誰か教えてください。  ※ためしに、追加クエリ単独で動かして、全角127文字以上のデータを入れた場合には、追加クエリは正常に動作します。これって、フォーム側の問題なんですか?  

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • 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」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。

専門家に質問してみよう