Access (VBA)

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

 
(Windows 10 Pro : Access 2016)
チェックしたレコードに連番
投稿日時: 18/10/30 07:27:34
投稿者: ゴマゴマ

お世話になります。別途連番のつけ方について質問させていただき解決したのですが、テーブル内の更にチェックボックスにチェックを入れたレコードだけに連番を付ける方法についてご教示ください。
 
解決済みコード

Dim フィールド2 As String
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("テーブル1", dbOpenDynaset)
Dim n As Integer
Do Until rs.EOF
rs.Edit
rs.Fields("フィールド2") = n + 1
n = n + 1
rs.Update
rs.MoveNext
Loop
rs.Close

 
新たな条件
「テーブル1」内の連番を付すレコードを選択するフィールド
・「選択チェックボックス」
 
※選択したレコード内で一つのレコードに対し一意をキメられれば良いのでオートナンバーのような基準は考えていません。
 
以上
よろしくお願いします。

回答
投稿日時: 18/10/30 09:38:41
投稿者: sk

引用:
テーブル内の更にチェックボックスに
チェックを入れたレコードだけに連番を付ける

引用:
選択したレコード内で一つのレコードに対し一意をキメられれば良いので
オートナンバーのような基準は考えていません。

その更新処理を実行しようとする時点において、
[フィールド2]に対して既に何らかの連番が割り当てられている
( Yes/No 型のフィールドの値が False である)レコードに
関しては特に考慮しなくてもよいのでしょうか。
 
引用:
Set rs = CurrentDb.OpenRecordset("テーブル1", dbOpenDynaset)

Set rs = CurrentDb.OpenRecordset("SELECT * FROM [テーブル1] WHERE [Yes/No 型のフィールドの名前]=True", dbOpenDynaset)
 
----------------------------------------------------------
 
基本的には以上のような SELECT 文の結果を取得なさればよいでしょうけど、
指定された抽出条件に該当しないレコードは当然更新されません。

投稿日時: 18/10/30 11:58:14
投稿者: ゴマゴマ

sk 様
 
いつもありがとうございます。早速にご回答ありがとうございます。
 
>( Yes/No 型のフィールドの値が False である)レコードに 関しては特に考慮しなくてもよいのでしょうか。
→falseについては連番はつけたくないので考慮しなくてOKです。
 
>Set rs = CurrentDb.OpenRecordset("SELECT * FROM [テーブル1] WHERE [Yes/No 型のフィールドの名前]=True", dbOpenDynaset)
→いただいたコードを試したところエラーメッセージ「パラメータが少なすぎます。5を指定してください。」が出てきました。5とは??WHEREでパラメータは設定できたと思うのですが。。解決方法をご教示いただけますとありがたいです。
 
以上
 
 

回答
投稿日時: 18/10/30 12:03:44
投稿者: sk

引用:
いただいたコードを試したところエラーメッセージ
「パラメータが少なすぎます。5を指定してください。」が出てきました。

・フィールドの名前が正しくない。
 
・テーブルではなくパラメータクエリを開こうとしている。
 
以上のどちらかではないでしょうか。

投稿日時: 18/10/30 12:42:13
投稿者: ゴマゴマ

sk様
 
ご回答ありがとうございました。
名前が一部間違っておりました。修正したところうまくいきました。
感謝いたします。
 
以上