Рассылка статей | Выпуск 100. Разработка классов на VBA
Leadersoft.ru

Рассылка статей

Программирование и готовые решения

В этом разделе сайта дается информация от https://leadersoft.ru о статьях по программированию, ответах на вопросы и др. Статьи рассылаются подписчикам и публикуются на разных сервисах. Возможно некоторая информация устарела и ссылки не работают, но эти сведения могут быть полезны, если Вы серьезно занимаетесь разработкой баз данных

Выпуск 100. Разработка классов на VBA

Введение

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

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

Выход есть - это надо использовать внешнюю программу. Самый лучший способ - отчет вывести в Word, т.к. редактор текстов от Microsoft, доступен большинству пользователей и не потребуется закупать лицензии.

Примечание. Функции экcпорта отчетов в Word от Microsoft имеют ошибки и не выводят линии.

 

Как это решить

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

С другой стороны, когда Вы делаете много отчетов: договора, акты, заказы и т.п. нужен уже будет другой подход. Необходимо разработать класс на VBA, чтобы его можно было использовать много, много раз для абсолютно разных документов.

Цель разработки такого класса – это создание простого интерфейса, который будет выводить на печать документы Word, используя информацию запросов. При этом обращение к кодированию информации отчета путем VBA (visual basic for application) будет минимальным. 

О примере

В архиве Вы найдете файл с примером, в котором рассматривается вопрос подготовки отчета для заказов. Такой отчет имеет ряд сложных объектов.

Во первых у него есть шапка, в которой записаны реквизиты поставщика и заказчика, а также номер отчета и дата, которая может иметь произвольный формат: 11.01.2010 или 11 января 2010 г.

Во вторых, у отчета есть спецификация, которая состоит из таблицы с товарами, наименование, количество, сумма, которая тоже может быть записана в формате ###-00, где - разделитель разрядов. Таким образом 510 руб. надо записать как 510-00 руб.

В третьих, у отчета есть сумма прописью. Например, у Вас заказ имеет 510 рублей, то в счете желательно написать сумму Пятьсот десять рублей 00 коп.

 

Основные файлы

В примере, который находится в папке Programs, Вы найдете файл Microsoft Access (AccessWord.mdb), где будут находиться основные объекты программы. Вот они

  • clsReportWord – класс для работы с Word (главный объект выводы на печать)
  •  la_Money – функции для перевода чисел в пропись
  •  la_formInit – это функции для инициализации отчета Word
  •  LA_CatalogReports – таблица с описанием отчетов

Обратите внимание. Эти все объекты надо переносить в другие проекты, если вам необходимо будет использовать вывод на печать отчетов в формате Microsoft Word. Для заполнения таблицы с отчетами есть интерфейс, который позволяет это сделать быстрее.

  • LA_InitReports – форма для редактирования таблицы LA_CatalogReports (не обязательный объект)
Вспомогательные файлы

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

  • ЗАКАЗЫ список – список заказов
  • ЗАКАЗЫ данные – спецификация заказов
  • ФИРМЫ – список компаний и их реквизитов
  • АКТИВЫ ед_измерения – единицы измерения товаров
  • АКТИВЫ список – список товаров

Формы для заполнения реквизитов заказа

  • formЗаказы – форма заказов
  • formЗаказыВкладкаДанные – спецификация заказа

Запросы SQL для отчета

  • formЗаказыОтчетСчетWordQry – содержит поля для вывода шапки отчета
  • formЗаказыОтчетСчетWordQry_T – содержит поля для вывода таблицы отчета

Пример шаблона Word *.dot для вывода отчета. Используется для  подготовки основного отчета

  • ..\Database\Templates\Счет на предоплату.dot
Порядок действий
  1. Откройте в режиме редактирования документ Счет на предоплату.dot (правой кнопкой в проводнике) и поставьте закладки в те места документа, которые нужно заполнить. Меню Вставка – Закладки. Пример документа Word с закладками.
  2. Обратите внимание. Для того чтобы вставить закладку для таблицы используйте имя N1. Она добавляется в первое поле таблицы, под №1. На втором этапе работы с классом нужно определить запросы. Для этого используйте редактор запросов Access.

