Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Изменение размера числового поля

Читайте также:
  1. В) Изменение внутренней структуры
  2. Возможно изменение дат заездов!
  3. ГЛАВА 13. ВЫЯВЛЕНИЕ И ИЗМЕНЕНИЕ ГРАНИЦ
  4. Глава 28. Изменение убеждений
  5. ГЛАВА 4. ИЗМЕНЕНИЕ СТРУКТУРЫ
  6. Да. Излечение — это изменение состояния, а исцеление — это изменение способа переживания состояния.
  7. Демонстрация: Изменение внешней границы

Если поле, размер которого необходимо изменить, уже содержит данные, перед продолжением рекомендуется создать резервную копию базы данных. Дополнительные сведения см. в разделе См. также.

1. Щелкните правой кнопкой мыши таблицу, содержащую поле, которое нужно изменить, и выберите пункт Конструктор.

2. В сетке конструктора таблицы выберите поле, размер которого необходимо изменить.

3. В области Свойства поля на вкладке Общие укажите новый размер поля в качестве значения свойства Размер поля. Можно выбрать одно из значений, приведенных ниже.

· Байт — для целых чисел от 0 до 255. Для хранения требуется 1 байт.

· Целое число — для целых чисел от -32 768 до +32 767. Для хранения требуется 2 байта.

· Длинное целое — для целых чисел от -2 147 483 648 до +2 147 483 647. Для хранения требуется 4 байта.

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

· Одинарное с плавающей точкой — для чисел с плавающей точкой от -3,4 x 1038 до +3,4 x 1038, которые имеют до 7-ми значимых разрядов. Для хранения требуется 4 байта.

· Двойное с плавающей точкой — для чисел с плавающей точкой от -1,797 x 10308 до +1,797 x 10308, которые имеют до 15-ти значимых разрядов. Для хранения требуется 8 байтов.

· Код репликации — для идентификатора GUID, необходимого для репликации. Для хранения требуется 16 байтов. Имейте в виду, что при использовании формата файла ACCDB репликация не поддерживается.

· Вещественное число — для числовых значений от -9,999... x 1027 до +9,999... x 1027. Для хранения требуется 12 байтов.

Изменение размера текстового поля

Если поле, размер которого необходимо изменить, уже содержит данные, перед продолжением рекомендуется создать резервную копию базы данных. Дополнительные сведения см. в разделе См. также.

1. Щелкните правой кнопкой мыши таблицу, содержащую поле, которое нужно изменить, и выберите пункт Конструктор.

2. В сетке конструктора таблицы выберите поле, размер которого необходимо изменить.

3. В области Свойства поля на вкладке Общие укажите новый размер поля в качестве значения свойства Размер поля. Можно ввести значение от 1 до 255. Это число определяет максимальное количество знаков, которое может содержаться в каждом значении. Для текстовых полей большей длины следует использовать тип данных «Поле МЕМО».

Для данных, которые содержатся в текстовых полях, Access не резервирует больше места, чем необходимо для хранения фактических значений. Свойство Размер поля определяет максимальный размер значения поля.

 

ВОПРОС 13

Если свойство Формат (Format) управляет тем, как данные отображаются в поле таблицы, то свойство Маска ввода (Input Mask) позволяет контролировать ввод данных в таблицу. И не только контролировать, но и упрощать процесс ввода. Маску используют в том случае, когда вводимые данные должны содержать определенные символы в некоторых позициях вводимой строки. Самым простым и ярким примером таких данных являются номера телефонов. Маска ввода должна обеспечить возможность вводить только цифры номера, а остальные символы (скобки вокруг кода города, дефис между цифрами номера) будут добавляться автоматически. Маска задается с помощью символов, приведенных в табл. 2.12.

Таблица 2.12. Символы для создания масок ввода

Символ маски Описание
  В данную позицию должна быть введена цифра. Знаки плюс (+) и минус (-) не допускаются
  В данную позицию должна быть введена цифра или пробел. Знаки плюс (+) и минус (-) не допускаются
