• 締切済み

アクセスで同じ値を引き出してくる方法

アクセス初心者です。 フォームのテキストボックス(txt開催日)に『12345』と言う値が入っています。 テーブル(T_受講料)で『12345』は『5000』と言うテーブルを作っています。(他、多数のデータがあります) そのテーブルは単独でリレーションを結んでいません。(構造上無理なため) どうやったら、フォームに新たに作ったテキストボックスに『5000』を入力できるのでしょうか? よろしくお願いします。

  • Yuuho
  • お礼率54% (434/803)

みんなの回答

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

訂正です。 コントロールソースなのに、つい手がすべって(^^; =DLookUp("受講料","T_受講料","受講料ID='" & [txt開催日] & "'")

Yuuho
質問者

お礼

ありがとうございます。 私の作り方が悪いのか、やはりエラー(#Name?)が出てきます。 違うやり方で、金額を出してみることにします。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

txt受講料のコントロールソースを =DLookUp("受講料","T_受講料","受講料ID='" & Me.[txt開催日] & "'") ですね。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

やることは簡単なんですが、提示されている条件が不足しているため、レスが付きにくいようです。 T_受講料のフィールドの情報(名前、データ型) フォームが連結か非連結か。 連結の場合、単票か帳票か。 連結の場合、取得した値をテーブルに保存する必要があるのか、見せるだけで良いのか。 (すなわち、金額のコントロールソースがテーブルのフィールドであるか?) テーブルに保存しなくてよい場合の回答例 (T_受講料)に「開催日」と「受講料」というフィールド(いずれも数値型)があるものとして、 金額のテキストボックスのコントロールソースを =IIf(Not IsNull([txt開催日]),DLookUp("受講料","T_受講料","開催日=" & [txt開催日]),Null) フィールド名はご自身のものに合わせてください。 開催日が数値型以外の場合は、「'」(テキスト型)、「#」(日付/時刻型)で括る必要があります。 金額のテキストボックスがテーブルに連結している場合は、 txt開催日の「更新後処理」で If IsNull(Me.txt開催日) Then   Me.txt金額 = Null Else   Me.txt金額=DLookUp("受講料","T_受講料","開催日=" & [txt開催日]) End If というところですかね。 型による変更は前述。

Yuuho
質問者

補足

ありがとうございます。 沢山、記入事項が不足していて申し訳ございません。 私なりに、上記の方法で試してみたのですが、エラーが出て出来ませんでした。 不足分を明記いたします。 T_受講料は、 主キー:受講料ID(テキスト型)     受講料(通貨型) から、構成されています。 金額を入力したいフォームのテキストボックス(txt受講料)は、『非連結』になっています。 単票型で作成しています。 テーブルに保存は考えていません。(フィールドがありません) よろしくお願いします。

関連するQ&A

  • フォーム上のテキストボックスの値を変更させない方法って?

    アクセス2000を使っています。 フォーム上にテキストボックスを作成して、テーブル の値を表示しています。 VBAでこのテキストボックスの値が1の時は, me!txt.enabled=true(テキストボックスが開く) 0の時は、me!txt.enabled=false(テキストボックスがグレーアウト)というようにさせたいのです。さらにこのテキストボックスの値を変更できないようにしたいのですが方法はありますか? 要は、表示だけさせたいのです。 プロパティで値ロックするとenableが利かなくなります。 よろしくお願いいたします

  • Accessのフォームで値が見た目変更されない

    はじめまして、こんにちは。 Accessを使用して自社ツールを作成しています。 バージョン:Access2003 OS:WindowsXP フォームのレコードソースに、あるテーブルを連結させて一覧にして表示しています。 複数のコンボボックスを用意して、選択された値によって検索をかけ、 レコードソースの値を書き換えて再表示しています。 この検索はコンボボックスの更新後処理にVBAでSQLを記述して行っています。 Dim str_sql As String str_sql = str_sql & "select * from T_テーブルA where ○○コード = 1" Me.RecordSource = str_sql かなり省略していますが、実際はコンボボックスで選択された値によって SQLを生成しています。 フォームにはtxt_件数という名前でテキストボックスを用意してあります。 レコードソースを設定した後に、同じ条件でカウントし件数を表示しようと しているのですが、これがうまくいきません。 Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) 件数が1件でもある時は正しい値が表示されます。 0件の場合は前回の表示のまま見た目上かわりません。 例) 1回目の検索で200件→テキストボックス[200]と表示 2回目の検索で0件→テキストボックス[200]と表示 3回目の検索で10件→テキストボックス[10]と表示 このような感じです。 ただし、実際は正しい値[0]が設定されているみたいです。 別のウインドウを一度フォームにかぶせて避けると[0]になりますし、、 2回目で[200]と表示されているものをコピーすると[0]がコピーされます。 Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) If Me!txt_件数 = 0 Then Me!txt_件数 = 0 End If 馬鹿げていますが、このようにしても正しく[0]が表示されませんでした。 Accessを再起動しても状態は変わらず、困っています。 環境の問題でしょうか? 解決策など解る方いらっしゃいましたら教えてください。 よろしくお願いいたします。

  • Access200xにおいて、VBAの変数の値をリストボックスのRowSource内で参照する方法はありますか?

    Access初心者です。説明不足なところなどありましたら、ご指摘ください。 フォームにテキストボックスとリストボックスを配置し、テキストボックスに入力した値をVBAで加工して、その加工された値をキーにDBを参照して、リストボックスに表示したいと考えています。 テストの手順を簡単に説明します(この問題はデータの加工自体にはないと考えているので、入力された値をそのままキーにして値を取得しています。) 1.テーブル作成(テーブル名:tblTEST) テーブル構造 ID DATA 1 あああ 2 いいい 3 ううう 2.フォーム作成(フォーム名:frmTSET) 3.frmTEST内にテキストボックス作成(オブジェクト名:txtTEST) 4.frmTEST内にリストボックス作成(オブジェクト名:lstTEST) RowSourceプロパティの値に SELECT [tblTEST].[DATA] FROM tblTEST WHERE ID=[strTEST]; 5.VBAでtxtTESTのChangeイベントに以下のコードを記述 宣言部 Dim strTEST As String 関数部 Private Sub txtTEST_Change() strTEST = txtTEST.Text lstTEST.Requery End Sub 期待する動作は、テキストボックスに1と入力したらリストボックスに「あああ」が表示される。という動作なのですが、テキストボックスに値を入力すると、「パラメータの入力」ダイアログが表示され、strTESTの値を入力するよう促されてしまいます。 恐らく、txtTEST_Change()関数でstrTESTにはテキストボックスの入力値が入っていますが、手順4の条件句のところで、strTESTの値が取れてないのだと思います。この条件句のところでVBAの変数を参照するにはどのように記述すればよいのでしょうか? 尚、上記のやり方はAccess2003及び2007でテストしてダメでしたが、Access97では動作するようなのです。 他の手法で同様の動作を実現する方法はいくつか思いつくのですが、Accessのバージョンアップによる作業を減らすため、上記のような方法によって、この機能を実現させたいと考えています。 よろしくお願いします。

  • AccessのVBAにおいて,アクセスフォームに表示されている「値」を

    AccessのVBAにおいて,アクセスフォームに表示されている「値」を変数の中に格納したい。  例えば,オートフォームの単票形式でフォームを作成した場合,「番号」「製品」といったフィールドが2個あるテーブルを使うと,「番号」「製品」という名前のテキストボックスが2個ほどできます。 (フィールド名やテキストボックス名は問題ではありません。) このフォーム上に「ボタン」を配置し,このボタンをクリックした時に,「製品」というテキストボックスの内容を,メッセージボックスで表示させたい。 MsgBox (Me.製品.Text) と書いてもエラーとなります。 実際には,このフォームで欲しいデータを見つけた時,ボタンクリックで,テキストボックスに表示されている内容をグローバル変数に格納したいのですが,方法が分かりません。 Access 初心者です。どなたかよろしくお願いします。

  • MS ACCESSテキストボックスの値のリンク

    みなさんこんにちは! MS ACCESSで、フォームを作成いたしました。 そのフォームにはサブフォームが挿入されており、サブフォーム側で入力した値の合計を計算するテキストボックスを作りました。そしてその合計の値を、メインフォームに設けたテキストボックスに反映させたいのですが、なかなかうまく行きません・・・どうしたら値が反映するようにできるでしょうか? 初心者な者で質問ないようが分かりにくいかと思います。不足等ございましたら教えていただけると幸いです。 よろしくお願い致します。

  • アクセスにて、フォームのテキストボックスの値をテーブルにコピーしたい

    初めて質問させていただきます。宜しくお願いします。 アクセスで、 ===フォーム上にある非連結テキストボックスに、日付を入力し、コマンドボタンをクリックすると、テーブルにある日付のデータをクリアし、その後フォーム上のテキストボックスに入力した日付を挿入===の方法を教えていただきたいと思います。 CurrentDb.Execute "DELETE * FROM T_設定日;" CurrentDb.Execute "INSERT INTO T_設定日(設定日) VALUES ('Me![年月日]');" 上記でやってみたところ、データのクリアはされるのですが、その後、テキストボックスに入れた日付は入りません。エラーは出ません。 アクセス初心者で、分かりにくい説明と思いますが、宜しくお願いします。

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

  • Access2010 テキストの連結

    よろしくお願いします。 Access2010を使用しております。 非連結のフォームに入力した情報を、 保存ボタンで、テーブルに追加しております。 そこで、サブフォームにある複数のテキストボックスをボックス毎に改行して、 一つのフィールドに入れたいと思っております。 一つ一つのテキストボックスは別テーブルを作っておりますが、メインにしているテーブルには、一つのフィールドに入れたいのです。 txt箱1、txt箱2、…txt箱20の空白ではないテキストボックスを改行して、一つのフィールドに追加したいです。 テキストボックスが、ランダムに記入されていたり、空白が間にあると、 うまく一つのフィールドに入れることができません。 改行が何個も入った箇所ができてしまいます。 間に空白があっても、改行を綺麗に入れて、 一つのフィールドに入力させるには、どうしたらよろしいでしょうか。 お世話になりますが、よろしくお願いします。

  • AccessのDlookup関数のエラー

    【Access2003】 dlookup関数について教えてください。 やろうとしていることは、ある商品について任意の日付の時点での数量を表示したく、 練習として、 DLookup("[数量]", "t_商品情報", "[品番] = '"& "1001" & "' and [日付] = #" & "2007/12/17" & "#") と記述したときには正常な値が表示されました。 その後、「品番」と「日付」をフォーム上のテキストボックスで任意の値を入力したいと思い、下記のように書き直しました。 DLookup("[数量]", "t_商品情報", "[品番] = '"& "[Forms]![フォーム1]![txt品番]" & "' and [日付] = #" & "[Forms]![フォーム1]![txt日付]" & "#") フォームのテキストボックスにそれぞれ値を入力したところ、「日付の構文エラー」となってしまいました。 勉強不足なのでしょうか、原因がわからず困っております。 お詳しい方のアドバイスをお待ちしております。宜しくお願い致します。

  • Accessのサブフォームから値を参照する方法について

    いつも拝見させて頂いております。 現在、Access97のフォームに以下のようなコントロールを配置しています。 1.フォームにサブフォームAを配置  1-1.サブフォームAにテキストボックスAを配置(入力用) 2.フォームにサブフォームBを配置  2-1.サブフォームBにテキストボックスBを配置(表示用) ※フォームは一つです。 <実現したい事> サブフォームA内のテキストボックスAの値をサブフォームB内の テキストボックスBに表示したいのですが、なかなかうまくいきません。 サブフォームA内のテキストボックスAの値を変更するとサブフォームB内の テキストボックスBも変更するようにしたいので、テキストボックスBの ControlSourceに[Form]![フォーム]![サブフォームA].[Form]![テキストボックスA] としましたが実現できませんでした。 どのような方法をとれば実現できるでしょうか? 宜しくお願いします。

専門家に質問してみよう