Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / gorev_akhajan_makakshiripov_ehffektivnaja_rabota_s_subd

.pdf
Скачиваний:
52
Добавлен:
26.04.2015
Размер:
3.17 Mб
Скачать

Рис. 10.16. Вкладка Pictures в диалоговом окне свойств Outline Control

Для определения цвета фона (BackColor) и цвета текста (ForeColor) в диалоговом окне Properties активизируем вкладку Colors, где для свойства ForeColor определяем синий цвет (рис. 10.17).

Рис. 10.17.

На рис. 10.18 показан Конструктор формы, использующий элемент управления Outline Control

и заданные свойства ForeColor, PictureClosed и PictureOpen.

Ⱦɚɧɧɚɹ ɜɟɪɫɢɹ ɤɧɢɝɢ ɜɵɩɭɳɟɧɚ ɷɥɟɤɬɪɨɧɧɵɦ ɢɡɞɚɬɟɥɶɫɬɜɨɦ %RRNV VKRS Ɋɚɫɩɪɨɫɬɪɚɧɟɧɢɟ ɩɪɨɞɚɠɚ ɩɟɪɟɡɚɩɢɫɶ ɞɚɧɧɨɣ ɤɧɢɝɢ ɢɥɢ ɟɟ ɱɚɫɬɟɣ ɁȺɉɊȿɓȿɇɕ Ɉ ɜɫɟɯ ɧɚɪɭɲɟɧɢɹɯ ɩɪɨɫɶɛɚ ɫɨɨɛɳɚɬɶ ɩɨ ɚɞɪɟɫɭ piracy@books-shop.com

Рис. 10.18.

Для события Init объекта Olec1 записываем следующий код:

&&Помещаем в массив aTabList список таблиц из словаря данных.

&&В связи с установленным уровнем доступа, равным по умолчанию пяти,

&&данный список таблиц фильтруем с помощью предложения WHERE SELECT tableslist.table_name ;

FROM datavocabulary!tableslist ;

WHERE ALLT(Tableslist.table_name)<<>>"Sale" ; AND ALLT(Tableslist.table_name)<<>>"Account" ; AND ALLT(Tableslist.table_name)<<>>"Customer" ; AND ALLT(Tableslist.table_name)<<>>"Order" ; AND ALLT(Tableslist.table_name)<<>>"Salesman" ; INTO ARRAY aTabList

&&Определяем значение переменной nnPabl

nnPabl=0

&&Последовательно заносим список полей для каждой таблицы

&&в массивы 1nnAr, 2nnAr, 3nnAr, <193>

&&После чего в объект Olec1 добавляем имена таблиц и соответствующих

&&этим таблицам полей, а для каждого поля устанавливаем отступ (indent)=2

&&и тип изображения (PictureType)=2

FOR X=1 TO ALEN(aTabList) ThisForm.Olec1.AddItem(ALLT(aTabList(X))) nnTab=ALLT(aTabList(X)) nnAr="nnAr"+ALLT(STR(X))

SELECT Tables.field_name ; FROM datavocabulary!tables ;

WHERE Tables.table_name = nnTab ; INTO ARRAY &nnAr nnAddItem="ThisForm.Olec1.AddItem" nnArn="nnAr"+ALLT(STR(X))

FOR I=1 TO ALEN(&nnArn) &nnAddItem(ALLT(&nnArn(i))) nnBeby=nnPabl+X+I-1 ThisForm.Olec1.indent(nnBeby)=2 ThisForm.Olec1.PictureType(nnBeby)=2

ENDFOR nnPabl=nnPabl+ALEN(&nnArn)

ENDFOR

www.books-shop.com

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

Рис. 10.19. Форма с иерархическим списком в действии

Календарь

В следующем примере рассмотрим использование календаря для ввода или редактирования данных в поле, содержащем дату. Вместо набора даты вручную пользователь должен иметь возможность визуального выбора в календаре требуемой даты. После выбора дата должна автоматически записаться в нужное поле, как это показано на рис. 10.20. Для этого в Visual Basic откроем новый проект и создадим несложную форму. Чтобы сделать процесс создания формы максимально простым, используем, пожалуй, единственный визуальный инструмент разработчика, присутствующий в Visual Basic, - Data Form Designer - Конструктор формы для работы с данными, показанный на рис. 10.22. Необходимые пояснения для построения формы вы найдете на этом же рисунке. Построенная Конструктором форма приведена на рис. 10.21. Как видите, она мало пригодна для использования в пользовательском приложении, хотя черновая работа по размещению полей и выбора для них элементов управления выполняется автоматически без нашего участия. Мы привнесли в форму минимальные изменения и за счет корректировки значений свойств привели ее к виду, показанному на рис. 10.20. Потребовалось выполнить для объектов Label и CommandButton изменения значений свойства Caption, перемещение и изменение размеров некоторых элементов управления. Если у вас возникнут трудности с изменением размера элемента управления Data Control, установите значение свойства Allign равным 0.