Запрос. formЗаказыОтчетСчетWordQry

Первый запрос содержит поля, которые добавляются в шапку отчета: БанкИмя, ФилиалИНН и т.п.

idЗаказ Филиал ФилиалИНН ФилиалАдрес БанкИмя БанкNсчета
1 ООО «Новая компания» 7722261008 124713, г. Москва, ул. Краснопролетарская, д.16 Банк рублевый 12345678901234567890

Запрос. formЗаказыОтчетСчетWordQry_T

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

T_Пункт T_Актив T_Кол_во T_ЕдИзм T_Цена~~format1 T_Сумма~~format1 format1
1 Клан Пещерного Медведя

1

шт.

99,00р.

99,00р.

# ##0-00

1 Jet Live, комплект из 2 шт.

3

 

820,00р.

2 460,00р.

# ##0-00

Обратите внимание. У некоторых полей, есть формат. Он идет после ~~. Например, поле Цена = 629,0000 надо вывести в формате 699-00, то оно должно иметь имя T_Цена~~format1. format1 – это вспомогательное поле и равно  ##0-00. Итоги. Префикс Т_ означает, что это поле будет выводиться в таблице, а суффикс ~~format1 - что поле форматируется по формату поля format1. Формат данных соответсвует условиям форматирования полей в Access.

3. Когда Вы создали запросы и отчет dot, то их нужно записать в таблицу (LA_CatalogReports) и из нее взять idReport, который будет использоваться для вывода на печать. Пример интерфейса.

Обратите внимание. Запросы содержат записи сразу многих заказов, чтобы вывести 1 заказ, нужно назначить фильтр. idЗаказ=%1. %1 будет заменен на поле формы заказа (idЗаказ) при выводе на печать.

Привязка к форме

Заключительным этапом вывода информации, является привязка отчета к кнопке формы. Код, который нужно написать на VBA,  минимальный. Вот он

Private Sub butReport_Click()       
        Dim rpt As rptRecord

        ' Инициализация отчета
        fcInitReportADO Me.Form, 228, rpt

        ' Отображение отчета
        funPreviewReport rpt
End Sub

Обратите внимание. 228 соответствует индексу отчета в базе данных. Для других документов договоров, актов и т.п. нужно только будет изменить этот индекс.

Общие выводы

Таким образом, используя такой класс, нужно только научиться делать только закладки и составлять запросы SQL, чтобы выводить на печать сложные документы в  формате Word

 

Медицинские представители 2010
Программа для продвижения лекарственных средств регионах
На сайте leadersoft.ru можно найти новую программу для медпредставителей. О чем эта программа.

Медицинский представитель занимается продвижением лекарственных препаратов компаний-производителей в больницах, поликлиниках, медицинских центрах и аптеках. Чтобы стать профессионалом своего дела, медпредставителю необходимо овладеть секретами успешных продаж. Данная программа не только поможет представителям правильно собирать информацию, но и отлично проанализирует их деятельность в разных регионах России для центрального офиса
.

Размещение программы на сайте
Продвижение ваших программ
На сайте leadersoft.ru можно разместить вашу программу, если вы заинтересованы в ее активной продаже. Вы сможете сами загружать программы быстро одним zip-файлом, давать им свое описание в формате html, создавать галерею изображений, справочную систему, а также строить свое меню для более детального описания. Это позволит потенциальным покупателям лучше понимать назначение программы и быстрее принимать решение о ее покупке.
Лицензия на источник информации
    Все права на статью принадлежат Leadersoft.ru. Статья предназначена только для публикации среди подписчиков subscribe.ru. Никто без письменного разрешения leadersoft.ru не может продавать, перепечатывать, сдавать в аренду или другим образом извлекать выгоду, используя информацию из этой и других статьях данной рассылки.

Добавить комментарий

Loading