# В данную позицию должна быть введена цифра, пробел, знаки плюс (+) или минус (-)
; L В данную позицию должна быть введена буква
? В данную позицию может быть введена буква или пробел
А В данную позицию должна быть введена буква или цифра
а В данную позицию должна быть введена буква, цифра или пробел
& В данную позицию должен быть введен произвольный символ или пробел
С В данную позицию может быть введен произвольный символ или пробел. Если пользователь ничего не введет, Access не занесет в эту позицию никаких данных
. Десятичный разделитель (зависит от региональных установок в окне Язык и стандарты Панели управления Windows)
, Разделитель групп разрядов (зависит от региональных установок в окне Язык и стандарты Панели управления Windows)
: – / Разделители в значениях даты и времени (зависят от региональных установок в окне Язык и стандарты Панели управления Windows)
< Преобразует все символы справа к нижнему регистру
> Преобразует все символы справа к верхнему регистру
! Указывает, что маску нужно заполнять справа налево. Этот символ следует использовать в том случае, когда символы в левой части маски являются необязательными. Его можно помещать в любой позиции маски
\ Указывает, что следующий символ необходимо рассматривать в качестве постоянного символа, даже если он является специальным символом маски. Например, \А будет выводить в маске букву А
"литерал" Вместо того чтобы многократно использовать символ обратного слэша (\), можно просто заключить любой литерал в двойные кавычки

 

ВОПРОС 14

При помощи индексов ускоряется сортировка и поиск записей. Индексы таблиц Microsoft Access используются так же, как и предметные указатели в книгах: при поиске данных выполняется их поиск в индексе. Индексы можно создавать по одному или нескольким полям. Составные индексы позволяют пользователю различать записи, в которых первые поля могут иметь одинаковые значения.

Выбор полей для индексирования

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

Поля первичного ключа таблиц индексируются автоматически, а поля с типом данных «Поле объекта OLE» индексировать нельзя. Для остальных полей индексирование используется, если выполняются следующие условия.

· Поле имеет тип данных «Текстовый», «Числовой», «Денежный» или «Дата/время».

· Предполагается выполнение поиска значений в поле.

· Предполагается выполнение сортировки значений в поле.

· Предполагается выполнение сортировки большого числа различных значений в поле. Если поле содержит много одинаковых значений, то применение индекса незначительно ускорит выполнение запросов.

Составные индексы

Если предполагается частое выполнение одновременной сортировки или поиска в нескольких полях, можно создать для этих полей составной индекс. Например, если в одном и том же запросе часто задаются условия для полей «Имя» и «Фамилия», то для этих двух полей имеет смысл создать составной индекс.

При сортировке таблицы по составному индексу Microsoft Access сначала выполняет сортировку по первому полю, определенному для данного индекса. Если в первом поле содержатся записи с повторяющимися значениями, то выполняется сортировка по второму полю, определенному для данного индекса, и так далее.

В составной индекс можно включить до 10 полей.

 

ВОПРОС15

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

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

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

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

 

ВОПРОС 16

В новой версии Microsoft Access существуют четыре режима работы с таблицами: режим Таблицы (Datasheet View), режим Конструктора (Design View), режим Сводной таблицы (Pivot- Table View) и режим Сводной диаграм- мы (PivotChart View).

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

Для быстрого паерехода из одного режима в другой служит кнопака Вид (View) на паанелях инструментов Таблица в режиме таблицы (Table Datasheet), Конструктор таблиц (Table Design), Сводная таблица (PivotTable) и Сводная диаграмма (PivotChart). Чтобы паерейти из режима в режим, достаточно нажать эту кнопаку.

Открыть таблицу в режиме Таблицы можно несколькими спаособами:

В любом случае на экране паоявится окно с содержимым таблицы (рис. 2.1).


Рис. 1. Таблица "Клиенты", открытая в режиме Таблицы

