А.Ю. Гончаров Access 2003 (960524), страница 43
Текст из файла (страница 43)
Для добавленияновой вкладки используется команда Добавить вкладку. Раскроем окно свойстввкладки и запишем туда новые заголовки (параметр Подпись) для вкладок'.Письмо, Адреса, Инструкция, Дополнительно. Имя каждой вкладки можно выбирать изсписка в окне свойств.Можно было бы поступить по-другому. Заменить имена вкладок Pagel, Page2,Page3, Page4 (параметр Имя) необходимыми нам словами.
Поскольку подписисостоят из одного слова, они вполне могут играть роль имен. В любом случаерезультат будет одинаковый.Пример базы данных рассылки почты249Создание элементов управленияДля пользователя, который начинает работу с новой программой, подсказкиникогда не бывают лишними. В верхней части вкладки Письмо можносформировать краткое руководство к действию.
Нажмем кнопку Надпись, нарисуем прямоугольную зону надписи и введем текст: «Заполните письмо и нажмитекнопку "Отправить письма"».Для создания и просмотра письма предусмотрим несколько полей. Посколькуони будут использовать данные из ЗапросПисьма, то надо указать этот запросв качестве источника данных для всей формы. Откроем окно свойств формыи в строке Источник записей выберем из списка название этого запроса.Нажмем кнопку Поле и нарисуем первую строку - это будет тема письма.Строка должна быть достаточно длинной. Помните, мы установили длину этогополя равной 50 символам? Отредактируем подпись для этого поля: «Тема».В окне свойств поля выберем источник записей (параметр Данные): Тема.
Полеавтоматически выбирается из таблицы или запроса, связанного с формой.Сделаем еще одно такое же поле ниже, но в качестве источника записей выберем поле ДопФаЙл.Рядом с этим полем полезно разместить кнопку (необходимый для этою инструмент называется так же) для выбора файла в режиме диалога. Название этойкнопки конечно же Обзор. В окне свойств кнопки запрограммируем событие«Нажатие кнопки». Процедура должна быть такая:Private Sub Command56_Cliek()Dim fd As FileDialog ' Объект - окно диалога' Определяем диалог выбора файлаSet fd = Application.FileDialog(msoFileDialogFilePicker)Dim vrtSelectedltem As Variant ' Путь к файлуWith fd ' Главный циклIf .Show = -1 ThenFor Each vrtSelectedltem In .SelectedltemsMe!Text9 = vrtSelectedltemNext vrtSelectedltemElseEnd IfEnd WithSet fd = Nothing ' Очистка объектной переменнойEnd Sub250Глава 11Здесь Command56 - имя кнопки, a Text9 - имя поля формы, соответствующегополю таблицы ДопФайл.
Пользователю не придется набирать путь к файлувручную, а информация из формы будет записываться и в таблицу.Третье поле создадим в виде прямоугольной области. Подпись этого поляможно удалить (выделить мышью только этот элемент и нажать клавишу Delete):пользователь и так понимает, для чего нужен этот текст. Источник данных - полеПисьмо. Для того чтобы пользователь мог набирать в этой области многострочныйтекст, свойство поля Поведение по Enter нужно установить в режим «Переводстроки».Еще необходимо создать кнопку и флажок.
Нажмем инструмент Кнопкаи нарисуем мышью контур кнопки. Если запустится мастер кнопок, отключим его.В свойствах кнопки необходимо заполнить пока только свойство Подпись: ввеститекст «Отправить письма». С этой кнопкой должна быть связана процедура отправки писем (рассмотренная ниже). Имя кнопки Otpravit.Рядом создадим флажок. На панели Панель элементов за него отвечает кнопкаФлажок. В свойствах нового элемента (а он состоит из трех частей: галочки, подписии самого элемента) нужно изменить подпись: ввести фразу «МОЖНО РАБОТАТЬ».Параметр Значение по умолчанию должен быть равен «Истина» - галочка поумолчанию установлена. Для того чтобы остановить процесс рассылки, пользователю достаточно будет снять флажок.Но пока программа работает, полезно выводить на экран какую-нибудь информацию. Это могут быть номера обработанных записей (почтовых адресов).Создадим поле и сделаем для него подпись «Обработано адресов».
Дадим полюимя Obrab - оно пригодится при написании программы.Чтобы различать режимы останова программы и рассылки, придется сделатьеще одно поле-индикатор. Подпись его будет, к примеру, «Статус:», а имя оставим то, которое дала программа, - Поле93. Это имя тоже потребуется при составлении программы.Теперь можно задать свойства самой формы. Нам не подойдет стандартнаястрока выбора записей из таблицы, потому что кнопки навигации будут нужнытолько на первой вкладке. Поэтому параметр Кнопки перехода нужно установить как «Нет». При сохранении макета формы зададим ее имя: Рассылка.Форма в режиме конструктора показана на рис.
11.1.На этом этапе можно переключиться в режим просмотра формы и убедиться,что работает связь с таблицей ТаблицаПисыча. Для этой цели надо предварительно занести в таблицу две-три тестовые записи.Пример базы данных рассылки почтыi25Jnccoi'ina : форма-.G1 . i . i • i • г • i - з i • i • i . 5 • i • e • i • 7 • i • e • i • * • r • ю • i • n • i • is • < • в • " • и • i • ts • .
ie •A.1* Область данныхПисьмо Адреса - Инструкция ' Дополнительно• Заполните письмо и нажмите кнопку "Отправить пнсьна" iiTftniПрисоединенный файл: |ДогПайл•.[:С^аор _|ПисьпоetОтпвавить письма,••] И МОЖНО РАБОТЙТЬ jОЕра6отэио адресов:;Пнсьн^:": Всего; }!Свободный..... . ..ПИСЬМА^1и]NJ'Ml-PisemfjИ"™; :[>_1|И|И>!Мfl^]1ДагэСвободныиV<}>Рис. 1 1 . 1 . Вкладка для рассылки писемNBПосле редактирования формы в режиме конструктора (желательнозакрывать окно формы, чтобы сохранить сделанные изменения, а потом открывать ее в режиме просмотра.С помощью команды Сервис => Параметры запуска зададим автоматический вывод формы на экран после открытия файла базы данных.Панель перехода по записямКнопки перехода по записям пришлось исключить, потому что они необходимы только для первой вкладки, а на остальных они не нужны.Но пользователям наверняка захочется просматривать ранее написанные письма, так что им потребуются кнопки для управления соответствующим запросом.Раз уж мы удалили кнопки навигации для всей формы, создадим их отдельно длявкладки Письмо.Надо снова включить режим конструктора и продолжить работу с формой.Вначале разместим в нижней части формы надпись «ПИСЬМА:».
Потом нам потребуется мастер кнопок, с помощью которого мы создадим несколько кнопок.252Глава 11Мастер кнопок запускается, если на панели элементов нажата кнопкаМастера, а разработчик создает новую кнопку. В окне мастера можно выбратьодну из стандартных кнопок. Вначале нам потребуется кнопка Переход к первойзаписи, а затем Переход к предыдущей записи. С помощью окна свойств можноустановить размер кнопок 0,6x0,6 см.Затем надо создать поле для показа номера записи.
Достаточно создатьобычное поле и задать его свойства:Данные-N1,Доступ - Нет.Блокировка - Да.Комбинация последних двух свойств позволяет, с одной стороны, запретитьпользователю изменение данных в этом поле, а, с другой стороны, не делать этополе «серым», чтобы цифры были хорошо видны.
Подпись этого поля: «Письмо:».В качестве номера записи можно использовать поле счетчика, у которого заданрежим последовательной авто нумерации. Правда, с помощью запроса мы «перевернули» таблицу, но это не страшно: пользователь легко разберется, где находятся новые письма, а где старые.Рядом можно создать поле, в котором будет показано общее количество созданных писем, то есть количество записей в ЗапросПисьма и соответственнов ТаблицаПисьма. Поле будет такое же, как и предыдущее, но с двумя отличиями.
Во-первых, надо задать его подпись: «Всего:». Во-вторых, надо иначе определить параметр Данные. Создадим функцию, которая будет подсчитывать числозаписей в запросе. Командой Сервис => Макрос => Редактор Visual Basic откроем окно редактора программ (рис. 11.2).Убедимся, что в левой панели выбрана наша форма Рассылка. Слово «General» (Общий) в верхней части редактора говорит нам о том, что мы находимсяв разделе подпрограмм общего назначения, которые обслуживают форму.Обычно здесь помещаются подпрограммы для обеспечения работы элементовуправления формы. Например, при нажатии на одну из кнопок должна выполняться определенная подпрограмма.Мы можем добавить в эту область свою программу-функцию для вычисленияколичества записей.
Дадим ей имя «Pisera»:Public Function Pisem() As LongPisem = DCountf*", "ЗапросПисьма")End FunctionПример базы данных рассылки почты253Microsoft Visual Baifc • pechta - [Рогт_Рассылиа (Code)]-Private Sub Comnand2B__Ciick( IOn E r r o r GoTa E r r Сомпапс12В C l ipochta (pnchta)*i Mttosoft Off ire Access'Л Рогт_Раосылка:','К:<!'->.Рассыпка Роггг_Рассы™<:аDoCmd. CoHenuItem acforniBar, neEctitHenu, 8,DoCmd.DoHanuItem acFormBar, acEdiCHenu, 6,, acHenuVsr^Q, ecHenuVer7Q>-_-EAlpfiabetic jcateoorijtd |ПядВох Err.DescriptionB^surae E x l c ConrriOtidSЭ C i i c kiHania)' AfcerDEiCcinfirmAfterFinalRendfAfter InsertAfteLayoutAf he 'Renderuft'rUpdaheAlcw^dd Bons ' •AbwDatasheef uAlowDetetior;EPublic F u n c t i o n P i s e m o is LongPPisem = DCounr, ("*", "ЗапросПисьиа"!EndFunctionE..JLTРис.
1 1 .2. Создание функции для формыОператор «Public» позволяет функции быть доступной во всей базе данных.Процесс вычисления значения функции состоит из одной строки, в которой использована стандартная функция Visual Basic - DCountC). У нее два аргумента.Аргумент «звездочка» говорит о том, что надо подсчитать все записи, а второйаргумент указывает, где именно.Теперь можно закрыть окно редактора Visual Basic и задать свойство Данныедля нашего нового поля.