Light-electric.com

IT Журнал
70 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Docmd openform access синтаксис

Docmd openform access синтаксис

The OpenForm method carries out the OpenForm action in Visual Basic.

Syntax

expression.OpenForm (FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)

expression A variable that represents a DoCmd object.

Parameters

For example, suppose that the form that you open is a continuous-form list of clients. If you want the focus to move to a specific client record when the form opens, you can specify the client name with the OpenArgs argument, and then use the FindRecord method to move the focus to the record for the client with the specified name.

Remarks

You can use the OpenForm method to open a form in Form view, form Design view, Print Preview, or Datasheet view. You can select data entry and window modes for the form and restrict the records that the form displays.

The maximum length of the WhereCondition argument is 32,768 characters (unlike the WhereCondition action argument in the Macro window, whose maximum length is 256 characters).

Example

The following example opens the Employees form in Form view and displays only records with King in the LastName field. The displayed records can be edited, and new records can be added.

The following example opens the frmMainEmployees form in Form view and displays only records that apply to the department chosen in the cboDept combo box. The displayed records can be edited, and new records can be added.

The following example shows how to use the WhereCondition argument of the OpenForm method to filter the records displayed on a form as it is opened.

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Метод OpenForm выполняет действие OpenForm в Visual Basic. The OpenForm method carries out the OpenForm action in Visual Basic.

Синтаксис Syntax

выражение.OpenForm (FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs) expression.OpenForm (FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)

выражение: переменная, представляющая объект DoCmd. expression A variable that represents a DoCmd object.

Параметры Parameters

Предположим, что вы открываете ленточную форму со списком клиентов. For example, suppose that the form that you open is a continuous-form list of clients. Если вы хотите, чтобы при открытии формы фокус переместился к записи определенного клиента, вы можете указать имя клиента с аргументом OpenArgs, а затем использовать метод FindRecord для перемещения фокуса на запись клиента с указанным именем. If you want the focus to move to a specific client record when the form opens, you can specify the client name with the OpenArgs argument, and then use the FindRecord method to move the focus to the record for the client with the specified name.

Примечания Remarks

С помощью метода OpenForm можно открыть форму в режиме формы, конструктора форм, режиме предварительного просмотра или режиме таблицы. You can use the OpenForm method to open a form in Form view, form Design view, Print Preview, or Datasheet view. Он позволяет выбирать режим ввода данных и режим окна для формы, а также ограничивать количество записей, отображаемых в форме. You can select data entry and window modes for the form and restrict the records that the form displays.

Максимальная длина аргумента WhereCondition — 32 768 символов (в отличие от аргумента действия WhereCondition в окне макроса, максимальная длина которого составляет 256 символов). The maximum length of the WhereCondition argument is 32,768 characters (unlike the WhereCondition action argument in the Macro window, whose maximum length is 256 characters).

Пример Example

В следующем примере открывается форма Employees (Сотрудники) в режиме формы и отображаются только записи со значением King в поле LastName (Фамилия). The following example opens the Employees form in Form view and displays only records with King in the LastName field. Можно изменять отображаемые записи, а также добавлять новые записи. The displayed records can be edited, and new records can be added.

В следующем примере показано, как открыть форму frmMainEmployees в режиме формы и отобразить только записи, которые относятся к отделу, выбранному в поле со спискомcboDept. The following example opens the frmMainEmployees form in Form view and displays only records that apply to the department chosen in the cboDept combo box. Можно изменять отображаемые записи, а также добавлять новые записи. The displayed records can be edited, and new records can be added.

В следующем примере показано, как использовать аргумент WhereCondition метода OpenForm, чтобы отфильтровать записи, отображаемые в форме при ее открытии. The following example shows how to use the WhereCondition argument of the OpenForm method to filter the records displayed on a form as it is opened.

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Применение

Определяет строковое выражение, указываемое аргументом OpenArgs метода OpenForm, который открывает форму. Это свойство возвращает доступное для чтения и записи значение типа Variant.

выражение (обязательно). Выражение, возвращающее один из объектов из списка «Применение».

Замечания

Это свойство можно задать только с помощью макроса или с помощью метода OpenForm объекта DoCmd в Visual Basic для приложений (VBA). Значение свойства доступно только для чтения во всех представлениях.

