• 締切済み

Access アクセス VBA レコード追加

Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1

みんなの回答

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

>Access アクセス VBA レコード追加 ★失礼しました。  コマンドボタンをフォームに配置すれば、埋め込みマクロになりますが  何かのボックスのイベントから次の命令文を記述するのもあります  DoCmd.GoToRecord , , acNewRec ★おまけです  DoCmd.GoToRecord , , acFirst  DoCmd.GoToRecord , , acPrevious  DoCmd.GoToRecord , , acNext  DoCmd.GoToRecord , , acLast ★以下も行けそうです  DoCmd.GoToRecord , , 7

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

今晩は 前回の回答は別のQへの回答で大変失礼しました。 Access アクセス VBA レコード追加 >フォームからのレコードの追加方法を教えてください。 ★フォームの基本機能の一つです。  最初のレコード、前のレコード、次のレコード、最後のレコード、レコードの追加  フォームを開くと下辺にアイコン表示されています。 ★テーブルをデザインすると「テーブル」に追番の名前が付きますが、  意味のある名前に変更します  命名はテーブルの使用目的が分かるようにアルファベット一文字を  先頭に付けるとよいでしょう M:マスタ,T;トランザクション,S;サブ、参照  次のようにします。  M窓口   ・ID(主キー)   ・窓口   ・コストセンターID(コストセンターへのリレーション用 長整数型 ----------  Mコストセンター  ・ID(主キー)  ・コストセンター(インデックスプロパティで 重複なし)  ・目的(短いテキスト型) ---------- >メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。  新規登録用のフォームにレコードを入力してもテーブルに反映されません。  新規登録用のフォームは下記のように作成しています。  メインフォームにはサブフォームで各テーブルが表示されています。 ★オートナンバー型のIDは自動採番され、リレーションシップと連携するので  お任せでフォーム上に配置する必要ありません >また、フォームに”コストセンター”を入力したときに入力したレコードが  テーブル2にあっても自動で”目的”が表示されません。 ★そうですね、テーブル1を一度閉じて、開いてください  どうやら、テーブル1は開く前に、テーブル2のレコードのみが反映するようです ★サブフォームのあるフォームにすると一挙に解決です フォームを添付して置きます  

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

こんにちは >フォームからのレコードの追加方法を教えてください。 ★フォームを開くと下辺に「先頭のレコード、次のレコード、  最後のレコード、新しいレコード」のアイコンが表示されます。  これをクリックします 色々考えておられるのは分かりますが、 要は<案件の一覧をデータシート形式で表示させています。> の為案件の情報全てを一行では収まりきらないためと推察しました。 特に案件内容はA4用紙数ページなると思います。 このようなフィールドのデータ型を長いテキスト型にし、 フォームデザインでEnterキーで行の追加でボックスは スクロールバー機能が働き際限なく可能です また行からはみ出すフィールドはフォームフッターに配置します 添付をご覧ください ------------------------------------------------------ 以下は蛇足ですので読み飛ばして頂いて構いません。 >T_案件の案件名の抽出条件  (Like "*" & [forms]![F_弁護士]![氏名] & "*")と設定して ★ここでは曖昧検索は意味がないでしょう >(SF_弁護士から案件のサブフォーム)の  一覧からそれぞれの案件IDをクリックして ★突然SF_弁護士が出てきましたね  F_弁護士と違いがあるのですか >個々の案件を特定し、F_案件でそれぞれの案件IDをクリックして  個々の案件を特定し、F_案件で表示オープンさせたいと考え、  クリック時の埋め込みマクロでフォームを開く[F_案件]、  表示オープンさせたいと考え、クリック時の埋め込みマクロで  フォームを開く[F_案件]、  Where条件式、[ID]=[Forms]![SF_弁護士から案件のサブフォーム]![ID]

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.1

こんにちは >Access アクセス VBA レコード追加 ★失礼ながらAccessは初めてですね  質問の何処にもVBAの必要な個所は在りません  単純なVBAは、単価の入力の後、金額=数量×単価計算でしょう ---------------------------------------  Private Sub 単価_Exit(Cancel As Integer)   金額 = 数量 * 単価  End Sub ---------------------------------------- >テーブル1  ・ID(主キー)  ・窓口  ・コストセンター  ----------  テーブル2  ・コストセンター(主キー)  ・目的 ★テーブルとリレーションシップはアクセスの命です。  テーブルのデザインを疎かにしてはなりません。  自分の心掛けている主な物を列挙します  1.ID (オートナンバー型で長整数)  2.顧客名、商品名等はインデックスプロパティーで重複無し  3.自動フリガナ機能を定義する。以前は並び替えの為CODEを   定義していました  4.サブテーブルの主テーブルにリンクするフィールド名を   主テーブル名+ID データ型:数値型の長整数  以上を踏まえてテーブルは次のようになります   尚、テーブル1を窓口、テーブル2をコストセンターとします。  窓口  ・ID(主キー)  ・窓口  ・コストセンターID:長整数型  ・フリガナ  ----------  コストセンター  ・ID(主キー)  ・コストセンター:インデックスプロパティーで重複無し  ・目的  ・フリガナ 今回は以上ですが、この他  ・テーブルデザインのルックアップ設定  ・リレーションシップ  ・フォームデザイン についてお知らせしたいのですが、何かコメント下さい   

関連するQ&A

  • Access2013 vbaサブフォームのレコード

    [Access2013 vba] ■したいこと サブフォームのレコードの中から、一レコードだけをチェックボックスなどで選択したいのですが、どのようにしたら出来ますでしょうか。 複数行選択は出来ないようにしたいです。 選択したのち、メインフォームの選択ボタンを押すと、そのレコードのID番号を取得して、呼出元のフォームのIDフィールドに代入したいです。 ■画面の流れ・・・ Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→ B 'メインフォームとCサブフォーム)が開く Cサブフォームのレコードをチェックボックスにチェックを入れて選択する B ' メインフォームの「選択」ボタンを押すと B ' メインフォームと、その前のBフォームが閉じて Aフォームに戻り、AフォームのIDフィールドに選択したIDが格納される。 よろしくお願いします。

  • Accessでメイン、サブフォームへの入力について

    accessほぼ初心者です。 取引先の会社情報を管理するために、access2007で顧客管理を作成しています。現在、取引先本社情報とその支店情報を登録するフォーム「会社登録フォーム」を作成していますが、次のようなことで困っています。 <問題としていること>: 「サブフォーム」をクリックした瞬間に、テーブルにレコードが追加されてしまう。 <改善したいこと>: 本社テーブルの会社名が未入力ならば、上記の操作でレコードを追加しない。(会社名に主キーは設定していません。) <会社登録フォームの環境>: 会社の本社情報をメインフォーム、その会社の支店情報をサブフォームに、単票形式のタブコントロールで複数画面にして支社ごとに分けて入力できる登録フォームを作成しました。本社テーブルの会社IDを主キーに、支店テーブルの支店IDを主キーにしてリレーションシップを設定しています。 <会社情報の入力に関して行っていること>: ・メインフォームに「新規」「更新」「削除」ボタンを設置。 ・新規ボタンでメインフォームの「会社ID」に自動採番。 ・会社(本社)名がないと困るので、未入力の状態で「新規」「更新」及び「サブフォーム」をクリックされた際に「会社名が未入力です。」のメッセージを表示され「OK」で元の状態にもどります。 ・会社(本社)名が入力済みならば、「更新」ボタンで、メッセージ「OK」「キャンセル」が表示され、「OK」ならば本社テーブルにレコードが追加され「キャンセル」ならばそのままの状態になります。 上記の<問題としていること>の補足ですが、新規ボタンで新規登録フォームに会社IDが自動採番(末番)されるのですが、「会社名」を入力せず、先にサブフォームの支店情報から(タブ名「支店(1)」)入力しようとした場合、「会社名が未入力です。」のメッセージを表示されますが、この時点で本社テーブルに、この採番でレコードが追加されてしまいます。入力者がそのまま会社名(本社)から入力するも、途中でキャンセルした場合、再度新規登録をする際、登録フォームの自動採番がキャンセルされた採番の次の番号になります。 キャンセルされた会社情報空白のレコードができるということになります。これを回避したいのです。 出来るだけ詳細をとおもい説明が長くなりましたが、よろしくお願いいたします。

  • アクセス2003 - レコード追加について

    同期の代理質問です↓ 新規レコードを入力するフォーム(サブフォームも作成)を作り、コマンドボタンを押すと、サブフォーム(全レコード表示させている)に入力したレコードを追加させる場合、どうしたらいいのでしょうか?   ちなみに、サブフォームに追加されたレコードは、 自動的に昇順に並べ変わるしくみにしたいのですが・・・ 宜しくお願い致します☆

  • Access サブフォームのリレーションに関して

    標記の件よろしくお願いします。 メイフォームとサブフォームを メインフォーム ID オートナンバー型 主キー設定設定あり。 サブフォーム  ID 数値型(長整数) 主キー設定なし。 の条件でリレーションしてあります。 現状ではメイフォームのIDとサブフォームのIDを を別々に手入力しています。 メインフォームのIDを入力したらサブフォームのIDが自動的に 同じ数値で表示されるような設定をするにはどのようにすれば よいのでしょうか。 また、新規データを入力する際に レコードセレクタにて空の入力欄を表示させて 前回のデータの入力を確定させているのですが これ以外の方法はありますでしょうか? この方法だと他の担当が操作した場合に いつデータ入力が完了したのか 次のデータを入力するにはどうすればよいのか 分かりづらいのではないかと思います。 上記2点どちらかでも構いませんので アドバイスお願いいたします。

  • Access2007 「レコードを追加できません」

    Access2007で困っております。 フォーム上からテキスト型のデータを入力しようとしても 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されうまく入りません。 【テーブル構成】 ★が主キー (1)T_アルバム ★アルバムID テキスト型 アルバム名 テキスト型 ジャンルID テキスト型 ソースID テキスト型 アーティストID テキスト型 (2)T_曲目 ★曲ID テキスト型 曲名 テキスト型 トラックNo テキスト型 アルバムID テキスト型 (3)MT_アーティスト ★アーティストID テキスト型 アーティスト名 テキスト型 (4)MT_ジャンル ★ジャンルID テキスト型 ジャンル名 テキスト型 (5)MT_ソース ★ソースID テキスト型 ソース名 テキスト型 【リレーション】 ※いずれも参照整合性付き (1)T_アルバム アルバムID --- (2)T_曲目 アルバムID (1)T_アルバム アーティストID --- (3)MT_アーティスト アーティストID (1)T_アルバム ジャンルID --- (4)MT_ジャンル ジャンルID (1)T_アルバム ソースID --- (5)MT_ソース ソースID フォーム作成のために「Q_アルバム情報入力」をつくりました。 アルバムID T_アルバム アルバム名 T_アルバム アーティストID MT_アーティスト アーティスト名 MT_アーティスト ジャンルID MT_ジャンル ジャンル名 MT_ジャンル ソースID MT_ソース ソース名 MT_ソース この「Q_アルバム情報入力」を使って、フォームウィザードからフォームを作成し、 アルバムIDやアルバム名を入力しようとすると 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されます。 他のフィールドは値が入力できますが、これら2つのフィールドのみ入力できません。 なお、各テーブルのフィールドには予めデータが入っている状態です。 宜しくお願い致します。

  • Access2000メインサブフォームでのレコード移動

    Access2000でデータベースを作っている中で、メイン/サブフォームを使用しています。 メインフォームで次レコードへ移動しようとすると、レコードNOは移動しているのですが、データ内容が変わりません。 私の予想なのですがサブフォームにあるレコードの数だけ、(メインフォームの)同一レコードの内容が表示されているようです。 ・次レコードへの移動はフォーム一番下の、デフォルトでついてるレコード移動のボタンを押しました。 ・(メインフォ-ムの)テーブルにはKeyを設定してあり、同じデータは存在していません。 以上ですが、不明な点がありましたらお知らせください。 もしお分かりになる方がおられたらお教えください。よろしくお願いいたします。

  • Access VBA 抽出したレコードをフィールドを増やして別テーブルに追加する方法

    2つのクエリーで抽出したレコードを結合し、そのレコードにID番号をつけて別のテーブルに追加することはできないでしょうか? 1枚のガラスの値段表を作りたいと考えています。 使用するテーブルは、1つ目がサイズ表でサイズ番号と2つの辺の長さの3つのフィールドからできています。2つ目はガラスの種類表で種類番号と種類名の2つのフィールドでできています。3つ目は値段表で上の2つの表の5つのフィールドにID番号と値段の2つのフィールドがあり全部で7つのフィールドです。 いま、フォームにサイズ表と種類表のサブフォームをつくり、それぞれ結合したいレコードを表示させています。そこからフォームに値段を入力し登録ボタンをクリックすると値段表に新しいレコードを追加するような登録ボタンを作りたいです。 簡単な例でも構いません。 VBAがわかる方、教えてください。

  • Accessのサブフォームからフォームフィルタを使ってメインフォームも含めたレコードの抽出が出来ないのは何故でしょうか?

    フォームフィルタを利用してサブフォームに入力されている値でレコードの抽出を行いたいのですが、うまくできません。 メインフォームが持っているレコード全てを持ってきます。 メインフォームに含まれているデータが100件なら、それ全てを表示してしまうということです。 私が抽出したいレコードは2件だけです。 メインフォームからフォームフィルタを利用して抽出すると正しい結果が得られます。 これはどうしてでしょうか? サブフォームへの設定が何か足りないのでしょうか? 親・子のフォームのテーブルは同一のものです。 カテゴリーで親と子にフォームを分けました。 親にはクエリはなくて、リレーションシップしたテーブル数種から直接フォームにひっぱってあります。 子は一つのテーブルからクエリを作って、そのクエリからフォームに引っ張っています。 Access2003です。 どなたかご教示いただきますようお願いいたします。

  • カーソルが次のレコードに移動する

    ACCESS2010を使用しています。 単票形式のメインフォームに、帳票形式のサブフォームが2つあるフォームを作成しています。 メインフォームには項目が20個程、サブフォームは共に4つ程の入力項目があります。 サブフォームとメインフォームのカーソルの移動にマウスを使用するのが面倒なので、PageUp/Donwキーを使用するようにしているのですが、PageDownキーを使用した時に何故なのか分からない現象が起きます。 入力済みのレコードを画面上に呼び出しPageUpキーを押すと、2つ目のサブフォームの入力済みレコード1件目の1個目の項目にカーソルが移動し、更にPageUpキーを押すと1つ目のサブフォームの入力済みレコード1件目の1個目の項目にカーソルが移動します。 ですが、PageDownキーをした時、1つ目のサブフォームへの移動はPageUpキーと同じ結果ですが、更にPageDownキーを押し2つ目のサブフォームに移動した時、入力済みのレコードではなく新しいレコードの1個目の項目にカーソルが移動してしまいます。 フォーム自身にもVBAにもそのような制御やコードは書いていないのですが、何故動きが異なるのかが分かりません。 ヒントになるような事でも結構です。

  • Accessのレコードセレクタについて

    はじめまして、質問です。 フォーム画面にサブフォームがあり、検索するとサブフォームにワークテーブルからのレコードが出力されるのですが、ある画面では初期表示からレコードセレクタをホイールで移動でき、もう一方はできないものがあります。 レコードセレクタのデフォルトはどんな動きなのでしょうか? キーボードの方向キーで移動できるものとできないものがありのですが、何で制御しているのか? 漠然でしたら質問にはお答えしますので宜しくお願いします。

専門家に質問してみよう