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

執筆者:

関連記事

no image

AccessのBeforeUpdateでUndo

BeforeUpdateプロシージャ内の処理で、Cancel = Trueとしたら更新がキャンセルされるところまではできたが、テキストボックスにNullを代入しようとしてエラーが出たりして、間違って入 …

no image

Accessでフォームフィルタの結果をExcelにエクスポートする

ちょっと、苦労した。 [code] Private Sub cmdDMデータ作成_Click() On Error GoTo Err_cmdDMデータ作成_Click Dim rstf As Stri …

no image

AccessのレポートでNoDataでイベントキャンセル後もReport_Closeが実行されて困った

Accessのレポートで表示するデータがない場合は、以下のように書けばスマートにキャンセルできる。 [sourcecode] Private Sub Report_NoData(Cancel As I …

no image

Accessで DoCmd.RunSQL を CurrentDb.Executeにしたら、1秒高速化した

処理が遅いので速くして欲しいとの要望があったので、コードを調査。 DoCmd.RunSQL を CurrentDb.Execute に置き換えると非同期で実行されるとの情報を得たので、試す。 結果、6 …

no image

ドメインのDNSの管理会社を移転したら、BASP21でSMTP送信がエラー

CPIも、BASP21も、どちらもマイナー(笑)なので、誰の役にも立たないかもしれないけど、自分の備忘録として、残します。 これまでCPIでWebもメールも動かしていたが、WebのみをShopifyに …