www.books-shop.com

Рис. 10.20. Изменение даты с помощью календаря

Рис. 10.21.

www.books-shop.com

Рис. 10.22.

Для вызова календаря разместим рядом с полем для отображения даты еще одну кнопку. Дадим ей имя cmdCallData и заголовок "Новая дата". Щелкнем на кнопке два раза и в появившемся окне для записи кода в процедуре cmdCallData_Click() запишем строчку:

frmNewDate.Show

Тем самым мы обеспечиваем вызов формы с календарем.

Для создания вспомогательной формы с календарем в меню Insert выберем команду Form. Дадим ей имя frmNewDate и заголовок "Выберите дату". На панели инструментов нажмем кнопку Calendar и, удерживая левую кнопку мыши, обведем на форме соответствующий контур. Появившемуся на форме объекту дадим имя olcCalendar. В Visual Basic свойства для объекта ActiveX можно изменять и в его собственном окне свойств, вызываемом из контекстного меню, и в окне Properties Visual Basic. Изменить значение даты, записанное в поле первой формы, можно с помощью следующей процедуры:

Private Sub olcCalendar_AfterUpdate() frmAccounts.txtFields(1) = olcCalendar.Value

End Sub

Теперь, при запуске формы и изменении даты в календаре, тут же будет изменяться значение поля date_write в таблице Account.

www.books-shop.com

Глава 11

Подготовка отчетных данных

11.1.Создание отчетов в Visual FoxPro Управление режимом печати

11.2.Создание отчетов в Access

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

11.1. Создание отчетов в Visual FoxPro

Visual FoxPro имеет мощные средства построения отчетов для вывода данных в желаемом для пользователя виде на принтер, экран или в текстовый файл.

В этом параграфе мы рассмотрим последовательность создания отчета в Visual FoxPro, способы его печати и управления режимами печати отчета.

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

Порядок расположения данных в отчете и его элементы (для примера его длина взята равной трем страницам) приведены на рис. 11.1. Данные, помещаемые в полосу Details, распечатываются многократно, с автоматическим переводом указателя записи в таблице или курсоре, которые являются источником данных. Группировка данных позволяет выводить их в систематизированном виде. Например, список сотрудников по отделам, отделы по цехам и т. п.

Конструктор отчета (Report Designer) по принципу работы похож на Конструктор формы без учета объектно-ориентированных возможностей. На рис. 11.2 приведен вид Конструктора отчета и даны пояснения его основным элементам.

www.books-shop.com

Рис. 11.2.

С помощью меню Конструктора отчета Report, которое автоматически появляется в главном меню Visual FoxPro, можно выполнить следующие действия:

Title/Summary - добавить в окно Конструктора отчета полосы заголовка и итогов.

Data Grouping - вывести диалоговое окно для задания группировки данных.

Variables - задать переменные для использования при подсчете данных.

Default Fonts - вывести стандартное диалоговое окно Windows для выбора шрифта и установки его характеристик, которые будут использованы по умолчанию для всех текстовых объектов в отчете.

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

Quick Report - запустить утилиту быстрого построения отчета.

Run Report - запустить отчет на выполнение.

Большое количество действий можно выполнить также с помощью команд, расположенных в меню View и Format, основные из которых мы рассмотрим при описании последовательности создания отчета.

Для ускорения процесса работы с объектами при создании отчета можно пользоваться панелями инструментов, которые также показаны на рис. 11.2. О двух из них мы уже говорили при описании Конструктора формы. Панель инструментов Report Controls по своим функциям похожа на панель инструментов Form Controls в Конструкторе формы и предназначена для выбора объектов отчета. Назначение кнопок на этой панели описано на рис. 11.3.

www.books-shop.com

Рис. 11.3. Панель инструментов Report Controls

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

Рис. 11.4.

По умолчанию команда Quick Report помещает все выбранные поля в полосу Details, а идентификаторы полей - в полосу Page Header. В полосу Page Footer слева помещается поле с функцией DATE() для вывода текущей даты, а справа - поле с системной переменной _PAGENO (номер страницы) и меткой "Page" перед ним. Если вам нужна простая распечатка данных, то это неплохая заготовка, в которой останется только поменять идентификаторы полей на их заголовки и, прибавив к отчету полосу Title, оформить его название. Кстати, для подготовки отчетов можно гораздо шире, чем это было в случае создания формы, использовать Мастер создания отчета, так как объекты отчета не привязаны к классам.

На рис. 11.5 приведен отчет, построенный с помощью команды Quick Report для таблицы Propmod, в которой хранятся данные о моделях автомобилей. Перед снятием этого изображения с экрана компьютера мы вызвали команду Data Environment меню View. Как видите, мы точно так же, как это было в Конструкторе формы, можем задавать свойства и реагировать на события, связанные с данными, используемыми в отчете. Наличие среды окружения позволяет легко использовать при построении отчета специально подготовленные с помощью команды SELECTSQL данные. Достаточно создать просмотр требуемой структуры и затем просто поместить его в среду окружения - Data Environment.

