MS Access 2007 - OpenArgs не передает значение в следующую форму? - PullRequest
0 голосов
/ 24 июля 2010

Поэтому я передаю значение идентификатора из одной формы в другую, используя

Docmd.OpenForm "SecondForm",,,,,, MainID
Docmd.Close AcForm, "FirstForm", acSaveYes

, а затем проверяю значение в событии загрузки второй формы:

MainID = val(Me.OpenArgs)

и когдаОтладка и пошаговое выполнение. Я нахожу курсор на это и вижу, что оно содержит значение

. Затем у меня есть событие нажатия кнопки во второй форме, которое должно повторить процесс, но когда я запускаю следующее

Dim rs as DAO.Recordset
Dim dbs as DAO.Database
Set dbs = CurrentDB

Set MyRS = dbs.OpenRecordset("tblMain")

If MyRS!MainID = MainID THen

после этого его некоторые rs.edit и т. Д. Вещи ... рутина даже не делает это так далеко.Как только я делаю ту же самую отладку и наведение, значение здесь пусто.Есть что-то, чего мне не хватает, потому что я вижу значение в событии загрузки форм, но как только я пытаюсь использовать его в другом действии, это MIA

спасибо Джастин

1 Ответ

1 голос
/ 24 июля 2010

Звучит так, как будто это может быть проблемой. Где объявлен MainID?

Если вы объявите это в рамках процедуры открытия формы, она исчезнет после завершения этой процедуры.

Подумайте об изменении процедуры нажатия кнопки.

If MyRS!MainID = Val(Me.OpenArgs) Then

OpenArgs не «уходит» после загрузки формы. Я не понимаю, почему вам нужно хранить OpenArgs в вашей переменной MainID. Вы можете использовать Val (Me.OpenArgs) там, где вы использовали переменную MainID.

В качестве альтернативы, вы можете сделать MainID переменной уровня модуля, чтобы она была доступна для всех процедур вашей формы.

Обновление : Есть ли ситуации, когда вы можете открыть форму, не передавая ей значение для OpenArgs? Если это так, Val (Me.OpenArgs) вернет 0. Будет ли это ошибочным условием в логике вашего приложения? Должна ли ваша командная кнопка быть «активной» (включена), если не указано значение OpenArgs?

...