Пример создания приложения баз данных для верстки таблиц
Создание главной таблицы
Для выполнения поставленной задачи нам потребуются следующие таблицы:
1. IndesignTagSet — для хранения заголовка тэгового файла
2. MainRub — рубрики издания
4. Publish — главная таблица
5. SubRubr — подрубрики
6. TypePub — типы публикаций.
Вы уже можете создавать таблицы в MS Access, поэтому приведем только формат основной таблицы Publish. Так же как и ранее, для детального ознакомления с таблицами мы приведем в конце этого материала ссылку для скачивания.
Поле | Тип данных | Размер поля | Подпись | Значение по умолчанию |
Npub | Счетчик | Длинное целое | Код | |
Nomer | Числовой | Целое | Номер издания | |
MainRub | Текстовый | 50 | Рубрика | |
SubRub | Текстовый | 50 | Подрубрика | |
TypePub | Текстовый | 50 | Тип публикации | |
BText | Текстовый | 50 | Выд. текст | |
Text | Текстовый | 170 | Текст | |
Firm | Текстовый | 50 | Фирма | |
Telkod | Текстовый | 8 | Тел. код | 495 |
Tel1 | Текстовый | 50 | Телефон 1 | |
Tel2 | Текстовый | 50 | Телефон 2 |
Поле NPub — внутренний уникальный номер публикации в базе;
Поле Nomer — номер выпуска. В базе будут храниться все публикации (объявления) с накоплением, поэтому при ежемесячном издании январским публикациям будем присваивать номер 1, февральским — 2, и т.д.
Поля MaimRub и SubRub будут хранить данные о рубриках и подрубриках. Размер их (количество знаков) установите исходя из длины самой длинной рубрики или подрубрики.
Поле TypePub — для хранения типов публикаций.
Поле BText — для хранения части текста в начале объявления, которую надо выделить. Если ничего не надо выделять, поле остается пустым.
Поле Text — для хранения всего объявления или его оставшейся части после текста, занесенного в поле BText.
Например, есть объявление: «Срочно! Продается гималайский тигр.» Слово «Срочно!» требуется выделить.
Мы заносим слово «Срочно!» в поле BText, а «Продается гималайский тигр» — в поле Text.
Обычно при приеме строчного объявления ограничивается число символов, поэтому в поле Text поставьте нужное вам значение. Оно не может быть более 255 символов. Если у вас практикуются строчные объявления большего, чем 255 символов, размера, то измените тип поля на MEMO. В поля типа MEMO можно забивать до 64 кB информации (MS Access).
Поле Firm — для хранения названия фирмы.
Поле TelKod — региональный телефонный код населенного пункта. Для Москвы это 495. Поставьте свое значение по умолчанию для этого параметра, если вы не в Москве.
Поля Tel1, Tel2 — для хранения номеров телефонов, приведенных в объявлении. Здесь размер полей с телефонами даны с запасом на случай, если к основному телефону будут еще и дополнительные номера офисной АТС.
При желании можно добавить такие поля как примечание (для хранения каких-либо заметок о рекламодателе), стоимости объявления (потом можно организовать суммирование стоимости всех объявлений и получить экономический результат), можно добавить поле с датой создания объявления, можно всё это дополнить полем с фамилией рекламного менеджера (чтобы делать выборки стоимости объявлений по каждому менеджеру, если их несколько…) и т.д. Если добавлять фамилию менеджера, то для этого надо создать отдельную таблицу со списком менеджеров.
Формат остальных таблиц такой же как и в предыдущем примере. Таблица MainRub — из двух полей (Kod, тип — Счетчик и MainRub — Текстовое 50 символов). Таблица SubRub — из трех полей (Kod, тип — Счетчик, KodMain для хранения номера главной рубрики, типа Длинное целое и поля SubRub для названия подрубрики, текстовое, 50 символов).
Создание форм для ввода данных
Из главного окна выбираем раздел Формы и затем Создание формы при помощи мастера.
Далее для формы выбираем таблицу Publish, и из списка Доступных полей переносим все поля в список Выбранных полей.
Нажимаем Далее.
На следующем шаге выберите тип формы — ленточный
Стиль может быть любым
Далее задайте имя формы (можно оставить как есть) и отметьте Изменить макет формы
После нажатия кнопки Готово мы получим нашу форму, открытую в режиме конструктора:
Здесь надо все привести в порядок: увеличить размер полей и надписей над полями, поле Text сделать такой же высоты как и все поля. Для этого выделяется нужное поле или надпись над ним и перетягиванием маркеров увеличивают размер. Размер полей также можно численно задавать в панели свойств на вкладе «Макет«.
Вот что получилось (щелкните по рисунку для просмотра в увеличенном виде):
Теперь необходимо заменить поля Гл. рубрика и Подрубрика полями со списками.
Удаляем поле SubRub (Подрубрика), включаем режим Мастера (если не включен) на Панели элементов на и на его место ставим Поле со списком. Запустится Мастер, в котором надо выбрать «Объект поле со списком будет использовать значения из таблицы или запроса» и нажать кнопку Далее.
Далее выбираем таблицу SubRubr, в которой у нас список подрубрик
Выбираем все поля:
Устанавливаем сортировку по полю SubRub
На следующем шаге устанавливаем размеры полей. Необходимо дважды щелкнуть на их границе (показано стрелкой)
Выбираем сохранять выбор из списка в поле SubRub
Далее все оставляем как есть
На этом всё готово. Мы увидим, что наше поле немножко неровно стоит, и есть ненужная надпись KodMain.
Надпись удаляем и поле выравниваем вровень с остальными.
По такой же методике заменяем поле MainRub (Гл. рубрика) полем со списком. В качестве исходных данных выбираем таблицу MainRub, все поля, сортировка по MainRub, сохранить выбранное значение в поле MainRub.
Сохраним форму и закроем ее. Чтобы проверить как работают поля со списком, введем в таблицы рубрик и подрубрик тестовые значения, которые потом можно будет исправить на нужные. В Главном окне откроем вкладку Таблицы.
В таблицу главных рубрик введем две рубрики: Продажа автомобилей и Продажа недвижимости.
В таблицу подрубрик вносим
Поскольку все автомобили относятся к первой главной рубрике, то для них в столбце «Номер главной рубрики» стоит значение 1. Виллы, Дома и Квартиры относятся ко второй главной подрубрике и для них номер главной рубрики равен 2.
Запустим созданную форму Publish и проверим работу полей со списками.
С первым выпадающим списком всё хорошо. А со вторым — нет. Показываются номера Главных рубрик и обрезанный правый край
Переходим в режим Конструктора, выделяем второй выпадающий список и в Окне свойств на вкладке Макет корректируем размеры
Устанавливаем ширину столбцов в 0 см, 0 см, 4 см. и общую ширину списка в 4 см.
Заодно переключаемся на вкладку Другие, где даем правильное название полю со списком
Перключимся на вкладку Данные и в поле Присоединенный столбец введем значение «3»
Затем выделим поле со списком MainRub и дадим ему правильное название — ПолеСоСпискомРубрик и на вкладке Данные зададим присоединенный столбец как «2».
Теперь выпадающий список с подрубриками выглядит нормально:
Не очень удобно, если для каждой главной рубрики в списке подрубрик отображаются все подрубрики. Сделаем так, чтобы для Продажи недвижимости в списке подрубрик отображались Дома, виллы и квартиры, а для главной рубрики Продажа автомобилей отображались только автомобили. Но перед этим самостоятельно замените поле TypePub (типы публикаций) на выпадающий список. Присоединенный столбец установите как «2».
Cогласование рубрик и подрубрик
Этот вопрос мы подробно рассматривали ранее, здесь будет более краткое изложение.
1. Создаем новый модуль. В модуль помещаем следующий код:
Option Compare Database
Option Explicit
Public NomerRub As Double
Public Function NRub()
NRub = NomerRub
End Function
Cохраняем модуль с именем Main
2. Загружаем форму Publish в режиме конструктора, выделяем в ней список рубрик, в Панели свойств открываем вкладу «События». Выбираем событие «После обновления» и нажав на кнопочку с тремя точками, «Программы», переходим в редактор VBA.
В редакторе набираем следующие строки:
Private Sub ПолеСоСпискомРубрик_AfterUpdate()
NomerRub = Me!ПолеСоСпискомРубрик.Column(0)
Me!ПолеСоСпискомПодрубрик.Requery
End Sub
Заметьте, что первая и последняя строчки кода уже набраны.
Сохранив данные, закроем редактор кода, вернемся к форме в Режиме конструктора.
3. Dыделим список подрубрик и изменим для него запрос к источнику данных. В Панели свойств перейдем на вкладку Данные и поставим курсор в графу Источник строк
Нажав на кнопочку с тремя точками попадаем в Построитель запросов
в котором в строку «Условие отбора» вписываем NRub(). После этого закрываем окно Построителя запросов сохраняя внесенные изменения.
4. Продолжаем работать с формой в режиме конструктора. Выделим всю форму (Ctrl+R). Переходим в Панель свойств, вкладка «События», Текущая запись. Нажав на кнопку с тремя точками и выбрав «Программы» войдем в редактор VBA где введем следующий программный код:
Private Sub Form_Current()
If Not IsNull(Me!ПолеСоСпискомРубрик.Column(1)) Then
NomerRub = Me!ПолеСоСпискомРубрик.Column(0)
Me!ПолеСоСпискомПодрубрик.Requery
End If
End Sub
Как всегда, первую и последнюю строки вводить не надо. Сохраняем данные.
На этом всё по данному разделу. Проверьте работу формы, вводя рубрики и подрубрики. Они должны быть синхронизированы.
Добавление кнопок для формы Publish
На данную форму необходимо добавить кнопки:
1. Для удаления записи (введенной строки).
2. Для дублирования записи. Очень часто бывает так, что клиент сразу дает объявление не только на текущий выпуск, но и несколько следующих. Было бы нерационально одну и ту же информацию набирать несколько раз. Проще скопировать запись и изменить в ней только номер выпуска.
3. Для выхода из формы.
Создание этих кнопок легче всего выполнить при включенном мастере. Эта процедура, думаю, не вызовет у вас затруднений. Вот снимок работы мастера при проектировании кнопки дублирования записи:
Создание формы для вывода данных
В этой форме мы будем указывать номер издания, по которому будем делать выборку данных из базы и записывать их в тэгированный файл для верстки.
Из главного окна базы данных выберем Формы > Создать > Конструктор
В созданную форму добавляем свободное поле и в режиме мастера кнопку. Для нее выбираем действие Выход из формы
В процессе создания кнопки меняем ее название, а затем меняем название поля для ввода. Вот как это может выглядеть:
Пора сохранить результат работы. Как обычно: File > Save, или Ctrl+S. При сохранении даем название форме — Output
Изменим оформление формы, изменив в окне свойств (вкладка Макет) следующие параметры: Полосы прокрутки, Область выделения, Кнопки перехода, Разделительные линии.
На вкладке Другие устанавливаем Разрешить изменения макета — только режим конструктора.
Выключим работу мастера и добавим еще одну кнопку на форму. Изменим надпись на ней — Выполнить.
В дальнейшем мы добавим программный код при ее нажатии, который будет выполнять экспорт тэгированных данных.
А пока у нас новая форма выглядит так:
Сохраним результат — Ctrl+S, и закроем форму.
Связывание двух форм
Загрузим форму Publish в режиме конструктора (Формы > Publish> Конструктор). Включим Мастер. Добавим кнопку на форму. В окне запустившегося Мастера выберем Работа с формой > Открыть форму. Нажимаем кноку Далее.
Из окна доступных форм выбираем форму Output, нажимаем Далее и задаем название кнопки: Вывод данных для верстки.
В готовом виде это будет выглядеть так:
Сохраняем результат и выходим из формы.
Свойства тэгированного файла
Откроем в Индизайне файл с таблицей, верстку которого надо автоматизировать.
(продолжение следует)
Последние комментарии