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

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


Выпуск 18. Access Rapid Start - конструктор приложений в Access

Подписка: "Access 2003/2010 - программирование и готовые решения"
Дата: 03.09.2012
Автор: Парусников Алексей
Сайт: http://www.accessoft.ru под редакцией с http://www.leadersoft.ru
Загрузка: ARS 2003 ARS 2007 ARS 2010
Получить ключ: Key_ARS

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


    Данная статья ориентирована на начинающих разработчиков Access, желающих более углубленно изучить возможности программирования в Access и сделать свои приложения более профессиональными.
Особенности проектирования отчетов в ARS для работы с SQL Server

     Так как приложение для SQL Server в ARS создается по технологии доступа данным через ADO, то создание стандартных отчетов имеет свои особенности. Ведь в проекте нет линков к таблицам, стало быть не получится создать запрос-источник и сохранить его в проекте. По той же причине не получится указать текст SQL-выражения в свойствах отчета Данные. Можно было бы цеплять источник к отчету так же, как это делается для форм, путем открытия ADO-рекордсета и указания его в качестве источника данных. Но… у запроса нет свойства Recordset.

В итоге, получается два решения:

  1. Отказаться от создания отчетов в Access и делать выгрузки в Word или Excel
  2. Создание временной таблицы (или таблиц), перекачивание в них данных с сервера, и уже на основании этих таблиц создавать запрос-источник, который указывать в свойствах отчета RowSource.

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

     Конструктор отчетов Access многие разработчики признают одним из лучших в плане функционала и удобства работы, поэтому отказываться от него совсем не хочется. Кроме того, создание временных таблиц позволяет использовать функционал Access, который недоступен в проектах ADP. Это возможность использования пользовательских и стандартных функций в запросе, простое создание перекрестного запроса. Конечно, всему этому есть альтернативные (и во многом более мощные) решения, предоставляемые T-SQL, но мы рассматриваем вариант, который вполне можно применить во многих случаях как более удобный и простой.

     Для создания временных таблиц начиная с версии ARS 2.1. используется специальная функция, которая запускает хранимую процедуру на сервере или выполняет строку SQL. В результате возвращается Recordset, ан основании которого и создается временная таблица.

funCreateTableOutServer (spSQL, spTableName, spParam, flg_Msg) As Boolean

Параметры
spSQL
   Обязательный аргумент - значение типа String. Имя хранимой процедуры на сервере или строка запроса SQL
spTableName
   Не обязательный аргумент - значение типа String. Имя создаваемой временной таблицы
   Примечание: Если параметр опущен, то в качестве имени берется имя хранимой процедуры. Если первый параметр строка SQL, то имя должно быть задано обязательно
spParam
   Обязательный аргумент - значение типа String. Имя создаваемой временной таблицы
Padej
     Не обязательный аргумент - значение типа String. Значение параметра хранимой процедуры или список параметров через |
flg_Msg
     Не обязательный аргумент - значение типа Boolean. Флаг, по которому появляется сообщение, в случае отсутствия данных в запросе источнике

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

'В качестве источника строка запроса
Private Sub Report_Open(Cancel As Integer)
On Error GoTo Err_
     'Вызов класса
     Set frm = fcClassCreateForm(Me.Report, _
          Me.Name, _
          True, _
          Null, _
     Cancel)

     'Если класс вернул Cancel=-1, то завершаем процедуру
     If Cancel = -1 Then Exit Sub

     strSQL = "Текст запроса"
     Cancel = Not funCreateTableOutServer(strSQL, Me.Name)
     Me.RecordSource = Me.Name
Exit Sub

Err_:
     Call ErrorBases(Err)
     Cancel = -1
End Sub

'В качестве источника имя хранимки
Private Sub Report_Open(Cancel As Integer)
On Error GoTo Err_

     'Вызов класса
      Set frm = fcClassCreateForm(Me.Report, _
           Me.Name, _
           True, _
           Null, _
      Cancel)

     'Если класс вернул Cancel=-1, то завершаем процедуру
      If Cancel = -1 Then Exit Sub

     Cancel = Not funCreateTableOutServer("pr_MChet", Me.Name, Forms!frm_MPrih!Prih_ID)
     Me.RecordSource = Me.Name
Exit Sub

Err_:
     Call ErrorBases(Err)
     Cancel = -1
End Sub


Полезные ссылки

Интернет магазин от Leadersoft.ru
В этом магазине Вы можете купить не только готовое программное обеспечение для бизнеса, а также найти компактные решения для самостоятельного проектирования на Microsoft Access, SQL Server или ASP.NET

В избранное