Чтобы использовать свойство OpenArgs, откройте форму с помощью метода OpenForm объекта DoCmd и укажите для аргумент OpenArgs нужное строковое выражение. После этого значение свойства OpenArgs можно использовать в коде для формы, например в процедуре обработки событий Open (Открытие). На значение свойства также можно ссылаться в макросе, например макросе «Открытие», или выражении, например выражении, задающем свойство ControlSource (Данные) для элемента управления в форме.

Предположим, что вы открываете ленточную форму со списком клиентов. Если вы хотите, чтобы при открытии формы фокус переместился к записи определенного клиента , вы можете задать для свойства OpenArgs имя клиента, а затем использовать макрокоманду НайтиЗапись в макросе «Открытие» для перемещения фокуса на нужную запись.

Пример

В следующем примере свойство OpenArgs используется, чтобы открыть форму Employees для записи конкретного сотрудника. Здесь показано, как с помощью метода OpenForm задается свойство OpenArgs. Данную процедуру можно выполнять в зависимости от ситуации — например, когда для пользовательского диалогового окна, используемого для ввода новых сведений о сотруднике, происходит событие AfterUpdate (После обновления).

Читать еще:  Операторы в access

В следующем примере метод FindFirst используется для поиска сотрудника, указанного в свойстве OpenArgs.

Microsoft Access 2010 tutorial:Docmd to open form

DoCmd.OpenForm

VI. DoCmd.OpenForm

DoCmd.OpenForm (FormName, View, Filter, WhereCondition, DataMode, WindowMode, OpenArgs)

FormName: It is the name of a form in the current database. It is a required argument. It must be written between double quotes.

View: There are a few types of form’s view such as acDesign, acNormal, acPreview, acLayout and so on. You can choose one among those types to specify your form when it opens.

Filter: A query’s name is in the current database. You must set it between double quotes.

WhereCondition: Where the SQL clause without the word WHERE is applied. You must set it between double quotes.

DataMode: ​ This argument allows you to specify the data entry mode for your form. You can add data, edit data, or you can just read the data.

WindowMode: You can specify the window mode when the form open. You can open a form as acDialog, acHidden, acIcon or acWindowNormal.

+ acDialog: The open form cannot move.

+ acHidden: The open form is hidden.

+ acIcon: The open form displays as an icon.

+ acWindowNormal: The open form displays as the view form.

OpenArgs: This argument is used to specify the specific record when a form open. You must set it between double quotes.

Note: All arguments in DoCmd.OpenForm syntax are optional except FormName argument.

Ex1: You have a form as the figure below:

The form expresses that the employee that has ID equal to Emp004 that is the one who issued the invoice(Inv002). If you want to know about the detail information of the employee, you need to click View Employee Info button on the form. After you click this button, it displays a form like the following figure:

To make the View Employee Info button perform the action above, you need to apply the VBA Code on View Employee Info button. Before you apply the VBA Code, you should rename it as CmdView; and then type the following VBA Code:

Ex2: You have two forms: FrmViewBook and FrmBookInfo. The FrmViewBook lists all books in the List Box. Each book shows only BookID, and Title. When you want to see the detail of any book, double-click it in the List Box. The FrmBookInfo opens and displays the detail of the book. To do this task, you have to apply the VBA code in FrmViewBook and FrmBookInf as the following:

— FrmViewBook:

Private Sub Form_Load()
‘Retrieve data from TblBook into List Box
lstBookData.RowSourceType = «Table/Query»
lstBookData.ColumnHeads = True
lstBookData.ColumnCount = 2
lstBookData.RowSource = «Select BookID, Title from TblBook»
End Sub

Private Sub lstBookData_DblClick(Cancel As Integer )
DoCmd.OpenForm «FrmBookInfo», acNormal, , , , , lstBookData.Column(0, lstBookData.ListIndex + 1)
End Sub

— FrmBookInfo:

Private Sub Form_Open(Cancel As Integer )
Dim strBookID As String
‘ If OpenArgs property contains BookID, find
‘ corresponding Book record and display it on form. For
‘ example,if the OpenArgs property contains double-clicked record,
‘ move to first double-clicked record.
trBookID = Forms!FrmBook.OpenArgs
If Len(strBookID) > 0 Then
DoCmd.GoToControl «BookID»
DoCmd.FindRecord strBookID, , True , , True , , True
End If
End Sub

The figure of the two forms:

Comments

Hello
I wanna work in my project, when click a button , open new form and the new form should show that the other form’s related values.

Different ways to open an Access form using DoCmd.OpenForm

