teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

追記

2020/05/21 07:04

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -27,4 +27,24 @@
27
27
  尚、SQLを直接実行する方式だと以下だけで済みます。
28
28
  ```VBA
29
29
  CurrentDb.Execute "update テーブル1 set Y_N=False where ID=2 and Y_N=True"
30
+ ```
31
+
32
+ 追記2
33
+ --
34
+ 全てリセット
35
+ ```VBA
36
+ Dim rs As New ADODB.Recordset
37
+ rs.Open "テーブル1", CurrentProject.Connection, , adLockOptimistic
38
+ rs.MoveFirst
39
+ Do While rs.EOF = False Then
40
+ If rs!Y_N = True Then
41
+ rs!Y_N = False
42
+ rs.Update
43
+ End If
44
+ rs.MoveNext
45
+ Loop
46
+ rs.Close
47
+ ```
48
+ ```VBA
49
+ CurrentDb.Execute "update テーブル1 set Y_N=False where Y_N=True"
30
50
  ```

4

訂正

2020/05/21 07:04

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -15,9 +15,11 @@
15
15
  Dim rs As New ADODB.Recordset
16
16
  rs.Open "テーブル1", CurrentProject.Connection, , adLockOptimistic
17
17
  rs.Find "ID=2", adSearchForward
18
+ If rs.EOF = False Then
18
- If rs!Y_N = True Then
19
+ If rs!Y_N = True Then
19
- rs!Y_N = False
20
+ rs!Y_N = False
20
- rs.Update
21
+ rs.Update
22
+ End If
21
23
  End If
22
24
  rs.Close
23
25
  ```

3

訂正

2020/05/21 02:50

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -7,24 +7,22 @@
7
7
  追記
8
8
  --
9
9
  上記はDAOだと思い込んでの回答でしたので、無視して下さい。
10
+ 更新されないのは、`FIND`の条件が意図通りで無い事です。
10
- 更新されないのは、`FIND`してもloopしているのが`rs!Y_N = True`なので、1件しか更新されません。
11
+ `FIND`してもloopしているのが`rs!Y_N = True`なので、最初に見つけた1件しか更新されません。
11
12
 
12
13
  なので、以下の様にする必要があります。
13
14
  ```VBA
14
15
  Dim rs As New ADODB.Recordset
15
16
  rs.Open "テーブル1", CurrentProject.Connection, , adLockOptimistic
16
- rs.MoveFirst
17
- Do While rs.EOF = False
17
+ rs.Find "ID=2", adSearchForward
18
- If rs!Y_N = True Then
18
+ If rs!Y_N = True Then
19
- rs!Y_N = False
19
+ rs!Y_N = False
20
- rs.Update
20
+ rs.Update
21
- End If
21
+ End If
22
- rs.MoveNext
23
- Loop
24
22
  rs.Close
25
23
  ```
26
24
 
27
25
  尚、SQLを直接実行する方式だと以下だけで済みます。
28
26
  ```VBA
29
- CurrentDb.Execute "update テーブル1 set Y_N=False where Y_N=True"
27
+ CurrentDb.Execute "update テーブル1 set Y_N=False where ID=2 and Y_N=True"
30
28
  ```

2

追記

2020/05/21 02:47

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -22,4 +22,9 @@
22
22
  rs.MoveNext
23
23
  Loop
24
24
  rs.Close
25
+ ```
26
+
27
+ 尚、SQLを直接実行する方式だと以下だけで済みます。
28
+ ```VBA
29
+ CurrentDb.Execute "update テーブル1 set Y_N=False where Y_N=True"
25
30
  ```

1

追記

2020/05/21 02:39

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -3,4 +3,23 @@
3
3
  rs.Edit '← ココを追加
4
4
  rs!Y_N = False
5
5
  rs.Update
6
+ ```
7
+ 追記
8
+ --
9
+ 上記はDAOだと思い込んでの回答でしたので、無視して下さい。
10
+ 更新されないのは、`FIND`してもloopしているのが`rs!Y_N = True`なので、1件しか更新されません。
11
+
12
+ なので、以下の様にする必要があります。
13
+ ```VBA
14
+ Dim rs As New ADODB.Recordset
15
+ rs.Open "テーブル1", CurrentProject.Connection, , adLockOptimistic
16
+ rs.MoveFirst
17
+ Do While rs.EOF = False
18
+ If rs!Y_N = True Then
19
+ rs!Y_N = False
20
+ rs.Update
21
+ End If
22
+ rs.MoveNext
23
+ Loop
24
+ rs.Close
6
25
  ```