im using the foloowing to update various rows in a subform

str2 = "UPDATE tblStocks SET Stocks.Quantity =Stocks.Quantity + forms![NewPurchasesReceived]![ProductsOrdered]![QuantityReceived] " _
& " WHERE (Stocks.ProductId= Forms![NewPurchasesReceived]![ProductsOrdered]![ProductId] ) "

'mydb.execute str2
DoCmd.RunSQL str2

when i use DoCmd.RunSQL str2 it only updates the last row of my subform .
But if i use mydb.execute str2 it generates the following error
Run time error '3061' too few parameters.Expected 2.

please tell me what code should i write?plz i need this urgently