A form has many properties that determine its behaviour. These properties concern the way data are presented, possible filters, how it can be used to enter of edit data etcetera. When you design your form, that is the time you will decide on the defaults for your form. However you may want to use roughly the same form in different ways. A powerful way to change from the design-time default behaviour is using the DocDmd.OpenForm arguments.

OpenForm with FormName

The simple way to open a form is by supplying the FormName and keeping all the defaults.

When opened this way Access interprets the command with defaults as here:

OpenForm View

The most common ways to open a form are as Form (acNormal) or as datasheet (acFormDS). Special View modes which can only be set in design time are Split form and Continuous form. A split form can be useful if the user wants to easily navigate between records and at the same time make changes to the data. More info: Create a split form. A continuous form is used when a datasheet is insufficient.

Other view modes are acFormPivotTable and acFormPivotChart. For more info see Programming Pivot Tables for Access Forms

Data mode

If you leave the DataMode argument blank the default constant, acFormPropertySettings, is assumed. This opens the form in the data mode set by the form’s AllowEdits, AllowDeletions, AllowAdditions and DataEntry properties.

The other possible DataMode values are:

  • acFormAdd — which opens the form on a ‘new’ (empty) record allowing the user to create a new record.
  • acFormEdit — shows the contect of the current selected record and allows editing.
  • acFormReadOnly- no adding or editing allowed.

OpenForm WindowMode

The default value acWindowNormal shows the form as normally done in Access. Using acDialog causes the form’s Modal and PopUp properties to be set to Yes. With acDialog your calling code should not continue until the form is closed.

OpenForm using FilterName

FilterName refers to a query in the current database. You can use either an existing query or a filter that was saved as a query. You can use it both for getting a subset and for having it sorted.

OpenForm WhereCondition

A valid SQL WHERE clause (without the word WHERE) to select records from the form’s underlying table or query. If you select a filter with the Filter Name argument, Access applies this WHERE clause to the results of the filter.

To open a form and restrict its records to those specified by the value of a control on another form, use the following expression:

[fieldname] = Forms![formname]![controlname on other form]

Replace fieldname with the name of a field in the underlying table or query of the form you want to open. Replace formname and controlname on other form with the name of the other form and the control on the other form that contains the value you want records in the first form to match.

Читать еще:  Запись в access

OpenForm OpenArgs

OpenArgs gives an opportunity to pass data to the form which it then can pick up in the Form_Open event. Example of how to do that can be found here.

CODE VBA — AGORA Software BV Copyright 1997-2019

DataWright Information Services

Consulting and Resources for Excel and Access

DoCmd.OpenForm and its options

The following description of DoCmd.OpenForm comes from the Access online help. The syntax of the method is

Only FormName is required, all other arguments are optional. If you want to use some, but not all, arguments, you must include commas for the ones you skip, or the code will fail.

Examples

Opening a form and using an existing query as a filter

Assuming that qrySales_NSW filters the Sales qrySales for sales from New South Wales, the following code will use that query to filter frmSales:

Creating an SQL statement to display records matching the ID of the current form

Often you will want to open a form and display records matching the ID of the currently open form.

Opening a new, blank record for data entry

To open a blank record, set the data mode to acFormAdd:

Opening a form so that the data is read-only

To open a form in read-only mode, set the data mode to acFormReadOnly:

Opening a form as a Dialog form

When a form opens in Dialog mode, its Popup and Modal properties are set to Yes. This means that:

  • The form will stay on top until you dismiss it
  • The user is forced to interact with the form — no other forms or windows are active while the Dialog form is displayed
  • If your window is Maximized, the dialog will not affect the window state of the application, even though the popup form will not open Maximized. This means that you won’t have your forms resizing as you open and close them

Opening a form and keeping it hidden

If you are building a multi-user database where users will have different permissions, you can create a startup form that determines the user’s Windows login name and holds a number of settings that determine what happens when a user launches a form or report. Because this is often a sentinel form, you don’t necessarily want to display it and run the risk of having a user close it; so, open it hidden, and refer to it as needed.

Using OpenArgs to pass one or more parameters to a form when it opens

The OpenArgs argument is very versatile. It is not limited to just passing one parameter; you can use a divider and parse out the components to change values of controls, set form properties, navigate to a selected record, and more.

First, create the DoCmd statement in the caller form. This statement will create a new record in the Sales form, populated with the ID of the customer on the current record.

Then, use the target form’s Load event to set the value in the combo box. The pipe symbol is the separator for the multiple parameters. We can use the Split function (in Access 2000 and higher) to parse out the values. In the first code sample, the ID is a number; in the second, it is text.