В верхней части таблицы распаолагаются имена паолей (ячеек, находящихся в одном столбце таблицы), ниже следуют запаиси (строки таблицы), в которые вносятся данные. Одна запаись всегда является текущей, и рядом с ней распаоложен указатель текущей запаиси (стрелка в паоле выделения в левой части окна). В нижней части окна распаоложены кнопаки навигации, паозволяющие паеремещать указатель текущей запаиси пао таблице (на паервую запаись, на паредыдущую запаись, на следующую запаись, на паоследнюю запаись). Там же находятся паоле номера текущей запаиси, кнопака создания новой запаиси и указатель общего количества запаисей в таблице. Для создания новой запаиси также служит паоследняя строка таблицы, отмеченная в паоле выделения звездочкой (на рис. 2.1 она не видна).

Горизонтальная паолоса парокрутки паолей таблицы паозволяет увидеть те паоля таблицы, которые не паоместились в окно таблицы. Аналогично вертикальная паолоса парокрутки запаисей таблицы паозволяет увидеть запаиси, находящиеся за паределами окна.

В верхней части окна париложения паоявляется стандартная паанель инструментов Таблица в режиме Таблицы (Table Datasheet). Назначение кнопаок этой паанели и соответствующие им команды меню опаисаны в табл. 1.1.

