MS Access

Accessでレコードコピー(オートナンバー除く)の決定版のコード!

投稿日:

Accessで、レコードのオートナンバーを除くフィールドを1行、複製(コピー)したくって、Google検索したのだけどなかなか出てこず、しかしやっと見つけた、黄金のソース・・・・。

[VBA] ADOの Clone と AddNew – その他(プログラミング) 解決済み| 【OKWAVE】

やりたかったのは、単純に、レコードのコピー。
フォームのボタンをクリックすると、コピーが作られ、Requeryすると、一番上に表示される、そんな感じの処理。

最初は、

DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.RunCommand acCmdPasteAppend
Me.Requery

のようなコードでフォーム上のデータをコピペしていたのだが、非連結の検索用テキストボックスの扱いがうまくいかず、ペースト時にエラーになる。
非連結だからコピペしなくてもよいのだがなぜかコピー対象にされる(自分の環境の場合SQLServer上のテーブルのみで発生、mdbテーブルだと発生せず)。
そこはよくわからないけどAccessの仕様だろう。

レコードのクローンを用意して、そこからフィールドごとにループしてレコードを作ればよいかなとは想像してみたのだが、具体的にはどう作ればよいのか、わからず。
そんな中で、上記のコードを見つけた時の喜びやいかに。

にしても、解答者の、30246kiku さん、神だ、天使だ! 感動だ。

-MS Access

執筆者:

関連記事

Accessで複数レコードを1レコードにまとめる(運送会社送り状作成のため

Accessに入れてある楽天の注文データをもとに、運送屋さんの送り状伝票を作ろうと思い立った。 しかし、楽天の注文データは、同一の受注番号で複数の商品に分かれている。 例えば一人の人が3点買い物をした …

no image

Accessの再クエリーでデータが移動してしまうのを解消

仕事メモ。 メイン・明細フォームのときは、 http://www.sanryu.net/acc/tips/tips323.htm を参考に、 Dim m_offset As Long ‘レ …

no image

VBAで英字混じりの引数から数字のみを取り出す関数

たとえば、abcABC123456XYGという引数から、123456のみを取り出したい。 VBAの組み込み関数で、適当なのがありそうだけど、無いみたい。 カスタム関数を作るにも、これはという情報がググ …

no image

パラメータクエリにパラメータをセットして実行した結果をデータシートで表示する」というコードの実行で3065エラー

Accessの仕様として、パラメータクエリだけが駄目なのかと思ったら、なんと選択クエリが駄目なのだそう。 理由は、Executeメソッドはアクションクエリのもので、選択クエリのものではないからだそう。 …

no image

VBAで忘れてしまっていたことと、知らなかったこと

STOPステートメント: ブレークポイントを設定しないでもその行でコード処理を止めることができるので、Access終了->Access起動といったシチュエーションで使える。 Randomizeステート …