Note: In SQL it is necessary to wrap text values in single or double quotes. This is NOT required for OpenArgs, and will cause errors if you do it.

See here for a way to use OpenArgs to pass a SQL statement, so that a form or listbox is filtered when it opens.

Copyright В© 1997-2010 All Rights Reserved.

Home | About | Links | Contact | Excel | Access

12.5 Работа с формами Access из VBA (объект Form )

Объект Access.Form, работа с формами Access средствами VBA, открытие формы Access, работа с элементами управления на форме Access

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

Формы Access используются:

  • Для редактирования записей в таблицах базы данных Access и внешних источников данных. Для того, чтобы создать такие формы, вообще не нужно никакого программирования — достаточно создать форму в режиме конструктора или воспользоваться мастером создания форм. Подключиться к внешнему источнику данных (например, базе данных SQL Server или Oracle) можно, воспользовавшись в Access меню Файл ->Внешние данные ->Связь с таблицами.
  • Как панели управления вашего приложения. Очень часто в приложении на основе Access создается начальная форма, которая открывается при запуске этого приложения. На этой формы предусмотрены кнопки и другие элементы управления для вызова других форм, отчетов, макросов, выхода из приложения и выполнения прочих операций. После закрытия других форм управления опять передается начальной форме.
  • Просто для предоставления пользователю возможности выполнения любых действий. Например, форму можно использовать для выбора пользователем параметров отчета, выгрузки данных во внешнее приложение (например, Excel) и т.п.

Как работать с формами Access из VBA?

Первое, что необходимо сказать — для работы с формами во многих ситуациях нам придется использовать общий объект AccessObject, который представляет в Access не только формы, но и таблицы, макросы, модули, отчеты и множество других элементов. Поскольку этот объект — универсальный, то, конечно, большой помощи от Intellisense — подсказки в редакторе VBA у нас не будет. Обратиться к объекту формы можно через коллекцию AllForms, которая доступна через объекты CodeProject и CurrentProject. Например, получить информацию о всех формах в базе данных Access можно так:

Dim oA As AccessObject

For Each oA In CurrentProject.AllForms

Если вы будете обращаться к формам в коллекции AllForms по индексу, обратите внимание, что нумерация форм в этой коллекции начинается с 0. Обращаться к элементам в этой коллекции можно и по имени:

Специальное свойство IsLoaded определяет, открыта ли эта форма (то есть загружена ли она в оперативную память).

Читать еще:  Docmd access методы

Программным образом формы можно найти и другим способом. Все открытые формы Access автоматически помещаются в коллекцию Application.Forms и представляются в виде объекта Form. Это — уже нормальный объект, свойства которого соответствуют свойствам формы, доступным через графический интерфейс. Например, если форма Форма1 открыта, получить информацию о ее ширине можно так:

Debug.Print Application.Forms(«Форма 1»).Width

Это свойство можно использовать и для изменения ширины формы, но для этой цели рекомендуется использовать метод DoCmd.MoveSize(), который изменяет размеры активного объекта (например, нашей формы, если она активна):

DoCmd.MoveSize Width :=10000

Еще одна возможность: если вы работаете с кодом самой формы или ее элементов управления (например, события Click кнопки, которая расположена на форме), то обратиться к объекту самой этой формы можно совсем просто. Для этого используется ключевое слово Form.

Как можно открыть форму?

Первое, что нужно сказать — если в Word или Excel нам обязательно потребуется открыть форму программным способом, то в Access это совсем необязательно. Можно открыть форму и вручную из окна базы данных (см. рис. 12.1). Из этого же окна обычно производится создание новых форм или изменение существующих.

Рис. 12.1 Окно для работы с формами в Access

Еще один часто используемый способ — просто запускать форму при открытии базы данных Access. Для этого в меню Сервис нужно выбрать Параметры запуска и выбрать нужную форму в списке Вывод формы/страницы. Если при этом вы уберете все остальные флажки, то приложение при открытии приложение может выглядеть так, как показано на рис. 12.2:

Рис. 12.2 Все лишние возможности Access спрятаны от пользователя

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

Если все-таки нужно открыть форму программным способом (например, из другой формы), то для этой цели можно использовать метод DoCmd.OpenForm(). В самом простом варианте этот метод просто принимает параметр с именем формы:

