You can set the form's .RecordSource after it has been opened. However, doing so will cause a .Requery and thus may also trigger a Form_Current event to recognize the changed source. This change would be visible to users as a flicker if nothing else. The more complex the form, the more pronounced the flicker.
Office VBA reference topic
docs.microsoft.com
In theory you can also change the form's .RecordSet, with the same comments regarding .Requery and flicker. Also, if you change .RecordSource, you implicitly change the .RecordSet (and vice versa) because they are interdependent. Changing one changes the other.
If you open the form in design mode, you can set the .RecordSource without causing events on that form, and as noted by others, if you declare the form "Hidden" then the .RecordSource change won't be visible. But opening the form in Design mode and having to then make it hidden MIGHT cause a visible flicker too. AND of course the form being modified can't do this to itself because a form in Design mode doesn't run code.
There is this other consideration... changing the .RecordSource presumes your form will have a compatible record. So if the change to the source is merely a WHERE clause as a filter, you could just define the form's .Filter property and then set .FilterOn = TRUE. Ditto for the ORDER BY, since there is a property for that, too.