Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
チェックしたレコードに連番付加
投稿日時: 18/11/25 15:34:57
投稿者: ゴマゴマ

お世話になります。
以前この場でDo Untilをつかって連番を付けるコードを教えていただきました。この続きで連番を使って(日時&連番)でユニークコードを作りたいと思っています。下記コードを試したところ、最後のユニークコードがチェックした全てのレコードに入ってしまいます(現状)。希望になるコードをご教示ください。
 
 


チェック 連番	ユニークコード	
□	 	 	
☑	 01	18112515195501	18112515195503
☑	 02	18112515195502	18112515195503
☑	 03	18112515195503	18112515195503
□	 	 	
		  ↑	      ↑
		  希望	 現状

‘チェックしたレコードに連番付加
Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM [クエリ1連番作成用] WHERE [チェック]=True", dbOpenDynaset)
    
Dim n As Integer
Do Until rs.EOF
rs.Edit
        rs.Fields("連番") = n + 1
        n = n + 1
        rs.Update
        rs.MoveNext
Loop
rs.Close

‘ユニークコード作成 
Dim code As String
            
    code =Format(Now(), "yymmddhhmmss")
    Dim rs2 As Recordset
    Set rs2 = CurrentDb.OpenRecordset("SELECT * FROM [クエリ1連番作成用] WHERE [チェック]=True", dbOpenDynaset)
    
    Dim m As String
    Do Until rs2.EOF
        rs2.Edit
        rs2.Fields("ユニークコード") = code & [連番]
        rs2.Update
        rs2.MoveNext
    Loop
    rs2.Close

 
以上

回答
投稿日時: 18/11/25 16:58:18
投稿者: hatena
投稿者のウェブサイトに移動

        rs2.Fields("ユニークコード") = code & [連番]

 
の部分を
 
       rs2.Fields("ユニークコード") = code & rs.Fields("連番")

 
とすればいいでしょう。
 
ただ、連番とユニークコードを別々に入力するのは無駄なので、同時に入力したほうがいいでしょう。
 
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM [クエリ1連番作成用] WHERE [チェック]=True", dbOpenDynaset)
    Dim code As String
    code =Format(Now(), "yymmddhhmmss")

    Dim n As Integer
    Do Until rs.EOF
        rs.Edit
        n = n + 1
        rs.Fields("連番") = n
        rs2.Fields("ユニークコード") = code & Format(n."00")
        rs.Update
        rs.MoveNext
    Loop
    rs.Close

投稿日時: 18/11/27 12:31:54
投稿者: ゴマゴマ

hatena 様
 
いつもありがとうございます。
回答に加え改善案までいただき感謝します。
バッチリできました。
引き続きよろしくお願いします。
 
以上