Если же форма уже открыта, то этот метод, конечно, не открывает форму заново, а просто активизирует ее. Метод DoCmd.OpenForm() принимает также несколько необязательных параметров, при помощи которых вы можете настроить фильтр на отображение записей в форме, режим открытия формы (например, модальность) и т.п. Закрытие формы производится при помощи метода DoCmd.Close(). Если же вам нужно просто спрятать форму, чтобы сохранить введенные на ней пользователем значения и отобразить их при следующем показе, можно просто сделать форму невидимой, назначив ее свойству Visible значение False.

Форма нам обычно нужна не сама по себе, а как контейнер для расположенных на ней элементов управления. Обычно элементы управления программным способом создавать не требуется — намного проще и удобнее поместить их на форму в режиме конструктора для формы. В наборе элементов управления для формы предусмотрены как знакомые нам элементы управления — текстовые поля, надписи, кнопки, флажки и переключатели, так и новые элементы — свободная и присоединенная рамки объектов, разрывы страниц, подчиненные формы/отчеты и т.п. В верхнем правом углу Toolbox в конструкторе формы Microsoft Access находится специальная кнопка Мастера. Если она нажата, то добавление на форму привычных элементов управления (например, кнопки) приведет к появлению окна мастера, который попытается помочь вам автоматически сгенерировать нужный код VBA для этого элемента управления (см. рис. 12.3)

Рис. 12.3 Мастер создания кнопок

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

Для чего используются нестандартные (по отношению к обычным формам VBA) элементы управления:

  • Свободная рамка объекта — возможность разместить на форме OLE-объект (например, документ Word, лист Excel, презентация PowerPoint, рисунок, звукозапись или видеоклип), который может быть встроен в базу данных Access (но не помещен в таблицу!) или находиться во внешнем по отношению к базе данных Access файлу.
  • Присоединенная рамка объекта — то же самое, за исключением того, что он применяется для работы с объектами OLE, которые хранятся в таблицах внутри баз данных Access или внешнего источника данных. Это — самый удобный способ генерации отчетов в Word.

Например, предположим, что в нашей базе данных Access находится таблица с тремя столбцами, как показано на рис. 12.4.

Рис. 12.4 Таблица для хранения шаблонов Word

В столбце File у нас хранятся шаблоны Word, которые используются для генерации отчетов. Мы помещаем на форму элемент управления Присоединенная рамка объекта с именем WordTemplate. После этого все, что нужно для создания файла Word на основе шаблона из базы данных, у нас уже есть. Для кнопки, по нажатию на которой будет формироваться отчет, можно использовать следующий код:

‘Получаем ссылку oFrame на объект присоединенной рамки на форме

Dim oFrame As BoundObjectFrame

Set oFrame = oForm.Controls(«WordTemplate»)

‘При помощи метода DLookup () скачиваем в него значение столбца File из таблицы

‘Templates, где номер строки (значение столбца Num ) равно 1

oFrame = Application.DLookup(«[File]», «Templates», «[Num] = 1»)

‘Открываем объект в отдельном окне приложения — то есть создаем

‘документ Word на основе шаблон, загруженного в рамку объекта на форме

‘Активизируем объект приложения

‘Получаем ссылку на Word в переменную oWord

Dim oWord As Word.Application

Set oWord = GetObject(, «Word.Application»)

‘Получаем ссылку на созданный нами документ

Dim oDoc As Word.Document

Set oDoc = oWord.ActiveDocument

‘Дальше работаем средствами Word, например, вставляем нужный текст

‘в места, отмеченные закладками

Конечно же, правильнее будет при этом сделать эту присоединенную рамку объекта на форме изначально невидимой — чтобы пользователь не мог этот объект активизировать по собственной инициативе.

  • Элемент управления Разрыв страницы — определяет начало нового экрана формы.
  • Подчиненная форма/отчет — используется для размещения на форме подчиненных форм, таблиц или отчетов.

Как уже говорилось, программным способом элементы управления в форме Access приходится создавать редко. Если на форме вам нужен переменный набор элементов управления, то правильнее будет с самого начала создать все нужные элементы управления и по необходимости делать их то видимыми, то невидимыми. Тем не менее создать программным способом элементы управления на форме тоже можно. Эта операция выполняется при помощи метода Application.CreateControl(), который принимает множество параметров — имя формы, на которой создается элемент управления, тип элемента управления, его месторасположение на форме и т.п.

Обращение к значениям элементов управления на форме производится через коллекцию Controls, которая умеет работать с именами элементов управления:

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector