アクセス小僧:レコードを複製 [コンピューター]
フォームのボタンを押したら、
マクロを起動して、現在のレコードを複製するマクロを作りました。というか、パクリました。
【パクリ元】
[VBA] ADOの Clone と AddNew
https://okwave.jp/qa/q8056811.html
【マクロ】
Sub RecordCopy1()
'【機能】カレントレコードをコピーして、新しいレコードを作る
'【変数】
Dim rs As New ADODB.Recordset
Dim rsC As ADODB.Recordset
Dim i As Long
rs.Source = "SELECT * FROM T_テーブル名 WHERE 主キー名 = " & [主キー名] & ";"
rs.Open , CurrentProject.Connection, adOpenStatic, adLockOptimistic
If (Not rs.EOF) Then
Set rsC = rs.Clone
rsC.AddNew
For i = 0 To rs.Fields.Count - 1
Select Case rs.Fields(i).Name
Case "主キー名"
' 主キーを除外
Case Else
rsC(i) = rs(i)
End Select
Next i
rsC.Update
rsC.Close
Set rsC = Nothing
End If
rs.Close
End Sub
フィールドの値をコピーしますが、主キーは除外します。
ADODBを使用するためには、設定が必要です。
ADOについて ACCESSのVBAでADOを使うための準備
https://accessvba.blog.so-net.ne.jp/2014-01-18
「Microsoft ActiveX Data Objects」への参照設定を行っておきます。
マクロを起動して、現在のレコードを複製するマクロを作りました。というか、パクリました。
【パクリ元】
[VBA] ADOの Clone と AddNew
https://okwave.jp/qa/q8056811.html
【マクロ】
Sub RecordCopy1()
'【機能】カレントレコードをコピーして、新しいレコードを作る
'【変数】
Dim rs As New ADODB.Recordset
Dim rsC As ADODB.Recordset
Dim i As Long
rs.Source = "SELECT * FROM T_テーブル名 WHERE 主キー名 = " & [主キー名] & ";"
rs.Open , CurrentProject.Connection, adOpenStatic, adLockOptimistic
If (Not rs.EOF) Then
Set rsC = rs.Clone
rsC.AddNew
For i = 0 To rs.Fields.Count - 1
Select Case rs.Fields(i).Name
Case "主キー名"
' 主キーを除外
Case Else
rsC(i) = rs(i)
End Select
Next i
rsC.Update
rsC.Close
Set rsC = Nothing
End If
rs.Close
End Sub
フィールドの値をコピーしますが、主キーは除外します。
ADODBを使用するためには、設定が必要です。
ADOについて ACCESSのVBAでADOを使うための準備
https://accessvba.blog.so-net.ne.jp/2014-01-18
「Microsoft ActiveX Data Objects」への参照設定を行っておきます。
ヤバイぜ! ありがとうございます(^_0)ノ
by cheese999 (2019-04-29 05:57)