MS Access 2007 - OpenArgs not passing the value to next form?

痴心易碎 提交于 2019-12-25 02:44:18

问题


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


回答1:


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?



来源:https://stackoverflow.com/questions/3325687/ms-access-2007-openargs-not-passing-the-value-to-next-form

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!