MS Access 2007 - OpenArgs not passing the value to next form?
So I pass the ID value from one form to the next using
Docmd.OpenForm "SecondForm",,,,,, MainID
Docmd.Close AcForm, "FirstForm", acSaveYes
and then I check the value on the Second Form's load event:
MainID = val(Me.OpenArgs)
and when I debug and step through I hover over this and can see it contains a value
Then I have a button click event on the Second Form that is supposed to repeat the process, but when I run the following
Dim rs as DAO.Recordset
Dim dbs as DAO.Database
Set dbs = CurrentDB
Set MyRS = dbs.OpenRecordset("tblMain")
If MyRS!MainID = MainID THen
after that its some rs.edit, etc stuff....the routine is not even making it that far. Once I do the same debug and hover, the value here is empty. Is there something I am missing because I can see the value on the forms load event, but once i try to use it in another action it is 开发者_运维知识库MIA
thanks justin
Sounds like this could be a scope problem. Where is MainID declared?
If you declare it within your Form Open procedure, it's gone once that procedure finishes.
Consider changing your button's click event procedure.
If MyRS!MainID = Val(Me.OpenArgs) Then
OpenArgs doesn't "go away" after Form Load. I don't see why you need to store OpenArgs to your MainID variable. You could use Val(Me.OpenArgs) where you were using the MainID variable.
Alternatively, you could make MainID a module level variable so it would be available to all your form's procedures.
Update: Is there any situation where you might open the form without feeding it a value for OpenArgs? If so, Val(Me.OpenArgs) will return 0. Will that be an error condition in your application's logic? Should your command button be "clickable" (enabled) when an OpenArgs value has not been supplied?
精彩评论