Кнопка Команда меню Опаисание
Вид (View) Вид, Режим таблицы (View, Datasheet View) Отображение таблицы в различных режимах. Чтобы изменить режим отобра жения таблицы, нажмите стрелку спарава от кнопаки и в паоявившемся спаиске выделите нужный элемент. Если паросто нажать эту кнопаку, таблица будет отображена в режиме Таблицы.
Сохранить (Save) Файл, Сохранить (File, Save) Сохранение активной таблицы
Найти (Search) Файл, Найти (File, Search) паоиск документов пао содержанию
паечать (Print)   паечать таблицы без открытия диалого- вого окна паечать
паредварительный паросмотр (Print Preview) Файл, паредварительный паросмотр (File, Print Preview) паредварительный паросмотр размеще- ния таблицы на листе паеред паечатью
Орфография (Spelling) Сервис, Орфография (Tools, Spelling) пароверка орфографии в текстовых паолях таблицы
Вырезать (Cut) паравка, Вырезать (Edit, Cut) Удаление выделенных объектов из таблицы в буфер обмена Windows
Копаировать (Сору) паравка, Копаировать (Edit, Copy) Копаирование выделенных объектов в буфер обмена
Вставить (Paste) паравка, Вставить (Edit, Paste) Вставка содержимого из буфера обмена
Формат пао образцу (Format Painter)   Копаирование паараметров форматиро- вания из одного выделенного объекта в другой такого же типаа
Отменить (Undo) паравка, Отменить (Edit, Undo) Отмена паоследних действий
Добавить гипаерссылку (Insert Hyperlink) Вставка, Гипаерссылка (Insert, Hyperlink Column) Вставка паоля типаа "гипаерссылка"
Сортировка пао возрастанию (Sort Ascending) Запаиси, Сортировка, Сортировка пао возрастанию (Records, Sort, Sort Ascending Сортировка запаисей пао возрастанию значений в активном паоле
Сортировка пао убыванию (Sort Descending) Запаиси, Сортировка, Сортировка пао убыванию (Records, Sort, Sort Descending) Сортировка запаисей пао убыванию значений в активном паоле
Фильтр пао выделенному (Filter by selection) Запаиси, Фильтр, Фильтр пао выделенному (Records, Filter, Filter by selection) Отбор запаисей, соответствующих вы- деленному фрагменту
Изменить фильтр (Filter by form) Запаиси, Фильтр, Изменить фильтр (Records, Filter, Filter by form) Отображение диалогового окна для ввода критериев отбора запаисей
парименение фильтра (Apply filter) Запаиси, парименить фильтр (Records, Apply filter) Отображение отфильтрованных запаи- сей
Найти (Find) паравка, Найти (Edit, Find) паоиск запаиси пао заданным критериям паоиска
Новая запаись (New Record) Вставка, Новая запаись (Insert, New Record) Добавление новой запаиси в таблицу
Удалить запаись (Delete Record) паравка, Удалить запаись (Edit, Delete Record) Удаление текущей запаиси из таблицы
Окно базы данных (Database Window) Окно, 1 (Window, 1) Отображение окна базы данных
Новый объект (New Object)   Создание нового объекта базы данных. Чтобы выбрать типа создаваемого объекта, нажмите стрелку спарава от кнопаки
Спаравка пао Microsoft Access (Microsoft Access Help) Спаравка, Спаравка пао Microsoft Access (Help, Microsoft Access Help) Вызов паомощника и паолучение спарав- ки пао Access 2002

Таблица 1.паанель инструментов Таблица в режиме Таблицы

Открыть таблицу в режиме Конструктора можно одним из двух следующих спаособов:

паосле выпаолнения указанных действий на экране паоявится окно таблицы в режиме Конструктора, а также паанель инструментов Конструктор таблиц (Table Design) (рис. 2.2).


Рис. 2. Таблица "Клиенты", открытая в режиме Конструктора

Окно таблицы в режиме Конструктора состоит из двух паанелей.

Ключевое паоле таблицы паомечается спаециальным значком — ключик в паоле выделения в левой части окна. Чтобы выделить паоле, достаточно паросто щелкнуть мышью пао строке, в которой опаисывается данное паоле. пари этом в нижней части окна будут паоказаны паараметры именно для этого паоля. паеремещаться между столбцами в верхней паанели окна можно с паомощью клавиши <Таb>, а для паеремещения пао спаиску паолей вверх и вниз паользуйтесь клавишами со стрелками. С паомощью клавиши <F6> можно паеремещаться между паанелями.

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

Остальные кнопаки на этой паанели те же самые, что и на опаисанной ранее паанели Таблица в режиме таблицы (Table Datasheet).

Новый режим — Сводной таблицы — паозволяет паредставлять табличные данные в более удобном и обозримом виде. Сводная таблица паозволяет групапаировать, суммировать или каким-то другим образом обрабатывать данные из обычной таблицы Access. Этот режим является с одной стороны аналогом сводных таблиц в Excel, а с другой стороны — развитием уже давно испаользуемых в Access паерекрестных запаросов.

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

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

 

ВОПРОС 17

Один из важнейших элементов 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

Debug.Print oA.Name

Next

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

Debug.Print CurrentProject.AllForms("Форма1").IsLoaded

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

Программным образом формы можно найти и другим способом. Все открытые формы 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 кнопку <Shift>, но программным способом можно закрыть и такую возможность.

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

DoCmd.OpenForm "Форма1"

Если же форма уже открыта, то этот метод, конечно, не открывает форму заново, а просто активизирует ее. Метод 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 на основе шаблон, загруженного в рамку объекта на форме

oFrame.Verb = acOLEVerbOpen

 

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

oFrame.Action = acOLEActivate

 

'Получаем ссылку на 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(), который принимает множество параметров — имя формы, на которой создается элемент управления, тип элемента управления, его месторасположение на форме и т.п.

 

ВОПРОС 18

Структура формы такова: макет формы состоит из разделов. Любая форма может включать следующие разделы:

· раздел Заголовок формы (Form Header) определяет верхнюю часть формы. Этот раздел добавляется в форму вместе с разделом примечания формы. В область заголовка формы можно поместить текст, графику и другие элементы управления. При печати многостраничной формы раздел заголовка отображается только на первой странице;

· раздел Верхний колонтитул (Page Header) определяет верхний колонтитул страницы при печати формы. Этот раздел добавляется в форму вместе с разделом, определяющим нижний колонтитул страницы, и отображается только когда форма открыта в режиме Предварительного просмотра. При печати многостраничной формы верхний колонтитул отображается вверху каждой страницы;

· раздел Область данных (Detail) определяет основную часть формы, содержащую данные, полученные из источника. Данный раздел может содержать элементы управления, отображающие данные из таблиц и запросов, а также неизменяемые данные, например надписи. При печати многостраничной формы этот раздел отображается на каждой странице;

· раздел Нижний колонтитул (Page Footer) определяет нижний колонтитул страницы при печати формы. Этот раздел добавляется в форму вместе с разделом, определяющим верхний колонтитул страницы. Он отображается только когда форма открыта в режиме Предварительного просмотра. При печати многостраничной формы нижний колонтитул отображается внизу каждой страницы;

· раздел Примечание формы (Form Footer) определяет нижнюю часть формы. Этот раздел добавляется в форму вместе с разделом заголовка формы. При печати многостраничной формы примечание формы будет отображено только внизу последней страницы.

Разделы формы в режиме Конструктора представлены на рис. 5.9. Чтобы надписи, обозначающие разделы формы, были лучше видны, мы скрыли сетку, облегчающую разметку формы (сетка видна на рис. 5.8), с помощью команды меню Вид, Сетка (View, Grid).

Рис. 5.9. Разделы формы Access

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

Замечание

Хотя форма, изображенная на рис. 5.8, имеет оба раздела заголовка и примечания формы, эти области не отображаются в режиме Формы, поскольку оба раздела имеют нулевую высоту. При создании новой пустой формы при помощи Конструктора форм разделы заголовка и примечания не добавляются.

Для добавления или удаления разделов заголовка и примечания формы выберите команду Вид, Заголовок/примечание формы (View, Form Header/Footer). Если форма уже содержит эти разделы, то команда Заголовок/примечание формы будет отмечена флажком. Для удаления разделов заголовка и примечания формы сбросьте этот флажок.

Для добавления или удаления разделов верхнего и нижнего колонтитулов страницы выберите команду Вид, Колонтитулы (View, Page Header/Footer). Если форма уже содержит эти разделы, то команда Колонтитулы будет отмечена флажком. Для удаления разделов верхнего и нижнего колонтитула страницы сбросьте этот флажок.

Замечание

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

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

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

 

ВОПРОС 19

В процессе создания приложения СУБД Access или базы данных решаются две основные проблемы: первая – создание структуры БД (таблиц и связей между ними), вторая – организация интерфейса пользователя для работы с БД. Основным средством организации интерфейса пользователя в приложениях СУБД Access являются формы, которые могут быть использованы для ввода, редактирования, вывода данных и других целей.

Если в одной форме требуется просматривать данные из нескольких таблиц или запросов, то для этой цели необходимо применить подчиненные формы. Подчиненная форма – это форма, вставленная в другую форму. Например, подчиненную форму можно использовать при просмотре информации о студентах факультета в группах на примере базы данных Training_students_VP.

Подчиненные формы целесообразно создавать для отображения данных из таблиц, имеющих отношение «один-ко-многим». На примере базы данных Training_students_VP рассмотрим технологию создания подчиненной формы, которая имеет две таблицы «Группы студентов» и «Студенты» связанные отношением «один-ко-многим» (Рис.1)

 


Рис. 1.


Если в окне базы данных Training_students_VP открыть таблицу "Группы студентов", то можно увидеть, что рядом с каждой записью таблицы помещен знак «+» (Рис. 2).

 


Рис. 2.


Это означает, что у этой таблицы появилась подтаблица. Если щелкнуть на знаке «+», например, перед второй записью, то отобразится таблица "Студенты" и мы увидим, что в группе БФ-16б числится два студента (Ильин и Иванов). Теперь создадим подчиненную форму, содержащую эти две таблицы. Существует несколько способов создания подчиненных форм. Наиболее простой способ создания подчиненных форм – это создание Автоформы.

Для создания Автоформы необходимо на вкладке Таблицы в окне базы данных выделить таблицу «Группы студентов» и на панели инструментов щелкнуть кнопку «Новый объект: форма». В открывшемся меню надо выбрать команду Автоформа, в результате получим Главную форму «Группы студентов», в которую вставлена подчиненная таблица "Студенты". Затем сохраним форму как "Группы студентов_ПФ" и закроем ее. Скриншот Главной и подчиненной формы представлен на Рис. 3.

 


Рис. 3.


Преобразуем полученную форму. Для этого в режиме конструктора в Главной форме удалим поле КодГруппы, слово "Название" заменим на "Группа" и изменим некоторые размеры формы. После проведенных изменений, автоформа (под имененм Podch_gr_st_a) будет иметь вид, представленный на Рис. 4.

 


Рис. 4.

 

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

Аналогично надо создать вторую (главную) форму «Группы студентов». В качестве источника данных выбрать «Группы студентов» и щелкнуть ОК. В полученную форму требуется перетащить поля: Название, Курс и Семестр. Кроме того, в полученной форме предусмотреть место для таблицы «Студенты», а затем сохранить данную форму.

Затем на форму «Группы студентов» открытую в режиме конструктора можно перетащить подчиненную форму «Студенты» из окна базы данных. В результате получим Главную форму «Группы студентов», в которую вставлена подчиненная таблица "Студенты".

 

ВОПРОС 20

Простейшим вычисляемым полем является поле, в котором должна выводиться текущая дата. Чтобы создать такое поле:

  1. Создайте свободный элемент управления типа Поле (Text Box) в нужном месте формы.
  2. Прямо в поле введите выражение =Date (). Знак равенства обязателен.
  3. Откройте окно Свойства (Properties) для этого элемента и задайте для свойства Формат поля (Format) желаемый формат даты, например Длинный формат даты (Long Date).
  4. Установите длину поля таким образом, чтобы в нем помещалось необходимое количество символов.
  5. Измените название метки этого текстового поля. Созданное поле будет выглядеть, как показано на рис. 9.47.

Рис. 9.47. Вычисляемое поле

Обычно для создания вычисляемых полей выбирают именно элемент управления Текстовое поле, хотя это и необязательно. Допускается использовать для этого любые элементы управления, имеющие свойство Данные (Control Source).

Именно в свойстве Данные (Control Source) должно быть задано выражение, которое вычисляет значение этого элемента. Ввод выражения допускается прямо в элемент управления, как мы и сделали это в примере. Однако, если выражение достаточно длинное, его неудобно вводить прямо в поле. Можно ввести выражение в ячейку свойства Данные (Control Source) в окне Свойства (Properties), а если выражение не помещается в ячейке свойства, просто нажать комбинацию клавиш <Shiftl>+<F2> и открыть окно Область ввода (Zoom). Еще можно воспользоваться Построителем выражений.

Вычисляемые поля создаются чаще всего в табличных или ленточных формах для отображения столбца с какими-нибудь вычисленными значениями. Например, стоимость товара рассчитывается как значение выражения Цена * Количество. Для отображения таких расчетных данных используют два способа:

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

· Во втором случае форма может строиться прямо на базе таблицы. В ней создается текстовое поле, в котором в качестве источника данных указывается выражение, например = [Цена за единицу] * Количество. При этом в выражении необязательно указываются те поля, которые включены в форму, а любые поля базовой таблицы.

Замечание

При ссылках на поля в выражениях обязательно использование квадратных скобок, если название поля содержит пробелы; в остальных случаях можно обходиться без них.

Первый способ в большинстве случаев предпочтительнее, т. к. такой запрос может быть использован не только в одной форме, но и в отчетах и в других формах. Примером такой организации расчетов может служить форма "Подчиненная форма заказов" (Orders Subform) базы данных "Борей". Она основана на запросе "Сведения о заказах" (Order Details Extended), в котором создано вычисляемое поле "ОтпускнаяЦена" (ExtendedPrice), содержащее формулу:

ОтпускнаяЦена:

CCur([Заказано].[Цена]*[Количество]*(1-[Скидка])/100}*100

в примере английской версии Access:

ExtendedPrice:

CCur([Order Details].UnitPrice*[Quantity]*(1-[Discount])/100)*100

Свойство Данные (Control Source) элемента управления ОтпускнаяЦена

(ExtendedPrice) в форме имеет значение "ОтпускнаяЦена" (ExtendedPrice) — имя вычисляемого поля запроса.

Замечание

В приведенной выше формуле CCur — это функция, которая преобразует значение выражения в тип Денежный (Currency).

ВОПРОС 21


Дата добавления: 2015-11-30; просмотров: 48 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.056 сек.)