Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Microsoft Access - программирование и готовые решения


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

Подписка:      "Microsoft Access - программирование и готовые решения"
Дата:               17.02.2010
Сайт:               http://www.leadersoft.ru/
Статья:            http://www.leadersoft.ru/rus/help/subscribe/sub100.html
Примеры:       http://www.leadersoft.ru/rus/market/db/products/60/help/857.html
                        http://www.leadersoft.ru/Rus/Market/db/Default.aspx?go=product&pid=459
                       
http://www.leadersoft.ru/Rus/Market/db/Default.aspx?go=product&pid=60
Описание.     В юбилейной рассылке дается описание алгоритма класса для работы с    Microsoft Word из Access 
Введение

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

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

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

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

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

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

http://www.leadersoft.ru/rus/market/db/products/60/help/857.html

http://www.leadersoft.ru/Rus/Market/db/Default.aspx?go=product&pid=60

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

Цель разработки такого класса – это создание простого интерфейса, который будет выводить на печать документы Word, используя информацию запросов. При этом обращение к кодированию информации отчета путем VBA (visual basic for application) будет минимальным. Описание класса дано здесь: http://www.leadersoft.ru/Rus/Market/db/Default.aspx?go=product&pid=459
О примере

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

Во первых у него есть шапка, в которой записаны реквизиты поставщика и заказчика, а также номер отчета и дата, которая может иметь произвольный формат: 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 для вывода отчета. Используется для  подготовки основного отчета

Порядок действий
  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 можно найти новую программу для медпредставителей. О чем эта программа.

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

Подробно об этом можно прочитать здесь
http://www.leadersoft.ru/Rus/Market/db/Default.aspx?go=product&pid=62
Размещение программы на сайте
Продвижение ваших программ
На сайте leadersoft.ru можно разместить вашу программу, если вы заинтересованы в ее активной продаже. Вы сможете сами загружать программы быстро одним zip-файлом, давать им свое описание в формате html, создавать галерею изображений, справочную систему, а также строить свое меню для более детального описания. Это позволит потенциальным покупателям лучше понимать назначение программы и быстрее принимать решение о ее покупке.

Ссылка на размещение
http://www.leadersoft.ru/Rus/projects/db/Default.aspx?go=product&pid=502 
Лицензия на источник информации
    Все права на статью принадлежат Leadersoft.ru. Статья предназначена только для публикации среди подписчиков subscribe.ru. Никто без письменного разрешения leadersoft.ru не может продавать, перепечатывать, сдавать в аренду или другим образом извлекать выгоду, используя информацию из этой и других статьях данной рассылки.

В избранное