www.books-shop.com

Рис. 11.5.

Заметьте, что при проектировании отчета мы можем широко применять технологию перетаскивания. Для быстрого размещения полей в отчете их можно перетаскивать как из окна

Data Environment, так и из Project Manager. Также можно перетаскивать таблицы из Project Manager в окно Data Environment.

Как вы, наверное, уже поняли из сказанного выше, отчеты в FoxPro составляются из объектов, которыми можно манипулировать множеством способов. В число этих объектов входят графические объекты (линии и рамки), объекты полей (поля, переменные, выражения и т. п.) и текстовые объекты. Только не запутайтесь в различных нюансах слова "объект" в различных инструментальных средствах Visual FoxPro. В Конструкторе отчета объекты, размещаемые на его поверхности, в отличие от Конструктора формы никакого отношения к объектноориентированному программированию не имеют.

Все действия в Конструкторе отчета производятся только с выделенными объектами. Для выделения объекта установите на нем указатель и нажмите кнопку мыши. Можно выделить более одного объекта, для этого, выделив первый объект, нажмите клавишу Shift, после чего выделяйте другие объекты. Несколько объектов можно выделить также с помощью маркера выбора (selection marquee). Установите курсор вне тех объектов, которые должны быть выбраны. Нажмите клавишу пробела или кнопку мыши, чтобы закрепить маркер выбора. Вместо курсора появится точка, начиная с которой при перемещении курсора строится прямоугольник вокруг тех объектов, которые дoлжны быть выделены. Если вы pаботаете мышью, не отпускайте ее кнопку. Когда все oбъекты будут выделены, нажмите клавишу Enter или отпустите кнопку мыши.

Если выделено несколькo oбъектoв, любая oпеpация пеpемещения, выpезания, кoпиpoвания, вставки pанее вырезаннoгo объекта или удаления действует на них, как на oдин объект.

Изменения параметров объектов выполняются с помощью следующих команд меню Format:

Align - выравнивание объекта или группы объектов относительно страницы отчета или друг друга. Используйте панель инструментов Layout для быстрого выполнения этой функции.

Size - позволяет изменить размеры объекта или группы объектов относительно друг друга. Команды подменю соответствуют возможностям панели инструментов Layout. Команда To Grid изменяет размеры объекта в соответствии с установленной координатной сеткой, если включено Snap to Grid.

Horisontal Spacing - позволяет увеличить (Increase), уменьшить (Decrease) или выровнять (Make Equal) промежутки между объектами по ширине страницы отчета.

Vertical Spacing - позволяет увеличить (Increase), уменьшить (Decrease) или выровнять (Make Equal) промежутки между объектами по длине страницы отчета.

www.books-shop.com

Bring to Front - позволяет выдвинуть объект на передний план, если он закрыт другими объектами.

Send to Back - позволяет отодвинуть объект на задний план, если он закрывает другой объект.

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

Ungroup - разъединяет группу объектов для индивидуального задания свойств.

Snap to Grid - включает или выключает режим привязки объекта к координатной сетке при его перемещении.

Set Grid Scale - включает или выключает режим отображения координатной сетки.

Font - выводит на экран стандартное диалоговое окно Windows для изменения типа и характеристик шрифта для меток и текстовых полей.

Text Alignment - позволяет установить выравнивание текста в метках и текстовых полях. Для изображений и встроенных OLE-объектов доступно выравнивание только по центру. Для многострочных меток здесь же мы можем задать межстрочный интервал.

Fill - позволяет выбрать заполнение для областей внутри рамок.

Pen - позволяет установить ширину или тип линии или рамки.

Mode - позволяет выбрать прозрачный или сплошной фон для всех объектов отчета кроме линии.

Новые объекты в отчете можно создать с помощью панели инструментов Report Controls (см. рис. 11.3). Если вы создаете текстовое поле, то после того, как вы обведете контур, в котором это поле будет располагаться, на экране появится диалоговое окно Report Expression, приведенное на рис. 11.6.

Рис. 11.6.

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

Задать поле, котоpое необходимо поместить в отчет, можно пpямо, указав его в поле Expression диалогового окна, или вызвав Пoстpоитель выpажений, нажав кнопку справа от этого поля. Пользуясь Пoстpoителем выражений, вы можете пoстрoить выpажение, выбиpая поля из откpытых таблиц и pазмещенные в памяти пеpеменные и стандаpтные функции Visual FoxPro в диалоговом pежиме. Также возможно проверить пpавильнoсть составленного выражения.

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

A - допускает вывод только символов алфавита.

L - допускает вывод только логических данных.

www.books-shop.com

Соседние файлы в папке лабы