To answer your question, yes you can do that. You can create a saved updated query that references your form's controls to get it's parameters, you could call this from a macro or VBA, or you could do it all with VBA. I'd personally use VBA.
Is this your table structure? I see I think what should be at least 5 different tables here. What is the purpose of the Final column? Is the final column always Null or Discarded or are there other options? If a store=discarded does that mean Final=discarded?
[EDIT]
If the button is on the form with the record source you don't need a update query, you can just have the button set the fields like this
Code:
Private Sub cmdDiscard_Click()
Me![Condition] = "Discarded"
Me![Store] = "Discarded"
Me![Final] = "Discarded"
End Sub
You can set the [Who] and [DateCompleted] field in the same sub as well, you could have it check to see if either are blank, if so then prompt the user for the information, or just fail to "discard" the substance if the fields are blank...
But note that each of those columns should probably actually be foreign key fields.