• ベストアンサー

アクセス2000でフォームに入力したレコードを表示させたいのです

初歩の質問ですがよろしくお願い致します。 顧客TBを作成して、それを単票フォームで入力 できるようにしています。 同一フォームにサブフォームを設けて入力したレコードを 登録毎にサブフォームへ一覧表示させるにはどうしたらよいでしょうか サブフォームに直接入力していくと可能なのですが できれば上記のような形で行ないたいのです。 それとサブフォームでは編集できないようにすることは出来ますか? 宜しくお願い致します

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

  • ベストアンサー
  • souta_n
  • ベストアンサー率33% (79/234)
回答No.4

うーん、それは親子リンクフィールドの問題です。 ちょっとそのシステムからはなれて、サンプルを作成してみてください。 作成方法は下記に従ってください。 ○テーブルの作成 1.テーブルを作成します。テーブル名は「T_入金明細」とします。 2.フィールドは、ID=オートナンバー・主キー、科目=テキスト、金額=数値・長整数型 3.下記のサンプルデータ入力 ============================ ID  科目  金額 1   現金  1000 2   手形  2000 3   相殺  1500 ============================ ○クエリーの作成 1.T_入金明細を元となるクエリを作成します。名前は「Q_一覧表」とします。 2.このクエリーには科目と金額のフィールドセットしておきます。抽出条件はとりあえず無しです。 ○メインフォームの作成 1.T_入金明細を元となるテーブル/クエリーとして単票形式でオートフォームによりメインフォームを作成します。 2.名前は「MF_入金入力」とします。 ○後でサブフォームとなるフォームの作成 1.Q_一覧表を元となるテーブル/クエリーとして、データシート形式でフォームを作成します。 2.名前は「SF_入金一覧」とします。 ○メインフォームにサブフォームを作成する。 1.MF_入金入力をデザインで立ち上げます。 2.ツールボックスより、サブフォーム/サブレポートのボタンをクリックし、フォーム内の任意の位置でドラックしサブフォームのオブジェクトを作成します。 3.作成したサブフォームのプロパティを下記の通り変更します。 名前=一覧表 ソースオブジェクト=SF_入金一覧 タブストップ=いいえ ○サブフォームの内容更新のコードを作成する。 メインフォームのテキストボックス金額のフォーカスの喪失時のイベントに次のコードを作成します。 ===================================== Private Sub 金額_LostFocus() 一覧表.SourceObject = "SF_入金一覧" End Sub ===================================== あとは適当にデータを入力してみて下さい。金額を入力後、エンターキーを押した時点でサブフォームに入力データが反映されるはずです。 できましたか? メインサブフォームはウイザードなどで簡単に作れますが、各プロパティがどういう設定なのか、レコードソースやソースオブジェクトの関係など概念的なものもしっかり勉強してがんばってください。

mehiro2
質問者

お礼

上手く出来ました。 本当に詳細丁寧に御指導いただきまして ほんとうに有難うございました。 まだまだ勉強不足なのでこれから 頑張って勉強していきたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • souta_n
  • ベストアンサー率33% (79/234)
回答No.3

再び登場しました。 >そのソースオブジェクトを探しているのですが >見当たりません。 それはデータベースウインドのフォームタグの中に並んでいるフォーム名(入金伝票一覧 )のところで右クリックして、ショートカットメニューからプロパティを表示したんじゃないですか? 下記の手順で確認して下さい。 1.問題の単票フォームをデザインビューで表示します。 2.一覧表示するサブフォームの所でマウスの右クリックをします。 3.ショートカットメニューからプロパティを選択します。 4.プロパティが表示されます。プロパティのタイトルバーには、「サブフォーム/サブレポート:入金伝票一覧サブフォーム(多分そんな名前でしょう)」と表示されているはずです。 5.プロパティには、書式・データ・イベント・その他・すべて、というタグが並んでいます。その中のデータタグをクリックします。 6.データの項目の中にソースオブジェクトがあります。 どうもオブジェクト名が分からないので説明がしにくいので、出来ましたら、 メインサブフォームの メインフォーム名、メインフォームに貼り付けてあるサブフォームオブジェクトの名前、サブフォーム名を教えてください。

mehiro2
質問者

補足

すみません。やっと教えていただいた方法で判りました。 入金伝票一覧となっていました。 これで試したら、入力したデータのみがサブフォームに表示されています。既に登録してあったデータ表示が見える ようにはならないのでしょうか? 質問の仕方が悪くて申し訳ございません。 サブフォームは10行ぐらい表示できるようにしているのでリストボックスのようなイメージで登録毎順々にサブフォームに表示させてたいのです。 すみませんがよろしくお願い致します。

すると、全ての回答が全文表示されます。
  • souta_n
  • ベストアンサー率33% (79/234)
回答No.2

再度登場しました。 多分解釈間違いだと思うのですが。 オブジェクト名がはっきり分からないので、推測でしかアドバイスできませんが 入金伝票一覧サブフォーム.SourceObject="入金伝票入力フォーム"ではなく 入金伝票一覧サブフォーム.SourceObject="入金伝票一覧サブフォーム" というコードじゃないかなぁと思います。 入金伝票入力フォームにサブフォームが貼りついているのですよね・・・貼り付いている入金伝票一覧サブフォームのプロパティのソースオブジェクトを見てください。そのソースオブジェクトをもう一度入れなおすという意味のコードなのです。 サブフォームは、レコードの内容を更新したからといって、リアルタイムに更新内容が反映されません。 ですから、更新内容を反映させる為に、都度ソースオブジェクトをセットしなおすという意味です。 それから、イベントは備考のキー入力時でも支障無く動けば別に問題ないですが、もし私ならコマンドボタンを一つ作ってタブオーダーを備考の次に設定してから、そのボタンのクリック時イベントに先のコードと DoCmd.GoToRecord , , acNewRec '新しいレコードに移動するコード を追記すると思います。備考のキー入力時イベントですと入力データがない場合先のコードも実行されないような気がします。

mehiro2
質問者

補足

何度もすみません。 そのソースオブジェクトを探しているのですが 見当たりません。 プロパティを開くと標準のタブがあって入金伝票一覧 としか書いていません。 あとは説明のテキストボックスがあるだけなんですが

すると、全ての回答が全文表示されます。
  • souta_n
  • ベストアンサー率33% (79/234)
回答No.1

=前提条件= 単票フォーム内のサブフォーム名を例えば「SF」というオブジェクト名とします。 サブフォームの元となるフォームオブジェクト名を例えば「SF一覧表」とします。 =イベントプロシージャを作成する= 単票フォームでデータを入力した際のイベントで SF.SourceObject="SF一覧表" というコードを記入します。これにより入力したデータが反映されたSF一覧表の内容が単票フォーム内のサブフォームに反映されます。 =サブフォームで編集できないようにする= SF一覧表のフォームのプロパティのデータタグの中 更新の許可・削除の許可・追加の許可をすべて「いいえ」にします。

mehiro2
質問者

補足

早速お返事ありがとうございます。 再度ご質問で申し訳ございませんが オブジェクト名とはフォームの名前ですね それとデータを入力した際のイベントとは、最終項目が 備考であった場合、その備考のイベントはキー入力時で良いのでしょうか? ちなみに 入金伝票一覧サブフォーム.SourceObject="入金伝票入力フォーム" とするとサブフォームの内容が消えてしまいます すみませんが解釈方法が違っていますでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A