Как сделать форму невидимой access?

Ещё делая первый свой крупный проект, лет этак шесть назад, я пришел к выводу, что на экране должна находиться только одна форма. Несколько одновременно открытых форм загромождают рабочее поле, возникает возможность случайного переключения между открытыми формами, что может привести к ошибкам. (Правда, иногда наличие нескольких форм на экране оправдано. Например, из большой формы ты можешь вызвать какой-нибудь справочник, чтобы посмотреть нужное значение или откорректировать его.) Использование модальных форм не всегда оправдано. Например, при выводе на экран отчета из модальной формы, эта форма остается на экране поверх отчета. Что не очень-то красиво. Пришлось сесть за разработку интерфейса. После нескольких экспериментов, я пришел к выводу, что при вызове одной формы из другой, надо делать родительскую форму невидимой, а при закрытии — восстанавливать видимость. Единственное условие — передача в дочернюю форму имени родительской формы. Здесь можно использовать три метода. (По крайней мере, я додумался до трех.)

  1. Использовать глобальную текстовую переменную. В момент открытия формы, считывать из неё имя родительской формы, помещать в локальную переменную, а в глобальную записывать своё имя открываемой формы. При вызове следующей формы, операция повторяется. Таким образом, в глобальной переменной хранится имя текущей активной формы. При закрытии формы сначала в глобальную переменную помещается имя родительской формы из локальной переменной, затем закрывается текущая форма и управление передается родительской форме.
  2. Передавать имя родительской формы через аргументы команды DoCmd.OpenForm
  3. Передавать имя родительской формы через тег (Tag) загружаемой формы.

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

Вот пример реализации управления видимостью форм при передаче имени по третьему методу.

Подпрограмма открытия формы

Public Sub GotoForm(Name As String, Optional MyForm As Variant, Optional StrWhere As Variant, Optional StrArg As String)
» Параметры подпрограммы GotoForm
» Name as String — имя загружаемой формы
» MyForm as Variant — имя закрываемой формы (опционально)
» StrWhere as Variant — cтроковое выражение, представляющее допустимое
» предложение SQL WHERE без ключевого слова
» WHERE (опционально)
» StrArg as String — аргументы открытия (опционально)
On Error GoTo Err_GotoForm
Dim stDocName As String
Dim stLinkCriteria As String
Dim strHide As String
» определяется имя активной формы
    strHide = Screen.ActiveForm.Name
» активная форма делается невидимой
    Screen.ActiveForm.Visible = False
» проверяется наличие условий
    If Not IsMissing(StrWhere) Then
        If Len(StrWhere) > 0 Then
            DoCmd.OpenForm Name, acNormal, , StrWhere, , , StrArg
» проверяется наличие закрываемой формы
            If Not IsMissing(MyForm) Then
                DoCmd.Close acForm, strHide
            Else
                Screen.ActiveForm.Tag = strHide
            End If
            Exit Sub
        End If
    End If
» если нет условий на открытие формы
    DoCmd.OpenForm Name, acNormal, , , , , StrArg
» проверяется наличие закрываемой формы
    If Not IsMissing(MyForm) Then
        DoCmd.Close acForm, strHide
    Else
        Screen.ActiveForm.Tag = strHide
    End If
Exit_GotoForm:
    Exit Sub
Err_GotoForm:
    MsgBox Err.Description
    Resume Exit_GotoForm
End Sub

****************************************************

Функция закрытия формы

Public Function fnCloseForm() As Long
» Данная функция закрывает текущую форму и делает
» видимой родительскую форму
On Error GoTo Err_fnCloseForm
Dim strUnhide As String
Dim Name As String
» определяется имя активной формы
    Name = Screen.ActiveForm.Name
» определяется наличие родительской формы
    If Nz(Screen.ActiveForm.Tag) = «» Then
        DoCmd.Close acForm, Name
    Else
        strUnhide = Screen.ActiveForm.Tag
        DoCmd.Close acForm, Name
        DoCmd.SelectObject acForm, strUnhide
    End If
» если при выполнении функции не произошло ошибки
    fnCloseForm = 0
Exit_fnCloseForm:
    Exit Function
Err_fnCloseForm:
» если при выполнении функции произошла ошибка
» MsgBox Err.Description
    fnCloseForm = Err.Number
    Resume Exit_fnCloseForm
End Function

Эти две подпрограммы надо применять совместно. Код конечно далек от идеала, например подпрограмму GotoForm можно представить в виде:

Public Sub GotoForm(Name As String, Optional MyForm As Variant, Optional StrWhere As String, Optional StrArg As String)
» Параметры подпрограммы GotoForm
» Name as String — имя загружаемой формы
» MyForm as Variant — имя закрываемой формы (опционально)
» StrWhere as String — cтроковое выражение, представляющее допустимое
» предложение SQL WHERE без ключевого слова
» WHERE (опционально)
» StrArg as String — аргументы открытия (опционально)
On Error GoTo Err_GotoForm
Dim stDocName As String
Dim strHide As String
» определяется имя активной формы
    strHide = Screen.ActiveForm.Name
» активная форма делается невидимой
    Screen.ActiveForm.Visible = False
» открывается новая форма
    DoCmd.OpenForm Name, acNormal, , StrWhere, , , StrArg
» проверяется наличие закрываемой формы
    If Not IsMissing(MyForm) Then
        DoCmd.Close acForm, strHide
    Else
        Screen.ActiveForm.Tag = strHide
    End If
Exit_GotoForm:
    Exit Sub
Err_GotoForm:
    MsgBox Err.Description
    Resume Exit_GotoForm
End Sub

Оба варианта работоспособны, причем второй проще и красивее. Прошу не слишком ругать, я эти подпрограммки сочинил, когда из всей литературу по Access у меня была книга «Access 97 — шаги к эффективной работе» (что-то вроде «Access за 24 часа») и хелп к самому Access 97.

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

MS Office, Программные решения, похожие статьи

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

Совместная работа — ключ к эффективному выполнению задач. Объединив свои знания и навыки с коллегами, можно быстрее достичь результата. Вот перед вами стоит задача разработать учебное пособие по ландшафтному дизайну…

Продолжаю разбирать варианты организации информационно-образовательной среды (ИОС) в Microsoft Office 365. В этой статье в качестве ИОС рассматриваю записные книжки OneNote совместно в другими сервисами и приложениями.

На стартовой странице Visio Online, вы можете просматривать и искать разнообразные шаблоны и образцы схем, которые помогут вам создавать интересные, убедительные и профессионально оформленные схемы, представляющие ваши замыслы визуально…

Share

Embed

  • Published on Jan 28, 2018
  • Если вы не знаете, как создать вычисляемые поля на форме базы данных Microsoft Access, то посмотрите это видео.
    Разберем пошаговое добавление поля в форму Access.
    Продолжаем работать с базой данных Access «Интернет магазин». Убедитесь, что программа Microsoft Access очень проста и не требует дополнительных знаний в освоении.
    Чаевые на развитие канала:
    yasobe.ru/na/accesshelpru
    ———————————————-
    Ссылки на предыдущие уроки:
    Как посчитать возраст в базе данных Access — tvclip.biz/video/ekhebBesHc0/video.html
    ВЫЧИСЛЯЕМЫЕ запросы в базе Access — tvclip.biz/video/3ha9T_0A4r0/video.html
    УРОК 27: Подчиненные формы Access — tvclip.biz/video/dn7Eb9nAhUM/video.html
    УРОК 26: Создание кнопки Access — tvclip.biz/video/qAjLWoGIBnc/video.html
    УРОК 25: Конструктор форм — tvclip.biz/video/UYxW7s14AD8/video.html
    УРОК 24: Создание однотабличных форм — tvclip.biz/video/9dUtXC1mAAo/video.html
    Весь цикл «Microsoft Access для начинающих» — tvclip.biz/p/PLnzEVwX9gt1gAA83GL0NvJSk2CXoGfH6z
    Как сделать СЛОЖНЫЕ формы — tvclip.biz/video/ou-1q4Q6NjY/video.html
    Как сделать формы в базе данных Microsoft Access 2016 — tvclip.biz/video/54ZZhSYrz8s/video.html
    Как создать формы в Microsoft Access за 10 минут — tvclip.biz/video/VIijFwLF0eQ/video.html
    ———————————————
    Как и где скачать Microsoft Access бесплатно -7108.ru/a7108
    Где купить лицензионный microsoft office 365 за 200 рублей — tvclip.biz/video/oyvW6MKVzqw/video.html
    Готовая база данных Access Приходный кассовый ордер — tvclip.biz/video/JmIgS_KkW98/video.html
    Готовая база данных Access Успеваемость студентов — tvclip.biz/video/7OWyOevGbUI/video.html
    Готовые базы Access — 7108.ru/g0203
    ———————————————
    Хотите самостоятельно научиться создавать обучающие скринкасты в программе Camtasia Studia 9? — tvclip.biz/channel/UCEHp6AiIVCN-ZY7GPpgPkJg
    ———————————————-
    Ищите нас вконтакте: vk.com/access_community и facebook: facebook.com/msaccess.community/
    Остались вопросы? Пишите в комментариях под видео
  • Microsoft  Access  База данных  Форма  Поле  Excel  Конструктор  

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

