- 締切済み
Access アクセス VBA レコード追加
Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- chayamati
- ベストアンサー率41% (260/624)
>Access アクセス VBA レコード追加 ★失礼しました。 コマンドボタンをフォームに配置すれば、埋め込みマクロになりますが 何かのボックスのイベントから次の命令文を記述するのもあります DoCmd.GoToRecord , , acNewRec ★おまけです DoCmd.GoToRecord , , acFirst DoCmd.GoToRecord , , acPrevious DoCmd.GoToRecord , , acNext DoCmd.GoToRecord , , acLast ★以下も行けそうです DoCmd.GoToRecord , , 7
- chayamati
- ベストアンサー率41% (260/624)
今晩は 前回の回答は別のQへの回答で大変失礼しました。 Access アクセス VBA レコード追加 >フォームからのレコードの追加方法を教えてください。 ★フォームの基本機能の一つです。 最初のレコード、前のレコード、次のレコード、最後のレコード、レコードの追加 フォームを開くと下辺にアイコン表示されています。 ★テーブルをデザインすると「テーブル」に追番の名前が付きますが、 意味のある名前に変更します 命名はテーブルの使用目的が分かるようにアルファベット一文字を 先頭に付けるとよいでしょう M:マスタ,T;トランザクション,S;サブ、参照 次のようにします。 M窓口 ・ID(主キー) ・窓口 ・コストセンターID(コストセンターへのリレーション用 長整数型 ---------- Mコストセンター ・ID(主キー) ・コストセンター(インデックスプロパティで 重複なし) ・目的(短いテキスト型) ---------- >メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 メインフォームにはサブフォームで各テーブルが表示されています。 ★オートナンバー型のIDは自動採番され、リレーションシップと連携するので お任せでフォーム上に配置する必要ありません >また、フォームに”コストセンター”を入力したときに入力したレコードが テーブル2にあっても自動で”目的”が表示されません。 ★そうですね、テーブル1を一度閉じて、開いてください どうやら、テーブル1は開く前に、テーブル2のレコードのみが反映するようです ★サブフォームのあるフォームにすると一挙に解決です フォームを添付して置きます
- chayamati
- ベストアンサー率41% (260/624)
こんにちは >フォームからのレコードの追加方法を教えてください。 ★フォームを開くと下辺に「先頭のレコード、次のレコード、 最後のレコード、新しいレコード」のアイコンが表示されます。 これをクリックします 色々考えておられるのは分かりますが、 要は<案件の一覧をデータシート形式で表示させています。> の為案件の情報全てを一行では収まりきらないためと推察しました。 特に案件内容はA4用紙数ページなると思います。 このようなフィールドのデータ型を長いテキスト型にし、 フォームデザインでEnterキーで行の追加でボックスは スクロールバー機能が働き際限なく可能です また行からはみ出すフィールドはフォームフッターに配置します 添付をご覧ください ------------------------------------------------------ 以下は蛇足ですので読み飛ばして頂いて構いません。 >T_案件の案件名の抽出条件 (Like "*" & [forms]![F_弁護士]![氏名] & "*")と設定して ★ここでは曖昧検索は意味がないでしょう >(SF_弁護士から案件のサブフォーム)の 一覧からそれぞれの案件IDをクリックして ★突然SF_弁護士が出てきましたね F_弁護士と違いがあるのですか >個々の案件を特定し、F_案件でそれぞれの案件IDをクリックして 個々の案件を特定し、F_案件で表示オープンさせたいと考え、 クリック時の埋め込みマクロでフォームを開く[F_案件]、 表示オープンさせたいと考え、クリック時の埋め込みマクロで フォームを開く[F_案件]、 Where条件式、[ID]=[Forms]![SF_弁護士から案件のサブフォーム]![ID]
- chayamati
- ベストアンサー率41% (260/624)
こんにちは >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(主キー) ・コストセンター:インデックスプロパティーで重複無し ・目的 ・フリガナ 今回は以上ですが、この他 ・テーブルデザインのルックアップ設定 ・リレーションシップ ・フォームデザイン についてお知らせしたいのですが、何かコメント下さい