0

私はアクセスするのが非常に新しいです。OpenRecordSet を使用してテーブルを更新しようとしていますが、問題が発生しています。これが私のコードです:

Set rst2 = CurrentDb.OpenRecordset("tbl_Inventory", dbOpenTable)
With rst2
.Edit
If !InventoryID = Me.InventoryID Then

!Stock = Me.Quantity
.Update
.Close
End If
End With
Set rst2 = Nothing

これは、在庫フォーム ページで更新ボタンがクリックされたときに呼び出されます。フォームの各行には、更新ボタンと入力ボックス「数量」があります。これが私の問題です:

1) 更新ボタンをクリックすると、すべての数量入力ボックス (アイテムごと) がその新しい数値に変更されます。その行だけを指定するにはどうすればよいですか?

2) ID=1 の最初の行で [更新] をクリックし、在庫フォームをもう一度見ると、[在庫] 列に変更が加えられていることがわかります。しかし、他の行をクリックしても変化はありません。これらは、下線を引く 1 つの問題から生じていると感じています。

4

2 に答える 2

1

コードに rs.MoveNext 行がありません。これを試して:

Set rst2 = CurrentDb.OpenRecordset("tbl_Inventory", dbOpenTable)

Do While rst2.eof = false

With rst2
If !InventoryID = Me.InventoryID Then
   .Edit
   !Stock = Me.Quantity
   .Update
End If

End With

rst2.MoveNext

Loop
rst2.close
Set rst2 = Nothing
于 2013-06-18T20:36:16.827 に答える
0

変更する単一のレコードをどのように選択していますか? .FindFirst を使ってみましたか?

だからWith入れた後:

.FindFirst ("[InventoryID] = '" & Me.InventoryID & "'")

これにより、その 1 つのレコードのみを使用していることを確認できます。

于 2013-06-18T20:28:22.693 に答える