Как проверить, открыт ли экземпляр формы Access 2010? Access открыть форму vba


Access vba открыть форму - Популярные загрузки



Из главной формы необходимо открыть во весь экран форму1. В последнем окне мастера требуется ввести имя формы и указать дальнейшие действия открыть форму для просмотра и ввода данных изменить макет формы. Номертел - строковое значение в таблице телефоны и связанной с ней формы телефоны.

Здравствуйте! Подскажите, как правильно скрыть в excel строку по условию. Перемещать поле можно вместе с привязанным к нему именем или отдельно от него для перемещения поместить указатель мыши на квадратик, находящийся в левом верхнем углу элемента. Формы создаются из набора отдельных элементов управления. Для кнопки, по нажатию на которой будет формироваться отчет, можно использовать следующий код при помощи метода dlookup () скачиваем в него значение столбца file из таблицы конечно же, правильнее будет при этом сделать эту присоединенную рамку объекта на форме изначально невидимой  чтобы пользователь не мог этот объект активизировать по собственной инициативе.

Похожие посты:

Просмотров: 18 Автор: Vnuk_Volodi Дата: 08 Авг 2018, 16:53

Если вы не понимаете, как открыть форму на определенной записи в базе данных microsoft access, то поглядите это видео.Alexpro1979, с одной кнопкой здесь все равно не обойдешься, по этому думаю нужно сделать три кнопки и открывать три по различному.Формы и отчеты в access создаются из окна бд средствами (мастерами и конструкторами) зрительного проектирования форм и отчетов. У меня такая неувязка в процессе работы программки, раскрывается.Формы и отчеты - это главные документы (объекты) бд access для интерактивного взаимодеяния с бд. Задает в качестве значения элемента управления кодпоставщика текущего поставщика в форме поставщики. В последнем окне мастера требуется ввести имя формы и указать последующие деяния открыть форму для просмотра и ввода данных поменять макет формы. Объекта docmd в модуле visual basic для приложений (vba).Примеры формул и vba кодов, обучающие статьи, работа со сводными таблицами и почти все другое.Формы и отчеты - это главные документы (объекты) бд access.

Закрыть форму из vba microsoft access привет форумчане. Это  самый удачный метод генерации отчетов в word. Access отыскивает форму с этим именованием поначалу. Форма нам обычно нужна не сама по для себя, а как контейнер для расположенных на ней частей управления.

Объект access form и работа с формами access средствами vba

