Access 2007 - Docmd.OpenForm не открывается форма, OpenArgs? - PullRequest
0 голосов
/ 24 июля 2010

Поэтому я пытаюсь использовать нажатие кнопки, чтобы открыть следующую форму (в моем потоке форм), и передать идентификатор следующей форме, используя openArgs:

docmd.openform "NextForm",,,,,, MainID
docmd.close acform, "CurrentForm", acSaveYes

вторая форма не откроется .... Я никогда не сталкивался с этой проблемой с docmd.openform в подпрограмме ранее. однако это мой первый опыт использования OpenArgs .... обычно я передаю значение в скрытое текстовое поле, но я пытаюсь что-то другое.

Подпрограмма работает без ошибок, и текущая форма закрывается так, как и должна. Как будто доступ убежден, что вторая форма на самом деле открыта, но ее не видно. Кроме того, если я даже пытаюсь показать окно объектов базы данных, и просто нажмите открыть форму оттуда ..... ничего

пожалуйста, помогите! Спасибо Justin

Ответы [ 2 ]

4 голосов
/ 24 июля 2010

Это похоже на то, что доступ убежден, что вторая форма на самом деле открыта, но она не отображается.

Если вы не получите сообщение об ошибке, когда форма очевидно не открывается, проверьте, присутствует ли NextForm в коллекции Forms.В «Немедленном окне» попробуйте:

? Forms("NextForm").Name

Что происходит?Коллекция Forms включает открытые формы.Если вы получаете сообщение об ошибке, что NextForm не найден, то NextForm не открыт.Но если эта команда возвращает имя NextForm, форма открыта, но вы ее не видите.

Это может произойти как минимум двумя способами:

  1. форма открытаскрытая
  2. форма была открыта на экране за пределами видимой области отображения

Если форма действительно не открывается, и вы не получаете сообщение об ошибке, убедитесь, что выне отключены SetWarnings и Echo.

Если эти предложения не приведут вас к излечению, покажите нам, что NextForm пытается сделать с OpenArgs.Можете ли вы заставить NextForm открываться, если вы временно отключаете его код обработки OpenArgs?

Обновление : еще пара вопросов ...

Можно ли открыть NextForm в режиме конструктора?

Что произойдет, если вы попробуете следующую команду в «Немедленном окне»?Сообщение об ошибке?

DoCmd.OpenForm "NextForm",,,,,acWindowNormal
0 голосов
/ 05 июня 2015

Вы можете открывать формы и управлять ими, не используя Open Args

Вы делаете это, открывая другую форму, как если бы это был класс

Создайте модуль с именем GlobalVars, который включает эту строку:

Public Form_MyFormNameToOpen as Form_MyFormNameToOpen

(открытая форма будет оставаться открытой до тех пор, пока эта переменная не «умрет», поэтому сделайте ее глобальной, чтобы она оставалась в живых)

MyFormNameToOpen - это имя формы, которую вы хотите открыть, иимеет Form_ перед ним в некоторых из моего примера кода.Это сообщает доступу, чтобы получить «класс формы», то есть одну из созданных вами форм.

Затем в коде, который вы хотите открыть, используйте форму:

' Opens the form using it as it were a class
Set GlobalVars.Form_MyFormNameToOpen = New Form_MyFormNameToOpen

' The modify the form you have just opened however you want to.
With Form_MyFormNameToOpen
    .Visible = True

    ' This relies ont he control names never changing
    .Controls("ProviderID") = 10
    .Controls("ProviderFileID") = 11


    ' it's better to use properties created on the called form
    ' eg
    .MyLetProviderID = 10
    .MyProviderFileID = 11
End With

Надеюсь, это поможет.

Я считаю использование открытых арг настоящей болью, за исключением самых простых вещей.Использование таких форм значительно упрощает жизнь.

(возможно, вы можете использовать аналогичную технику для подчиненных форм и т. Д ...)

...