В разд. «Создание элементов управления с помощью панели элементов»гл. 5 мы упомянули о том, что при создании списка/поля со списком с помощью Мастера в форме, привязанной к источнику данных, Access предлагает сделать его средством перехода к нужной записи в форме. Рассмотрим пример создания такого списка:

  1. Откройте в режиме Конструктора форму «Сотрудники» (Employees) базы данных «Борей» (Northwind).
  2. Убедитесь, что на панели инструментов Панель элементов (Toolbox) нажата кнопка Мастера (Control Wizards). Нажмите кнопку Поле со списком (Combo Box) и разместите новый элемент в разделе заголовка формы, начертив мышью прямоугольник нужного размера.
  3. Появится первое диалоговое окно Мастера списков. Выберите переключатель Поиск записи в форме на основе значения, которое содержит поле со списком (Find a record on my form based on the value I selected in my combo box) и нажмите кнопку Далее (Next).
  4. В следующем диалоговом окне мастера выберите поля, которые образуют столбцы элементов списка: «КодСотрудника» (EmployeeID), «Фамилия» (LastName) и «Имя» (FirstName). Нажмите кнопку Далее (Next).
  5. В следующем диалоговом окне Мастера списков предлагается настроить ширину столбцов списка. Столбец с ключевым полем «КодСотрудника» рекомендуется сделать скрытым (установите флажок Скрыть ключевой столбец (Hide key column)). Оставьте предложенные параметры и нажмите кнопку Далее (Next).
  6. В последнем диалоговом окне мастера требуется ввести текст метки, поясняющей назначение списка. Введите текст: Фамилия: и нажмите кнопку Готово (Finish).

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

Действие созданного поля со списком обеспечивается процедурой обработки события После обновления (After Update), сгенерированной мастером (см. также разд. «Создание процедур обработки событий»гл. 13).

Ответ мастера: Оформляя данные в таблицу в приложениях Microsoft Office Word и Excel, пользователь может столкнуться с необходимостью сделать форму невидимой, то есть привести документ к такому виду, когда текст отображен, зато границы таблиц на печать не выводятся. Это можно сделать при помощи встроенных инструментов редактора.

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

Если нам нужно сделать невидимой лишь часть формы или мы редактируем уже готовый документ, в котором есть границы таблицы, то выполним несколько действий. Выделим при помощи мышки или сочетания клавиш Shift + «стрелки» область, в которой будут скрыты границы. На закладке «Главная», которая находится в разделе «Шрифт», нажмем на изображение стрелки, которое можно найти чуть правее от расчерченного квадрата. Выберем в следующем меню «Нет границ», для этого нажмем левой кнопкой мышки. После этого границы выделенных нами ячеек становятся невидимыми.

Такой же эффект может быть достигнут и другим способом: выделим требуемую область и кликнем по ней правой кнопкой мышки. В открывшемся меню выберем пункт «Формат ячеек». Далее перейдем к вкладке «Границы», найдем группу «Все» и выделим там пункт, на котором написано «Нет». Нажмем на кнопку «ОК», чтобы новые настройки применились к редактируемой части документа.

В Word действует этот же принцип, однако инструменты, с помощью которых осуществляется эта операция, нужно искать в других разделах. Выделим форму, либо ее часть, которая будет сделана невидимой. Теперь откроем «Главная», где выберем пункт «Абзац». После этого нужно нажать на кнопку с изображением стрелки, которая находится правее от расчерченного квадрата и выбрать там «Нет границы».

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

Если выделить хоть одну ячейку таблицы в Word, доступным становится контекстное меню «Работа с таблицами». С его помощью тоже можно сделать форму невидимой. Выделив определенную область таблицы, откроем «Работу с таблицами», после чего выберем «Конструктор». Откроется раздел «Стили таблиц», в котором нам нужно будет найти уже знакомый нам значок и применить нужный стиль для границ таблицы.