Объектная переменная - это переменная, которая ссылается на объект. В процедуре myst () связь объектной переменной с экземпляром объекта разорвана, так как объектной переменной установлено значение nothing. Сводная таблица (создается форма access, отображаемая в режиме сводной таблицы excel). Вопрос неувязка с аксесом 2003 после обновления системы (не могу нормально открыть форму). поглядел примеры, пробовал приметодить под (менеджеры ведут телефонные дискуссии в процессе работы с проектом. На рисунке 2 представлен снимок экрана окна просмотра object browser, в котором отображается объект docmd и его способы. Access средствами vba, открытие формы access, работа с элементами управления на форме access один из важных частей access, который обширно употребляется в приложениях  это формы. Обратиться к объекту формы можно через коллекцию allforms, которая доступна через объекты codeproject и currentproject.

www.virales.ru

vba - Запуск кода перед открытием любых форм в Access

Прежде чем поместить свой передний и задний концы в одну и ту же папку, подумайте об этом. Разве не стоит иметь 2 папки? Что можно сказать о том, что несколько пользователей на одном компьютере получают доступ к одной и той же серверной базе данных? Как насчет нескольких пользователей, получающих доступ к одной и той же базе данных через сеть? В чем заключается необходимость иметь типологию переднего конца, если ваше приложение в основном однопользовательское приложение?

Почему вы не добавляете в свое приложение диалоговое окно, если ваша связь потеряна? Вы можете создать объект fileDialog в своем коде, чтобы пользователь мог просматривать файл * mdb в любом месте своего компьютера/сети. Затем можно контролировать, что выбранный файл mdb содержит все запрошенные таблицы и открывает соответствующие ссылки (я думаю, вы используете команду transferDatabase).

А как насчет дополнительных инструментов/ссылок, которые вам понадобятся для запуска вашего приложения, когда вы будете распространять его среди ваших конечных пользователей? По умолчанию MS Access записывает 3 основных:

  • Visual Basic для приложений
  • Библиотека Microsoft Access
  • Библиотека Microsoft DAO

Если вашему приложению нужно что-то еще, например, объекты ADO или Office (например, ADODB.recordset или командные панели Office), вам придется добавлять ссылки вручную для каждой установки, поскольку конечный пользователь не сможет открыть Окно VBA и доступ к меню инструментов/ссылок.

Итак, если вам нужно развернуть приложение на нескольких компьютерах, я настоятельно рекомендую вам использовать инструмент развертывания, такой как бесплатный, Вам понадобится несколько часов, чтобы использовать его правильно, но результат того стоит. Вы сможете предоставить своим клиентам настоящий модуль установки. Он будет создавать папки, добавлять запрошенные ярлыки и управлять ссылками в реестре компьютера. Это сделает ваше развертывание определенно безболезненным!

EDIT: макрос autoexec определенно является правильным решением для вызова кода перед любым событием.

EDIT: не забывайте, что ваши конечные пользователи могут получать прибыль от версии Access, которая бесплатна!

qaru.site

Макрокоманда «ОткрытьФорму» - Access

Макрокоманда ОткрытьФорму в Access предназначена для открытия формы в представлении формы, в Конструкторе, в режиме предварительного просмотра или режиме таблицы. Она позволяет выбирать режим ввода данных и режим окна для формы, а также ограничивать количество записей, отображаемых в форме.

Примечание: Макрокоманда "ОткрытьФорму" недоступна в веб-приложениях Access.

Настройка

Аргументы макрокоманды ОткрытьФорму описаны ниже.

Аргумент макрокоманды

Описание

Имя формы

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

При выполнении в база данных библиотеки макроса, содержащего макрокоманду ОткрытьФорму, Access ищет форму с этим именем сначала в базе данных библиотеки, а затем в текущей базе данных.

Режим

Представление, в котором будет открываться форма. Выберите в поле Режим значение Форма, Конструктор, Предварительный просмотр, Таблица, Сводная таблица или Сводная диаграмма. По умолчанию используется Форма.

Примечание: Представления сводной таблицы и сводной диаграммы были удалены из Access, начиная с Access 2013.

Примечание: Значение аргумента Режим переопределяет параметры свойств формы DefaultView и ViewsAllowed. Например, даже если свойству формы ViewsAllowed присвоено значение Таблица, можно использовать макрокоманду ОткрытьФорму для открытия формы в представлении формы.

Имя фильтра

Фильтр, ограничивающий или сортирующий записи в форме. Вы можете ввести имя существующего запроса или фильтра, который ранее был сохранен в виде запроса. Однако запрос должен содержать все поля открываемой формы или его свойство OutputAllFields должно иметь значение Да.

Условие отбора

Допустимое предложение WHERE SQL (без слова WHERE) или выражение, которое Access использует для выбора записей из базовой таблицы или запроса формы. Если выбрать фильтр с аргументом Имя фильтра, Access применит это предложение WHERE к результатам фильтрации.

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

[ имя_поля ] = Forms![ имя_формы ]![ имя_элемента_управления _в_другой_форме ]

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

Примечание: Максимальная длина аргумента Условие отбора равна 255 символам. Если необходимо ввести более сложное и длинное предложение WHERE, вместо этого используйте метод ОткрытьФорму объекта DoCmd в модуле Visual Basic для приложений (VBA). VBA позволяет вводить предложения WHERE SQL длиной до 32 768 символов.

Режим данных

Режим ввода данных для формы. Применим только для форм, открытых в режиме формы или таблицы. Возможные варианты значений: Добавление (пользователь может добавлять новые записи, но не может редактировать существующие), Изменение (пользователь может редактировать существующие записи и добавлять новые) или Только чтение (пользователь может только просматривать записи).

Примечания

  • Значение аргумента Режим данных переопределяет значение свойств формы AllowEdits, AllowDeletions, AllowAdditions и DataEntry. Например, даже если свойство формы AllowEdits имеет значение Нет, можно открыть форму в режиме редактирования с помощью макрокоманды ОткрытьФорму.

  • Если этот аргумент оставить пустым, то Access откроет форму в режиме ввода данных, определяемом свойствами AllowEdits, AllowDeletions, AllowAdditions и DataEntry.

Режим окна

Режим окна, в котором открывается форма. Возможные значения: Обычное (форма открывается в режиме, определяемом ее свойствами), Скрытое (форма скрыта), Значок (форма свертывается и отображается в виде небольшого заголовка окна в нижней части экрана) или Диалоговое окно (для свойств Modal и PopUp формы задается значение Да). По умолчанию используется значение Обычное.

Примечание: Некоторые значения аргумента Режим окна неприменимы, если используются документы со вкладками. Чтобы переключиться в режим перекрывания окон:

  1. Откройте вкладку Файл и выберите пункт Параметры. Если вы используете Access 2007, нажмите кнопку Microsoft Office и выберите Параметры Access.

  2. В диалоговом окне Параметры Access щелкните элемент Текущая база данных.

  3. В разделе Параметры приложений в группе Параметры окна документа выберите параметр Перекрывание окон.

  4. Нажмите кнопку ОК, а затем закройте и снова откройте базу данных.

Замечания

Эта макрокоманда аналогична двойному щелчку формы в области навигации или ее щелчку правой кнопкой мыши в области навигации и выбору представления.

Форма может быть модальный (ее необходимо закрыть или скрыть, прежде чем можно будет выполнить какое-либо другое действие) или немодальной (можно переходить в другие окна, оставляя форму открытой). Она также может быть всплывающей (такая форма, используемая для сбора или отображения информации, выводится поверх всех других окон Access). Свойства Modal и PopUp задаются при разработке формы. Если для аргумента Режим окна использовать значение Обычное, то форма будет открываться в режиме, который определяется параметрами этих свойств. Если для аргумента Режим окна задано значение Диалоговое окно, то оба эти свойства принимают значение Да. Форма, открытая в скрытом виде или в виде значка, возвращается в режим, определяемый параметрами ее свойств, при отображении или восстановлении.

При открытии формы с аргументом Режим окна, имеющим значение Диалоговое окно, Access приостанавливает работу макроса, пока форма не будет закрыта или скрыта. Форму можно скрыть, установив с помощью макрокоманды ЗадатьЗначение значение Нет для ее свойства Visible.

Применяемые фильтр и условие WHERE становятся значением свойства Filter формы.

Совет: Вы можете выбрать форму в области навигации и перетащить ее в окно макроса. При этом автоматически создается макрокоманда "ОткрытьФорму", открывающая ее в представлении формы.

Пример

Задание значения элемента управления в форме с помощью макроса

Следующий макрос открывает форму "Товары" с помощью кнопки в форме "Поставщики". Он демонстрирует применение макрокоманд ВыводНаЭкран, ОткрытьФорму, ЗадатьЗначение и КЭлементуУправления. Макрокоманда ЗадатьЗначение задает в качестве значения элемента управления "Код поставщика" в форме "Товары" текущего поставщика в форме "Поставщики". После этого макрокоманда КЭлементуУправления перемещает фокус на поле "Код категории", с которого начинается ввод данных для нового товара. Этот макрос должен быть привязан к кнопке "Добавить товары" в форме "Поставщики".

Макрокоманда

Аргументы: параметр

Примечание

ВыводНаЭкран

Включить вывод: Нет

Приостанавливает обновление экрана, пока выполняется макрос.

ОткрытьФорму

Имя формы: Товары

Представление: Форма

Режим данных: Добавление

Режим окна: Обычное

Открывает форму "Товары".

ЗадатьЗначение

Элемент: [Forms]![Товары]![КодПоставщика]

Выражение: КодПоставщика

Задает в качестве значения элемента управления "КодПоставщика" текущего поставщика в форме "Поставщики".

КЭлементуУправления

Имя элемента управления: КодКатегории

Выполняет переход к элементу управления "КодКатегории".

support.office.com

Microsoft Access. Создание формы в VBA

Проектирование форм - самый сложный этап проектирования базы данных. Формы постоянно находятся в движении. Их переделывают, удаляют, изменяют и никто не бывает довольным текущим решением.

Создание форм в базе данных Access сложный и трудный этап программирования. Давайте напишем общую функцию, которая будет сама создавать нам форму и изменит ее настройки так, чтобы она выглядела красиво и с минимальным количеством объектов управления. Имя формы будет «Мой калькулятор» и запишем ее в переменную strForm.

Внешний вид панели элементов в режиме дизайнера Access 2016, т.е. тогда когда пользователь изменяет форму программы.

    Public Function funCreateForm(strForm As String) As Boolean

        Dim frm As Form

        On Error GoTo 999 'Переход по ошибке

        funCreateForm = False 'Значение возвращаемое по ошибке

        funDeleteForm strForm 'Удаляем старую форму

        frm = appAccess.CreateForm 'Создаем новую форму

        With frm 'Изменяем параметры формы

            .Caption = "Мой калькулятор" 'Вставляем заголовок

            .ScrollBars = 0 'Гасим полосы прокрутки

            .RecordSelectors = False 'Гасим область выделения

            .NavigationButtons = False 'Гасим кнопки перехода

            .DividingLines = False 'Гасим разделительные линии

            .AutoCenter = True 'Выравниваем форму по центру

            .BorderStyle = 3 'Устанавливаем диалоговую границу

            .Section(0).Height = 3.862 * appCM 'Изменяем высоту окна

            .Width = 10.926 * appCM 'Изменяем ширину окна

            .HasModule = True 'Разрешаем программы в форме

        End With

        funRestoreFormControls frm  'Создаем элементы формы

        funInsertFormModule frm 'Создаем модуль формы

        appAccess.DoCmd.Save, strForm 'Сохраняем форму

        appAccess.DoCmd.Close(acForm, strForm, acSaveYes) 'Закрываем форму

        funCreateForm = True 'Возвращаем результат

        Exit Function 'Выход из программы

999:

        MsgBox Err.Description 'Сообщаем об ошибке

        Err.Clear() 'Очищаем поток от ошибок

    End Function

Удаление формы

На этом этапе напишем программу для удаления формы strForm («Мой калькулятор»). Программа работает так, что если формы нет в базе данных, то программа выходит по ошибке через метку 999 и нам надо очистить поток от нее, чтобы в дальнейшем не было сообщений.

    Public Function funDeleteForm(strForm As String) As Boolean

        Dim frm As Form

        On Error GoTo 999 'Переход по ошибке

        funDeleteForm = False 'Возвращаемое значение при ошибке

        appAccess.DoCmd.DeleteObject(acForm, strForm) 'Удаляем форму

        funDeleteForm = True 'Возвращаем значение

        Exit Function

999:

        Err.Clear() 'Очищаем поток от ошибок

    End Function

Создание элементов формы

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

    Public Function funRestoreFormControls(frm As Form) As Boolean

        Dim ctl As Control, rst As Recordset, dbs As Database, i As Integer

        On Error GoTo 999 'Переход по ошибке

        funRestoreFormControls = False 'Возврат значения по ошибке

        dbs = CurrentDb 'Выбираем текущую базу данных

        rst = dbs.OpenRecordset("SELECT * FROM [Калькулятор-форма]")

        If rst.RecordCount = 0 Then  'Проверяем запрос

            rst.Close() 'Закрываем запрос

            Exit Function  'Выходим из программы

        End If

        With rst 'Создание элемента из запроса

            .MoveLast() 'Заполняем запрос данными

            .MoveFirst() 'Переходим на 1 запись

            For i = 0 To .RecordCount - 1 'Выполняем восстановление для каждой записи

                Select Case rst!ControlType

                    Case acCommandButton 'Создаем Кнопку

                        ctl = appAccess.CreateControl(frm.Name, rst!ControlType, , "", "", rst!Left, rst!Top, rst!Width, rst!Height)

                        ctl.OnClick = "[Event Procedure]" 'Включаем обработку нажатия

                        ctl.Caption = rst!Caption 'Меняем название

                        ctl.ControlTipText = rst!ControlTipText 'Устанавливаем подсказку

                    Case acLabel 'Создаем Надпись

                        ctl = appAccess.CreateControl(frm.Name, rst!ControlType, , "", rst!Caption, rst!Left, rst!Top, rst!Width, rst!Height)

                        ctl.BackColor = !BackColor 'Меняем фон

                    Case acTextBox 'Создаем Поле

                        ctl = appAccess.CreateControl(frm.Name, rst!ControlType, , "", "", rst!Left, rst!Top, rst!Width, rst!Height)

                        ctl.SpecialEffect = 0 'Выбираем стандартное выделение

                        ctl.BorderColor = 0 'Выбираем черный цвет

                        ctl.BorderStyle = 1 'Выбираем обычную границу

                    Case acListBox 'Создаем Список

                        ctl = appAccess.CreateControl(frm.Name, rst!ControlType, , "", "", rst!Left, rst!Top, rst!Width, rst!Height)

                        ctl.SpecialEffect = 0 'Выбираем стандартное выделение

                        ctl.BackColor = rst!BackColor 'Меняем фон списка

                        ctl.BorderColor = 0 'Выбираем стандартное выделение

                        ctl.ColumnCount = 2 'Устанавливаем число колонок

                        ctl.ColumnWidths = "7,932 см;1 см" 'Устанавливаем размер колонок

                        ctl.RowSource = "запросСписокКалькулятора" 'Выбираем запрос для списка

                End Select

                ctl.Name = rst!Name 'Изменяем имя элемента

                ctl.ForeColor = !ForeColor 'Изменяем цвет символов

                rst.MoveNext() 'Переходим на следующую запись

            Next i

        End With

        rst.Close() 'Закрываем запрос

        funRestoreFormControls = True 'Возвращаем результат

        Exit Function 'Выходим из программы

999:

        MsgBox Err.Description 'Сообщаем об ошибке

        Err.Clear() 'Очищаем поток от ошибок

    End Function

Вставить в форму модуль

После создания формы, напишем программу, которая вставит «модуль программ» на Бэйсике в нашу форму. Это необходимо для того, чтобы обеспечить обработку событий формы, например, таких как открытие, загрузка,  нажатие кнопок.

Далее в лекциях идет перечисление событий. Они отмечены на рисунках кнопкой.

Public Function funInsertFormModule(frm As Form) As Boolean

Dim s As String, mdl As Module

        On Error GoTo 999 'Переход по ошибке

        s = appFolder & "\Программы\Form_Мой калькулятор.bas"

        If Dir(s) <> "" Then 'Проверяем файл

            frm.Module.AddFromFile s 'Добавляем модуль

        End If

        Exit Function 'Выходи из программы

999:

        MsgBox Err.Description 'Сообщаем об ошибке

        Err.Clear() 'Очищаем поток от ошибок

    End Function

Открытие формы

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

Private Sub Form_Open(Cancel As Integer)

    subBarOff() 'Выключить все меню и строку состояния

    'Настроить всплывающие подсказки кнопок

    Me.кнВыход.ControlTipText = "Выход из программы"

    Me.кнПечать.ControlTipText = "Печать отчета о расчетах"

    Me.кнРасчет.ControlTipText = "Расчет данных на калькуляторе"

    Me.кнСброс.ControlTipText = "Сбросить все вычисления"

    'Меняем настройки окна, установленные по умолчанию

    Me.Caption = "Мой калькулятор" 'Заголовок

    Me.ScrollBars = 0 'Полосы прокрутки

    Me.RecordSelectors = False 'Область выделения

    Me.NavigationButtons = False 'Кнопки перехода

    Me.DividingLines = False 'Разделительные линии

    'Меняем настройки списка задач

    Me.Список.BackColor = 8421376 'Цвет фона символов

    Me.Список.ForeColor = RGB(255, 255, 255) 'Цвет символов

    'Устанавливаем события

    Me.Выражение.AfterUpdate = "[Event Procedure]" 'После обновления

    Me.кнВыход.OnClick = "[Event Procedure]" 'Нажатие кнопки

    Me.кнПечать.OnClick = "[Event Procedure]" 'Нажатие кнопки

    Me.кнРасчет.OnClick = "[Event Procedure]" 'Нажатие кнопки

    Me.кнСброс.OnClick = "[Event Procedure]" 'Нажатие кнопки

    'Настраиваем параметры приложения

    DoCmd.RunCommand acCmdAppMaximize 'Увеличиваем приложение

    On Error Resume Next 'Отключаем диагностику ошибок меню

    Me.MenuBar = "Калькулятор" 'Устанавливаем меню

    Err.Clear() 'Очищаем поток от ошибки

End Sub

Расчет выражения

Обработка события. Эта программа нужна для того, чтобы после того, как пользователь введет свое выражение и нажмет кнопку «Enter», произошли необходимые расчеты, и список вычислений калькулятора обновился.

   Private Sub Выражение_AfterUpdate()

        Dim dbs As Database

        On Error GoTo 999  'Назначаем переход по ошибке

        If (Me.Выражение = "") Or _

            IsNull(Me.Выражение) Then Exit Sub 'Проверяем выражение

        dbs = CurrentDb 'Выбираем базу данных

        Me.Итог = Eval(Me.Выражение) 'Рассчитываем выражение

        subСохранитьВыражение() 'Сохраняем выражение в списке

        Me.Список.Requery() 'Пересматриваем список

        Me.Выражение = "" 'Сбрасываем выражение

        Me.кнПечать.SetFocus() 'Помещаем курсор для печати

        dbs = Nothing 'Обнуляем переменную

        Exit Sub 'Выходим из программы

999:

        Err.Clear() 'Очищаем поток от ошибок

        Me.Итог = "Ошибка" 'Сообщаем об ошибке

        Me.Выражение.SetFocus() 'Подготавливаем новый ввод данных

    End Sub

Выход из программы

 Обработка события. Пользователю Вашей программы надо обеспечить выход из приложения. Для этого напишем событие так, чтобы после нажатия кнопки Выход, программа запросила о выходе из калькулятора, и  в случае утвердительного ответа закрыла базу данных.

 Private Sub кнВыход_Click()

    If MsgBox("Закрыть калькулятор?", vbInformation + vbOKCancel, "Калькулятор") = vbOK Then

        Application.Quit acQuitSaveAll 'Выходим из приложения

    End If

End Sub

Открыть отчет

Обработка события. После проведенных вычислений нам может потребоваться отпечатать отчет. Для этого мы и создали кнопку Печать. Теперь мы должны написать событие, чтобы при нажатии кнопки отобразился документ "Отчет об итогах".

Private Sub кнПечать_Click()

     On Error Resume Next 'Отключаем диагностику ошибок

     DoCmd.OpenReport("Отчет об итогах", acViewPreview) 'Открываем отчет

     Err.Clear() 'В случае отсутствия данных очищаем поток ошибок

 End Sub

Расcчитать данные

Обработка событий. В нашем калькуляторе есть кнопка Расчет, вставим в программу событие, которое при нажатии данной кнопки будет проводить вычисление введенного в калькулятор выражения.

Private Sub кнРасчет_Click()

    If (Me.Выражение = "") Or IsNull(Me.Выражение) Then

blog.leadersoft.ru

access-vba - Как установить открытую форму для чтения только в доступе vba?

Как настроить форму в редакторе vba для чтения только после написания команды для ее открытия? Я ввел код ниже. В разделе комментариев вы узнаете, где я думал, что код может пойти.

Option Compare Database Private Sub Command10_Click() Dim DBS As Database Dim rstUserPwd As Recordset Dim bFoundMatch As Boolean Dim txtUsername As String Dim txtPassword As String Dim FRM As Form Set DBS = CurrentDb Set rstUserPwd = DBS.OpenRecordset("qryUserPwd") bFoundMatch = False If rstUserPwd.RecordCount > 0 Then rstUserPwd.MoveFirst Do While rstUserPwd.EOF = False If rstUserPwd![Username] = Form_frmLogin.txtUsername.Value And rstUserPwd![Password] = Form_frmLogin.txtPassword.Value Then bFoundMatch = True Exit Do End If rstUserPwd.MoveNext Loop End If If bFoundMatch = True Then GoTo G1 On Error GoTo G2 G1: If rstUserPwd![Username] = "wsmith" Then MsgBox "Access Granted" DoCmd.Close acForm, Me.Name DoCmd.OpenForm "AmalgamatedForm" DoCmd.OpenForm "AgeUKRequirementsForm" DoCmd.OpenForm "CiberRequirementsForm" DoCmd.OpenForm "Blackbaud_ITT_ResponseForm" DoCmd.OpenForm "Ciber_ITT_ResponseForm" DoCmd.OpenForm "ThankQ_ITT_ResponseForm" ElseIf rstUserPwd![Username] = "admin" Then MsgBox "Access Granted" DoCmd.Close acForm, Me.Name DoCmd.OpenForm "AmalgamatedForm" DoCmd.OpenForm "AgeUKRequirementsForm" DoCmd.OpenForm "CiberRequirementsForm" DoCmd.OpenForm "Blackbaud_ITT_ResponseForm" DoCmd.OpenForm "Ciber_ITT_ResponseForm" DoCmd.OpenForm "ThankQ_ITT_ResponseForm" ElseIf rstUserPwd![Username] = "ageuk" Then MsgBox "Access Granted" DoCmd.Close acForm, Me.Name DoCmd.OpenForm "AmalgamatedForm" 'how do i set the form in row above to read only here until exit database DoCmd.OpenForm "AgeUKRequirementsForm" 'how do i set the form in row above to read only here until exit database DoCmd.OpenForm "CiberRequirementsForm" 'how do i set the form in row above to read only here until exit database DoCmd.OpenForm "Blackbaud_ITT_ResponseForm" 'how do i set the form in row above to read only here until exit database DoCmd.OpenForm "Ciber_ITT_ResponseForm" 'how do i set the form in row above to read only here until exit database DoCmd.OpenForm "ThankQ_ITT_ResponseForm" 'how do i set the form in row above to read only here until exit database ElseIf rstUserPwd![Username] = "ciber" Then MsgBox "Access Granted" DoCmd.Close acForm, Me.Name DoCmd.OpenForm "AmalgamatedForm" 'how do i set the form in row above to read only here until exit database DoCmd.OpenForm "AgeUKRequirementsForm" 'how do i set the form in row above to read only here until exit database DoCmd.OpenForm "CiberRequirementsForm" 'how do i set the form in row above to read only here until exit database DoCmd.OpenForm "Ciber_ITT_ResponseForm" 'how do i set the form in row above to read only here until exit database Else G2: MsgBox "Incorrect username or password" End If End Sub источник поделиться

qaru.site

vba - Как проверить, открыт ли экземпляр формы Access 2010?

Мне нужно создать несколько копий формы поиска (в Access 2010), которая возвращает значение для вызова (которое также является формой, создавшей экземпляр формы).

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

  • Нажмите "Выбрать компанию" и откройте экземпляр экрана поиска компании.
  • Затем откройте редактор компании (оставив исходный экран поиска/выбора компании открытым), поскольку они замечают, что у компании есть материнская компания, которая еще не добавлена.
  • Затем нажмите кнопку "Выбрать родительскую компанию", которая откроет ДРУГОЙ экземпляр поиска и выберите экран
  • Они находят материнскую компанию
  • Выберите его, который закрывает второй экран поиска, а материнская компания добавляется к первой компании.
  • Затем пользователь выбирает измененную компанию, используя исходный экран поиска, который снова закрывает исходный экран поиска и возвращает выбранную компанию в ту форму, из которой они первоначально инициализировали первый поиск...

Все это позволяет пользователям обновлять и исправлять данные по мере обнаружения ошибки, которая уменьшает вероятность их забывания и делает это намного быстрее!

МОСТ это нормально сейчас, но у меня было много проблем с экземплярами формы, которая не может быть открыта как "acDialog", таким образом останавливая код вызова, пока он не будет выполнен (см. этот вопрос для получения дополнительной информации), и решение, с которым я столкнулся, состоит в том, чтобы имитировать приостановку вызывающего кода с помощью бесконечного цикла и проверки того, все ли показывается экран поиска. Затем, когда пользователь выбирает что-то на экране поиска, он помещает значение в скрытое поле на экране поиска и скрывает его сам (не закрыт). Затем вызывающая функция видит, что она скрыта, захватывает значение из скрытого поля и выгружает этот момент.

Я могу проверить, скрыта ли форма с помощью FormInstant.Visable , но, если пользователь закрывает форму, и это вызывает ошибку, а код, который я обычно использовал бы, чтобы проверить, существует ли форма, требуется имя формы и поскольку это мгновение формы, все формы имеют одно и то же имя! У меня есть ссылка на форму, поскольку она хранится в локальном объекте "form"... Код, который я обычно использовал, следующий:

CurrentProject.AllForms("FormName").IsLoaded

Итак, как я могу проверить на мгновение загружаемую форму?

qaru.site