Поделиться через


Объект Форма (Form) (Access)

Объект Форма (Form) ссылается на конкретную форму Microsoft Access.

Примечания

Объект Форма является членом коллекции Формы, которая представляет собой набор всех открытых в настоящее время форм. Внутри коллекции Формы отдельные формы индексируются, начиная с нуля. Ссылайтесь на отдельный объект Форма в коллекции Формы либо с помощью ссылки на форму по имени, или с помощью ссылки на индекс формы в коллекции.

Если вы хотите сослаться на конкретную форму в коллекции Формы, лучше всего ссылаться на форму по имени, так как индекс формы в коллекции может измениться. Если имя формы содержит пробел, имя нужно заключать в квадратные скобки ([ ]).

Синтаксис Пример
AllForms!имя_формы AllForms!OrderForm
AllForms![ имя_формы] AllForms![Order Form]
AllForms("имя_формы") AllForms("OrderForm")
AllForms(index) AllForms(0)

Каждый объект Форма имеет коллекцию Элементы управления, которая содержит все элементы управления для формы. Ссылайтесь на элемент управления для формы явно или неявно, используя ссылку на коллекцию Элементы управления. Код будет выполняться быстрее, если вы сошлетесь на коллекцию Элементы управления неявно. В следующих примерах показаны два способа, с помощью которых вы можете сослаться на элемент управления с именем NewData для формы, которая называется OrderForm.

 ' Implicit reference. 
Forms!OrderForm!NewData
' Explicit reference. 
Forms!OrderForm.Controls!NewData

В следующих двух примерах показано, как вы можете сослаться на элемент управления с именем NewData для подчиненной формы ctlSubForm, которая содержится в форме, которая называется OrderForm.

Forms!OrderForm.ctlSubForm.Form!Controls.NewData
Forms!OrderForm.ctlSubForm!NewData

Пример

В приведенном ниже примере показано, как использовать элемент управления TextBox для задания условий отбора даты для запроса.

Private Sub cmdSearch_Click()

   Dim db As DAO.Database
   Dim qd As QueryDef
   Dim vWhere As Variant

   Set db = CurrentDb()

   On Error Resume Next
   db.QueryDefs.Delete "Query1"
   On Error GoTo 0

   vWhere = Null

   vWhere = vWhere & " AND [PayeeID]=" + Me.cboPayeeID

   If Nz(Me.txtEndDate, "") <> "" And Nz(Me.txtStartDate, "") <> "" Then
      vWhere = vWhere & " AND [RefundProcessed] Between #" & _
      Me.txtStartDate & "# AND #" & Me.txtEndDate & "#"
   Else
      If Nz(Me.txtEndDate, "") = "" And Nz(Me.txtStartDate, "") <> "" Then
         vWhere = vWhere & " AND [RefundProcessed]>=#" _
                  + Me.txtStartDate & "#"
      Else
         If Nz(Me.txtEndDate, "") <> "" And Nz(Me.txtStartDate, "") = "" Then
            vWhere = vWhere & " AND [RefundProcessed] <=#" _
                     + Me.txtEndDate & "#"
      End If
     End If
   End If

   If Nz(vWhere, "") = "" Then
      MsgBox "There are no search criteria selected." & vbCrLf & vbCrLf & _
             "Search Cancelled.", vbInformation, "Search Canceled."
   Else
      Set qd = db.CreateQueryDef("Query1", "SELECT * FROM tblRefundData? & _
               " WHERE " & Mid(vWhere, 6))
      db.Close
      Set db = Nothing

      DoCmd.OpenQuery "Query1", acViewNormal, acReadOnly
   End If
End Sub

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

Private Sub Form_BeforeUpdate(Cancel As Integer)
If (IsNull(Me.FieldOne)) Or (Me.FieldOne.Value =  "") Then
    ' No action required
Else
    If (IsNull(Me.FieldTwo)) or (Me.FieldTwo.Value = "") Then
        MsgBox "You must provide data for field 'FieldTwo', " & _
            "if a value is entered in FieldOne", _
            vbOKOnly, "Required Field"
        Me.FieldTwo.SetFocus
        Cancel = True
        Exit Sub
    End If
End If

End Sub

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

Private Sub Form_Open(Cancel As Integer)

If Me.OpenArgs() <> "Valid User" Then
    MsgBox "You are not authorized to use this form!", _
        vbExclamation + vbOKOnly, "Invalid Access"
    Cancel = True
End If
End Sub

В следующем примере показано, как использовать аргумент WhereCondition метода OpenForm, чтобы отфильтровать записи, отображаемые в форме при ее открытии.

Private Sub cmdShowOrders_Click()
If Not Me.NewRecord Then
    DoCmd.OpenForm "frmOrder", _
        WhereCondition:="CustomerID=" & Me.txtCustomerID
End If
End Sub

Мероприятия

Методы

Свойства

См. также

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

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.