Microsoft Access 掲示板

レコードの複製(1行コピーして一度に10行複製) / 6

9 コメント
views
4 フォロー
6

例えば日付と項目等をレコード複製しておいて、金額と備考欄等をExcelから貼り付け、というふうにしています。

ID    →オートナンバー
支払日  →複製したい場合とExcelから張り付ける場合がある
支払種別 →複製したい場合とExcelから張り付ける場合がある
支払先名 →複製したい場合とExcelから張り付ける場合がある
部門名  →空白でok 
施設名   →複製したい場合とExcelから張り付ける場合がある
金額     →Excelから貼り付け
支払方法 →複製
該当月  →複製したい場合とExcelから張り付ける場合がある
備考   複製したい場合とExcelから張り付ける場合がある

この辺から推測するに、
支払伝票的なものをAccessで管理したいという印象。

だとすると、扱うデータは、
共通するデータ(ヘッダー項目)とレコード毎に変化するデータ(明細データ)に分けられると思います。

データベースは同じデータを繰り返し格納しないという設計原則があります。
繰り返されるデータ(今回ならヘッダー項目)と変化するデータ(今回なら明細データ)は別テーブルにすることになります。
このような設計を「正規化」といいます。いちど「正規化」でWEB検索してみてください。

例えば、Accessで解説しているページとしては下記あたりを参考に。

正規化とは - もう一度学ぶMS-Access

アクセスデータベース設計の基本(正規化) | ExcelとAccessの学習室

正規化されたテーブルなら同じデータを複製する必要はなくなります。
また、Accessでは正規化されたデータを入力する場合は、メイン/サブフォーム形式の入力フォームを使うのが一般的です。
メインフォームでヘッダー項目を入力、サブフォームで明細データを入力というUIになります。

Accessのフォームのメイン/サブフォームとは | できるネット

通報 ...
  • 7

    何度もありがとうございます。
    とりあえず、10行複製のボタンは簡単には出来ないんだなぁ、という事がわかりました。
    規定値設定ですが、1月の伝票が150行続く時もあれば、その次には2月のもの、等バラバラなので、なかなか…という感じです。
    正規化については、時間を見つけて取り組んでみたいと思います。
    ありがとうございました。

  • 8
    hiroton 2024/07/31 (水) 09:48:40 8b699@f966d >> 6

    「10行複製のボタン」は簡単に作れますよ。それだけのものに意味がないのでその方法を誰も回答しないだけで

    ACCESSはデータベースソフトなので、それを逸脱するような作りはいろいろな問題があります。それをやりたいならExcelでやったほうが簡単だし問題も少ないです(目的は別にして手法だけならという意味で)

    なぜAccessなのか、データベースとはどういうものなのか、データベース化することによってどのようなメリットがあるのか、Accessでどうこうする以前の「情報をどのように扱うべきか」という理論レベルの知識がもっと必要ですね

    具体的に言うなら「なぜExcelではだめなのか」を考えてみましょう
    そのうえで、それでも「10行複製のボタン」が欲しいとなるなら、もしかするとAccessという選択が間違いなのかもしれませんよ