回答受付が終了しました

accessのフォームのデータを複製する方法を教えてください。 フォームに商品登録する画面があります。

accessのフォームのデータを複製する方法を教えてください。 フォームに商品登録する画面があります。 普通なら新規データを登録するのですが、たまに管理番号だけが違って商品や内容は全部同じというものがあります。 その時にフォーム上で複製したいデータのところで「コピー」というボタンを押すと新しい管理番号(連番)だけ切り替わりあとは同じデータというものにしたいです。 私ではお手上げ状態ですのでどなたかわかる方宜しくお願いします。 あと、このフォームには陳列外商品も表示できてフォーム上のチェックが外れていれば陳列されている商品、チェックがついていれば陳列外商品も含めた表示になります。 チェックによりレコードソースを書き換えているのですが、そのせいなのか調べて作ったコードも機能してくれません・・・ これを踏まえたうえでご回答いただけると嬉しいです。

補足

こちらにもレコードソース書き換えのコードを記載致します。 If Me!チェック64 = True Then Me.RecordSource = "テーブル1" Else Me.RecordSource = "クエリ2" End If End Sub テーブル1のFalseをクエリに抽出しています。 また追記ですが、フォーム内にはタブコントロールがあり、そこに6つのサブフォームを入れています。 そのサブフォームも同時に新しい管理番号で複製したいのでそちらの方法があれば教えて頂きたいです。 お手数ですが宜しくお願いします。

Microsoft Access39閲覧

回答(2件)

0

> >これを踏まえたうえでご回答いただけると嬉しいです。 > > その踏まえるべきコード、参考にすべきコードがあるのでしたら > 提示してもらえますでしょうか? > > 提示してもらえないと踏まえようも無いと思います。 激しく同意。 で、全然踏まえていませんが。 ウィザードを オンにしておいて コマンドボタンを配置。 種類 : レコードの操作 ボタンの動作 : レコードの複製 管理番号(連番)というのが不明ですが オートナンバーならそのままで新しい番号が振られます。 そうでないなら、連番を取得して管理番号に代入(仕様が不明なので具体的には書けませんが)。 あるいは手動で好きな番号を書き込むとか。 いずれの場合もレコードは編集中でまだ保存されていません。 好きなように扱えます。

返信が遅くなり申し訳ございません。 レコードソース書き換えのコードはtyp****様の返信に記載しております。 マクロでレコードの複製をしたところ、エラーメッセージで入力規則に従っていませんと表示されます。 恐らく、管理番号が複製した際に重複しているからだと思います。 エラーメッセージのあとに手動で変えれば保存できるのですが、それでは手間になるし、ほかの人も使うことがあるのでなるべく自動で入力出来たらありがたいです。 管理番号はオートナンバーではないのですが、1つ前の管理番号の+1で管理番号は取得できます。 例えば1つ前が3であれば新規に登録する管理番号は4です。 またマクロのレコード複製ではフォームのレコードソースであるテーブルには保存されますが、サブフォーム内のテーブルは保存されないのですね・・・。 サブフォーム内のテーブルにも保存される方法がありましたら教えて頂きたいです。

0

>管理番号(連番)だけ切り替わりあとは同じデータ クエリでやるとこんな感じです。 テーブル名、フィールド名は提示されていなかったためダミーです。 ※作成されたテーブル名、フィールド名を提示しておくと それを踏まえて回答できますので提示された方が良いと思います。 INSERT INTO 商品 ( 管理番号, フィールド1, フィールド2, フィールド3 ) SELECT [新管理番号] AS 式1, 商品.[フィールド1], 商品.[フィールド2], 商品.[フィールド3] FROM 商品 WHERE (((商品.管理番号)=[旧管理番号])); >これを踏まえたうえでご回答いただけると嬉しいです。 その踏まえるべきコード、参考にすべきコードがあるのでしたら 提示してもらえますでしょうか? 提示してもらえないと踏まえようも無いと思います。

返信が遅くなり申し訳ございません。 レコードソース書き換えのコードは下記になります。 Private Sub チェック64_AfterUpdate() If Me!チェック64 = True Then Me.RecordSource = "テーブル1" Else Me.RecordSource = "クエリ2" End If End Sub テーブル1のFalseをクエリに抽出しています。