На форму можно помещать и дополнительные элементы, любые зарегистрированные на Вашем компьютере. Для этого в панели инструментов есть кнопка дополнительные элементы.
Нажав на эту кнопку у вас выпадет список элементов которые есть на компьютере. Давайте найдем календарь.
После того как Вы его выберите его можно поместить на форму.
Теперь к этому элементу можно обращаться из VBA. Вот так например. В данном примере строить запрос на основе дат установленных в календаре.
Dim date1 As String Dim date2 As String Dim x As Integer date1 = Str(Me!ЭлементActiveX2.Day) + "/" + Str(ЭлементActiveX2.Month) + "/" + Str(ЭлементActiveX2.Year) date2 = Str(Me!ЭлементActiveX3.Day) + "/" + Str(ЭлементActiveX3.Month) + "/" + Str(ЭлементActiveX3.Year) date1 = "#" + date1 + "#" date2 = "#" + date2 + "#" Dim dbs As Database, qdf As QueryDef, strSQL As String ' имя организация Dim strOrd As String ' Возвращает ссылку на текущую базу данных. Set dbs = CurrentDb ' установить фокус Me.Организация.SetFocus ' получает строку из поля со списком strOrd = Me.Организация.Text strOrd = "'" + strOrd + "'" ' построить запрос strSQL = "SELECT parther.Name,chet.Nomer, chet.Data, chet.Prixod," strSQL = strSQL + " chet.Rasxod FROM parther INNER JOIN chet ON parther.ID_PARTHER" strSQL = strSQL + " = chet.ID_PARTHER WHERE ( parther.Name=" + strOrd + ")" strSQL = strSQL + " AND ( chet.Data >" + date1 + ")" + " AND ( chet.Data < " + date2 + ")" strSQL = strSQL + " ORDER BY chet.Data; " ' Создает новый запрос. dbs.QueryDefs.Delete ("приход") Set qdf = dbs.CreateQueryDef("приход", strSQL) DoCmd.OpenReport "parther", acViewPreview Set dbs = Nothing End Sub
При использовании элементов ActiveX всегда есть вариант что данного элемента нет на компьютере пользователя. Поэтому лучше при передаче базы лучше копировать элементы и производить из регистрацию. Вот пример команды для регистрации элемента управления:
Regsvr32.exe Mscal.ocx
Подробнее о элементах управления читайте "Шаг 34 - Регистрация компонент RegSrv32".