I think it's "in the name" here, OpenArgs and On Open - they won't fire/have new values unless you open it.
One thing to try:
Private Sub cmdOpenDemo2_Click()
dim frm as form
dim rs as dao.recordset
If Nz(Me.txtCustomerId, 0) > 0 Then
if currentproject.allforms("frmDemo2").isloaded then
set frm = forms("frmDemo2")
set rs = frm.recordsetclone
rs.findfirst "CustomerID = " & Me.txtCustomerID
if not rs.nomatch then frm.bookmark=rs.bookmark
DoCmd.OpenForm "frmDemo2", acNormal, , , acFormEdit, acDialog, Me.txtCustomerID
Note - would require version 2000+, for prior versions, replace the isloaded thingie here with the isloaded function found in the Northwind sample database - typed not tested...