Search code examples
databasems-accessms-access-2007openargs

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


Solution

  • 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?