    84 Конфигурирование Crystal Reports 

    Глава 5.   Создание отчетов с помощью Crystal Reports 

    Конечной целью многих приложений является получение твердых копий 
документов, в том или ином виде отображающих данные. Это могут быть таблицы, 
формы данных, рабочие или стандартные документы — счета-фактуры, ведомости, 
инвентарные листы и т. д.. Получать такие документы позволяют специальные 
программы — генераторы отчетов. В том или ином виде функции генератора отчетов 
реализованы во всех инструментальных средствах, предназначенных для работы с 
данными. Имеется такой инструмент и в Visual Basic. 
    В комплекте с Visual Basic 5.0 поставляется процессор отчетов Crystal 
Reports 4.6 разработки Seagate Software. Тот факт, что эта программа уже на 
протяжении нескольких версий включается в комплект поставки Microsoft Visual 
Basic (а^кже_о.р_одуктов других производителей, например Borland Visual 
dBase и др.), говорит о ее несомненном качестве и широких ВОЗМОЖНОСТЯХ'. " * 
    Crystal Reports для Visual Basic — полнофункциональная среда, позволяющая 
создавать отчеты многих стилей и любой сложности из данных локальных файлов 
.mdb и сетевых баз данных SQL/ODBC, с широкими возможностями форматирования 
представляемой информации — как вручную, так и программным способом в коде 
Visual Basic. 

    Ц Crystal Reports Pro - [Untitled Report «II 
    -l.PI.xl 
    Л1 file   Edit   insert   Format   ?>atabase   Fjepoft   Window   
Help	-Jfl] x| 
    ~I\ 
    Design j Preview | 
    Today 18:45     Close ] 
    Ш( 
    !П.  i . li 
    .   fr.   ,   .   IB   i  .   IU 
    Title 
    Page header 
    «Г ...."     l               >Г	Au 
    tti:AtUD-A ±LJ			Insert 1   Done j    ESrowse Field Data...	/ 
    1               d	ПЗ	jd-J':	гшшаи in _	5Ш 

    Рис. 5.1. Рабочий экран Crystal Reports. 


    5.1. Конфигурирование Crystal Reports 

    Crystal Reports позволяет настраивать многие из умолчательных установок 
программы, наилучшим образом конфигурируя ее под потребности разработчика. Эти 
установки воздействуют на такие аспекты: 


    Глава 5. Создание отчетов с помощью Crystal Reports 85 

    •	рабочая среда; 
    •	способ выбора базы данных; 
    •	доступ SQL и ODBC; 
    •	параметры форматирования различных типов данных; 
    •	используемые шрифты для полей и текста. 
    Для изменения умолчательных установок нужно выбрать команду Options в меню 
File. Открывается окно диалога File Options. Далее — открыть соответствующую 
вкладку с опциями, которые требуется изменить (см. примеры ниже). 

    File Options 
    Layout jNew Report j Database JSQL j Reporting j Fields j For 
    Grid Options: 
    F Snap To Grid 
    F Show Grid in Design Window 
    F Show Grid in Preview Window 
    F Show Ruler in Design Window F Show Ruler in Preview Window F Show Button 
Bar F Show Format Bar       Г" At Т op F Show Status Bar 
    Grid Size: 
    foToe   cm 
    Preview Pages: 
    Start With: Г Full Size F Fit Width <"" Fit Page 
    Г"	Use Short Section Names 
    Г"	Show Field Names 
    F	Insert Detail Field Titles 
    OB 
    OK 

    Рис. 5.2. Вкладка Layout окна диалога File Options. 


    5.1.1. Специфицирование умолчательного каталога данных 

    При конфигурировании Crystal Reports может потребоваться специфицировать 
умолчатель-ный каталог данных, который будет использоваться при создании новых 
отчетов, а также какие виды баз данных должны быть представлены в окне диалога 
Choose Database File при его открытии. Для этого: 
    1. Открыть вкладку Database в окне диалога File Options. 
    2. Для установки умолчательного каталога можно использовать один из 
следующих методов: ввести полный путь в окне Data Directory (например C:\Crw) 
или щелкнуть кнопку Browse и сделать выбор в окне Set Directory. 
    3. По завершении нажать ОК, чтобы вернуться к вкладке Database. 


    86 Конфигурирование Crystal Reports 


    5.1.2. Специфицирование типов баз данных, представленных в окне диалога 
Choose Database File 

    При специфицировании типов баз данных, которые должны быть перечислены в 
окне диалога Choose Database File (это окно открывается при выборе команды 
меню Database Add Database to Report или при установке параметров нового 
отчета), можно ограничить количество типов файлов. В списке File Name будут 
представлены доступные базы данных только указанных типов. Для этого: 
    1. Открыть вкладку Database в окне диалога File Options. 
    2. В поле редактирования Database Selector ввести расширения имен файлов 
для типов баз данных, которые должны быть перечислены в окне диалога Choose 
Database File. 
    3. Нажать OK для возвращения к вкладке Database. 

    File Options 
    Layout j New Report   Database |SQL | Reporting [Fields JFor 
    Database: 
    Data Directory: 
    JCAVB \report Database Selector 
    j".mdb;".db;".dbH Index Selector: 
    Browse.. 
    OK.   I 
    P"	Use Indexes For Speed !• Translate DOS Memcis 
    f?	Use Default Alias           f? Auto SmartLirtking 
    Г?	Translate DOS Strings 
    Г"	Case-Insensitive SQL Data 
    Default Dictionary: 
    Browse... 

    Рис. 5.З. Вкладка Database окна диалога File Options. 


    Примечание: При вводе типов имен файлов (*.db; *.dbf; *.ovd и т. д.) перед 
расширением необходимо поместить звездочку, а типы файлов разделять точкой с запятой. 


    5.1.3. Специфицирование умолчательного представления, используемого при 
предварительном просмотре отчета 

    Открыв отчет в окне Preview, в случае необходимости можно изменить 
умолчательное отображение информации при предварительном просмотре. Для этого: 
    1. В окне диалога File Options открыть вкладку Layout (см. рис. 5.2). 


    Глава 5. Создание отчетов с помощью Crystal Reports 87 

    2. В нижнем левом углу вкладки расположен раздел Preview Pages опций 
предварительного просмотра: Full Size (полный размер страницы), Fit Width 
(подогнать страницу по ширине окна) и Fit Page (подогнать страницу по окну). 
Выбрать одну из трех опций. 
    3. Нажать ОК для возвращения к программе. 
    После этого при просмотре в окне Preview отчет будет выводиться в 
выбранном режиме. 

    5.1.4. Специфицирование умолчательных шрифтов для разделов отчета 

    1. В окне диалога File Options открыть вкладку Font. 
    2. Во вкладке Font имеется две вертикальные колонки кнопок; одна колонка — 
для изменения умолчательных шрифтов полей разделов отчета (Default Field 
Fonts), и другая — для изменения умолчательных шрифтов текста (Default Text Fonts). 
    Нажать кнопку соответствующего раздела, для которого требуется изменить 
умолчатель-ный шрифт. Открывается окно диалога Font. 
    3. Выбрать требуемый тип, стиль и размер шрифта, который нужно 
использовать в качестве умолчательного, и нажать ОК. Повторить процедуру для 
каждого нужного раздела. 
    4. Нажать ОК снова, чтобы вернуться к программе. 
    После этого в качестве умолчательных для разделов отчета будут 
использоваться установленные шрифты. 

    File Options                                                               
                                    S3 I 
    ..             ———————                               ...                   
                                            ————                               
                                                 и 
    New Report | Database j SQL j Reporting | Fields  Forts j                  
              j 
    Default Section Fonts:                                                     
            LJ^J    > 
    Default Field Fonts:        =- Default Text Fonts:                      i 
————— i 
    i     °R    I 
    Title...	I      '            Title... 
    Cancel J 
    Page Header ..	:     Page Header... 
    Group Header...	'           Group Header...	Hslp    [ 
    Detail..	Detail... 
    Group Footer .	i     Group Footer... 
    Grand Total...	Grand Total. . •   .... ...„ .. ......  . 
    Page Footer	:     ;     Page Footer... 
    S ummary . .	Sumniafy... 

    Рис. 5.4. Вкладка Font окна диалога File Options. 


    5.1.5. Специфицирование сервера SQL/ODBC как основного источника данных 

    Процедура специфицирования сервера SQL/ODBC как основного источника данных 
предполагает выполнение четырех шагов в двух вкладках окна диалога File 
Options — New Report и SQL: 


    88 Конфигурирование Crystal Reports 

    1. Открыть вкладку New Report и в разделе Prefer to create new reports 
from: выбрать опцию SQL Tables. 
    2. Открыть вкладку SQL и в раскрывающемся списке Server Type выбрать 
соответствующий тип сервера. 
    3. Чтобы в дальнейшем при формировании нового отчета не открывалось окно 
диалога Server Type, нужно во вкладке SQL установить флажок Skip Server Type dialog. 
    4. Ввести имя сервера, имя базы данных и идентификатор пользователя в поля 
Server Name, Database и User ID соответственно. 
    5. Нажать ОК для возвращения к программе. 

    Примечание: Если после специфицирования сервера SQL/ODBC как основного 
источника данных снять флажок Use Report Gallery for new reports, при открытии 
нового отчета окно диалога Report Gallery будет пропущено и сразу открыто окно 
диалога SQL, где для регистрации на сервере нужно будет ввести правильный 
идентификатор пользователя и пароль. 


    File Options	^^^|_XJ 
    New Report (Database   SQL (Reporting I Fields I Fonts I	HE 
    
    I Server Type:   j SQL Server                                             j*j 
    p* jSkip Server Type dialoq	OK    j 
    .__....... ..    ..   . . 
    Server Name: JNelSrvrl            Diet. Path: J	Cancel 
    м Database:      jsklad               DjtaPath: f	Help    | 
    ; ! User ID:          j" I r Allow Reporting On:      ••--M     ^ Iable*   
                        Table name LIKE: 
    ;      F Views                       ; :|- -•-•-  -• -       ^   } Ml |Г~ 
System Tables            I : ,'   !                                       ;   
Owner LIKE: Г Synonyms                         .... 
    [У,    Г Stored Procedures      i   '                        [4'-1 Г" 
Prompt on every table 

    Рис. 5.5. Вкладка SQL окна диалога File Options. 


    5.1.6. Специфицирование шаблона отчета как основного источника данных 

    1. В окне диалога File Options открыть вкладку New Report. 
    2. В разделе Prefer to create new reports from: включить опцию Other 
Reports. Нажать ОК. 


    Глава 5. Создание отчетов с помощью Crystal Reports 89 

    После этого при выборе команды New Report из меню File или при нажатии 
кнопки New Report на панели инструментов появляется окно диалога Create New 
Report, в котором представлены доступные шаблоны отчетов. 

    Create New Report                                                          
                                        ?3 
    с с	noose an Expert: — -•••                                                
            Or:      -.-...
    -~Ь		Ь		I —— — rriK		—                ,1 ~"(Ж»	_ •_••- •       i 
    I;          = 
    Standard	Listing		Cross-Tab		Mail Label		Another Report  ] Cancel    I     
 'j 
    ~~Вч		it,:		1-1		a 
    . ""." ^:				j_ 3-			Help      | 
    Summary          Graph            Top N noose Report Type and Data 
Type:					Drill Down		1 
    
    
    i ———				*=T """""" л <Ж> 
    r"^l =       5 
    Custom           Custom          Custom Report         Cross-Tab       
Mail Label						Data File       SQL/ODBC        I ; 

    Рис. 5.6. Окно диалога Create New Report с шаблонами отчетов. 


    5.1.7. Специфицирование умолчательных установок форматирования полей 

    Умолчательные установки используются для форматирования полей при запуске 
нового отчета. 
    1. В окне диалога File Options открыть вкладку Fields. 
    2. Выбрать тип поля, для которого требуется изменить опции форматирования. 
Появляется окно диалога с опциями форматирования для данного типа поля. 
    3. Внести изменения к умолчательным установкам и нажать ОК для возвращение 
ко вкладке Fields. Повторить процедуру для каждого типа поля. 
    4. Нажать ОК для возвращения к программе. 
    После этого установленные опции форматирования полей будут автоматически 
применяться при печати отчета (рис. 5.7). 

    5.2. Построение отчетов 

    Ниже приводятся пошаговые инструкции по формированию отчетов с помощью 
Crystal Reports для Visual Basic. 
    Вначале: 
    1. Открыть Crystal Reports. 


    90 Построение отчетов 


    File Options 
    Layout I New Report j Database I SQL (Reporting   Fields JFor 
    SB 
    Field Format: String,..	OK    j -J                                         
                       Cancel 1 
    1 Format Number                                                            
                            ?3 
    
    
    I     Number...	Number Default Options 
    ,--—..-.- _ ....,._.., ...... _ .._.-.. ...... 
    ' F jUse Window Default Formatj 
    Currency... 
    Date... 
    Boolean... 
    1Г" Suppress if Duplicated	I**	Currency Symbol:            fp~ 
    j Г" Suppress if Zero	f~	One Symbol Per Page 
    . Г" Hr.:fe i';hrt, P:iri';r.:;	• ("*	Fixed            (•  Floating 
    i      Alignment:      j Default	_?]	Position: 
    F^    3 
    Decimals: J1.0Q	_^j Decimal Separator: } Rounding: jrloijrj 17 Thousands 
Separator: j Negatives: 
    .123        _*j      ^ Leading Ze 
    Sample: 
    [~      OK 
    -5 555 555.56р. 
    Cancel 
    Help 

    Рис. 5.7. Вкладка Fields окна диалога File Options и опции форматирования 
числовых полей. 

    2. Нажать кнопку New Report на панели инструментов. Открывается окно 
Create New Report с галереей шаблонов отчетов (см. рис. 5.6.). 
    Щелкнуть одну из кнопок мастеров (в Crystal Reports они называются 
экспертами) для пошагового создания отчета выбранного типа. Или: 
    Щелкнуть кнопку Another Report, чтобы использовать другой отчет как шаблон 
для создания нового отчета. Или: 
    Щелкнуть кнопку Custom для формирования пользовательского отчета. При этом 
галерея отчетов расширяется. 

    5.2.1. Выбор типа отчета 

    В разделе Choose Report Type and Data Type нажать кнопку соответствующего 
типа отчета: 
    •   выбрать Custom Report для создания стандартного отчета типа 
строка/столбец или в формате блока данных; 


    Глава 5. Создание отчетов с помощью Crystal Reports 91 

    •  выбрать Custom Cross-Tab для создания перекрестного отчета в виде 
сводной таблицы, в которой могут выводиться итоговые данные по указанным 
столбцам. Перекрестные отчеты предоставляют информацию в наглядном виде и 
полезны при проведении быстрых сравнений или выявления тенденций; 
    •  выбрать тип Custom Mail Label для создания почтовых ярлыков или 
элементов типа надписи. 

    5.2.2. Выбор источника данных 

    В разделе типов данных можно выбрать источник данных, который будет 
использоваться для создания отчета: 
    • выбрать Data File для подключения одной или больше таблиц базы данных. 
Появляется окно диалога Choose Database File, в котором можно выбрать базу 
данных — источник данных для отчета; 
    • если выбрать SQL/ODBC, из числа установленных можно выбрать любой 
источник данных из широкого разнообразия поддерживаемых Crystal Reports (их 
драйверы должны быть, за^гистдиррваны на машине). Появляется окно диалога Log 
On Server, в котором нужно зарегистрироваться на сервере, после чего для 
использования в отчете можно будет выбрать требуемые таблицы SQL. 

    Crystal Reports User Survey 
    Job: Function: 
    JlJ     No. of Employees:   1101 -500    JJ No. of PC's: 
    d 
    11-50 
    zJ 
    If applicable, what is your company role in the software industry? 
    <" Reseller    Г Distributor    f* VAR.A/AD/System Integrator     ^ N/A 
    What databases do you intend to (or would like to) access with Crystal Reports? 
    1У Access Г DB2->   | Г Ingres Г" R:Base Г* «Base --> I 
    Г ASCII              Г AS400            Г	Btrieve 
    23   Г Excel              Г	Gupta 
    Г Lotus 1-2-3     Г Scalable SQL I?	Oracle 
    Г? SQL Servei     Г" Superbase      Г"	Sybase 
    21               Г"	other-> f 
    Г Informix Г Paradox Г WatcomSQL 
    ~3 
    What programming environment(s) do you use or intend to use? 
    Г C/C++ Г Pascal 
    Г~ dBASEAtfndows 
    f* Visual Basic    P* other --> 
    Г Delphi	Г Paradox 
    ~3 
    OK 

    Рис. 5.8. Окно регистрации копии пакета Crystal Reports. Видны 
поддерживаемые источники данных и инструментальные средства разработки. 


    5.2.3. Связывание таблиц базы данных 

    Если выбрано две или больше таблиц базы данных, их необходимо связать 
(если связь декларативно не определена при создании базы данных). Связывание 
таблиц базы данных 


    92 Построение отчетов 

    выполняется с целью установления отношений записей одной таблицы с 
записями другой. Поле, используемое для связывания, должно быть общим для 
обеих таблиц. 
    При выборе нескольких таблиц открывается окно мастера Visual Linking 
Expert (Шаг 2 мастера Create Report Expert), в котором можно связать таблицы 
базы данных вручную или автоматически. 

    Create Report Expert 
    Step 1: Tables  -2:Links J3: Fields 14: Sort | 5: Total j 6: Select | 7: 
Style J 
    Order Details     \			Orders          |			Customers      J	A 
    &OrderlD &ProductlD UnitPrice Quantity Discount	i — •-	— >	HOrderlD        
  jv ф Customer! D &EmployeelD DOrderDate RequiredDate	•^	Л	DCustornerlD    
_^_ HCompanyNarne ContactN arne ContactTitle Address 
    §ShippedDate §ShipVia          — Freight ShipName ShipAddress    T 
j	i-		DCity DRegion DPostalCode Country Phone           j*J 
    Employees      J	Ж 
    Tables... 
    Arrange 
    Smart Linking 
    Back       Next» 
    Cancel 

    Рис. 5.9. Вкладка мастера Visual Linking Expert. 


    Для связывания вручную: 
    1. Выбрать поле в таблице, которое требуется связать с полем второй таблицы. 
    2. Перенести мышью поле от первой таблицы ко второй. Если связь возможна, 
появится линия связи, указывающая на успешное установление связи.	^ 
    3. Чтобы отредактировать связь, нужно выделить линию связи и щелкнуть 
кнопку Options. Появляется окно диалога Link Options, в котором можно провести 
требуемые изменения 
    Для автом.атического?вязьшания нужно нажать кнопку Smart Linking. Функция 
Smart Linking создаст логические связи между таблицами в отчете автоматически. 
Если установление связи невозможно, будет выведено соответствующее сообщение. 

    5.2.4. Режим Design 

    В режиме Design открывается окно конструктора, в котором располагается 
заготовка отчета с пустыми разделами Title, Page Header, Details, Page Footer 
и Summary. В ходе создания отчета в каждый из этих разделов вставляются и 
форматируются соответствующие элементы компоновки. 


    Глава 5. Создание отчетов с помощью Crystal Reports 93 


    ? Crystal Reports Pro - [c:\vb\report\1.rptj 
    File   Edit   insert   Format   Database   Report   Window 
    О:Й^У!   Шё	i| f\ e'C&ljgJ "l<8j|H 
    Design   Preview 
    ;«. . . li. . . 12, , , u, , , и . 
    : . _ :il .... ___ . .„__. — ..._ _ . —— . 
    Title	Заголовок отчета 
    Page header	Заголовок страницы 
    Details                     1	Данные 
    Page footer	Нижний колонтитул 
    Summary	Резюме отчета 

    Рис. 5.10. Разделы отчета. 


    Для каждого раздела отчета имеются свойственные ему характеристики печати: 
    •	раздел Title (заголовок отчета) печатается один раз в начале отчета; 
    •	раздел Page Header (заголовок страницы) печатается в начале каждой страницы; 
    •	раздел Details (данные отчета) печатается один раз для каждой записи; 
    •	раздел Page Footer (нижний колонтитул страницы) печатается в конце 
каждой страницы; 
    •	раздел Summary (резюме отчета) печатается одищааад^конце отчета. 

    5.2.5. Выбор полей для отображения в отчете 

    Окно диалога Insert Database Field (см. рис. 5.1) появляется на экране при 
открытии нового отчета. Оно доступно также через команду меню Insert | 
Database Field. В этом окне выводится список полей и таблиц текущей базы 
данных, доступных для использования в отчете. Для ускорения ввода нескольких 
полей окно остается на экране, пока разработчик не нажмет кнопку Done. 
    Для вставки полей: 
    Выбрать поле (поля), данные которого требуется отразить в отчете. Для 
этого можно: 
    •   выбрать одно поле, щелкнуть кнопку Insert и затем поместить поле в отчет; 
    •  выбрать одно поле и перенести его мышью на отчет; 
    •  использовать комбинацию <ЗЫЯ+щелчок> для выбора непрерывного интервала 
полей или комбинацию <С{г1+щелч6к>~для выбора несоседних полей из списка и 
перенести их на отчет.


    94_____________ ____	Построение отчетов 


    Примечание: При размещении нескольких полей они будут располагаться в 
отчете в том порядке, в котором они перечислены в окне диалога Insert Database Field. 

    Crystal Reports отмечает позицию каждого поля прямоугольной рамкой. 
Символы в рамке указывают на тип поля: текстовое (XXX...), число (555 ...), 
валюта ($555 ...)', дата (12/31/99) или логическое (Boolean) (T/F). Число 
символов в рамке определяет число символов, допустимое для поля в базе данных. 
Вид полей можно изменить, выбрав команду Options из меню File и установив 
флажок Show Field Names во вкладке Layout окна диалога File Options (см. рис. 
5.2). Каждое поле после этого вместо соответствующих символов будет обозначено именем. 
    Crystal Reports автоматически поместит заголовки для каждого поля в 
разделе Page Header непосредственно выше соответствующего поля. Эту опцию 
можно деактивировать, сняв флажок Insert Detail Field Titles во вкладке Layout 
окна диалога File Options. 

    5.2.6. Перемещение, изменение размера, форматирование и удаление полей 

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

    Примечание: Для одновременного выбора нескольких полей можно использовать 
метод <5Ш+щелчок> или в меню Edit выбрать команду Select Fields. Команда 
Select Fields активирует курсор с перекрестием, которым вокруг нескольких 
полей можно обозначить прямоугольную "область выбора. 

    2. После того как поле выбрано, необходимо сообщить Crystal Reports, что с 
этим полем делать дальше. 
    Для перемещения поля — перенести его мышью в требуемую позицию. 
    Для изменения размера поля — передвинуть правый или левый маркер, пока 
поле не приобретет требуемый размер. 
    Для форматирования поля (выравнивание, представления числа, валюты, даты и 
т. д.) — щелкнуть поле правой кнопкой мыши и выбрать команду Change Format из 
контекстного меню. Соответственно типу данного выбранного поля появляется окно 
диалога Format, в котором можно изменить настройки формата. 
    Для установки окантовок, фона заполнения и тени — щелкнуть поле правой 
кнопкой мыши и выбрать Change Border and Colors из контекстного меню (рис. 
5.11). Появляется окно диалога Change Border and Colors, в котором можно 
установить требуемые выборы. 
    Для изменения шрифта — щелкнуть поле правой кнопкой мыши и выбрать из 
контекстного меню команду Change Font. Провести необходимые изменения в окне 
диалога Font. 
    Для удаления выбранного поля — нажать клавишу <Delete>. 

    Примечание: При щелчке на попе правой кнопкой мыши за одну операцию 
выбирается это поле и выводится контекстное меню. 

    Примечание: Многие из опций установки шрифта и форматирования также 
доступны через кнопки в панели форматирования внизу окна Crystal Reports. 


    5.2.7. Сортировка данных отчета 

    Сортировка означает порядок вывода значений. Информация в телефонном 
справочнике, например, сортирована в алфавитном порядке по фамилиям абонентов, 
что позволяет быстро найти нужную информацию. 


    Глава 5. Создание отчетов с помощью Crystal Reports 95 

    pCategoryName 
    Name: Categories. CategoryNarne 
    Change Fort... Change Format... 
    Change Border and Colors.. 
    Change Line Height... 
    Browse Field Data... Select Records Expert... 
    Insert Grand Total... Insert Summary. 
    Send Behind Others Delete Field 
    Cancel Menu 
    J :..J I MUJISIiSu.;' 

    Рис. 5.11. Контекстное меню для работы с полями. 

    При сортировке данных в Crystal Reports программа предлагает пользователю 
выбрать два параметра: поле, по которому требуется выполнить сортировку, и 
направление сортировки (Ascending (по возрастанию), означающее от наименьшего 
к наибольшему, от 1 до 9, сначала False, потом True; или Descending (по убыванию)). 
    В качестве поля сортировки можно использовать любое поле. При выборе поля 
сортировки метод сортирования определяется установками "Язык и стандарты" 
панели управления Windows. 
    Например, символьные значения сортируются так, что пробелы имеют самое 
низкое кодовое значение, затем идут знаки пунктуации, затем символы чисел, 
затем латинские символы верхнего регистра, латинские символы нижнего регистра 
и, наконец, символы кириллицы верхнего и нижнего регистра. Поля типа Currency 
сортируются в порядке эквивалентных чисел. Числовые поля сортируются в 
числовом порядке. Поля типа Date сортируются в хронологическом порядке. 
    Crystal Reports позволяет выполнять сортировку по одному или нескольким 
полям. При сортировке по нескольким полям Crystal Reports вначале сортирует 
записи, основываясь на значениях в первом выбранном поле, располагая их по 
возрастанию или по убыванию значений этого поля. Когда две или больше записи 
имеют одинаковое значение поля в первом поле сортировки, Crystal Reports 
сортирует эти (и только эти) записи, основываясь на значениях второго поля 
сортировки. Например, при сортировке фамилии и имени (в порядке возрастания) 
"Семенов, Николай" было бы возвращено раньше, чем " Семенов, Петр", но после 
"Johnson, Nick". 
    Для задания параметров сортировки: 
    1. Нажать кнопку Sort Records на панели инструментов. Откроется окно 
диалога Record Sort Order.   "" 
    2. Из списка Report Fields выбрать поле (поля) сортировки. 
    3. Нажать кнопку Add. Выбранное поле будет добавлено к списку полей Sort Fields. 
    4. Выбрав опцию Ascending или Descending, специфицировать направление 
сортировки. По завершении нажать ОК. 


    96 Построение отчетов 

    Record Sort Order 
    Report Fields: 
    Sort Fields: 
    Cateaaries.CateaoruNarne                 В^^^^^^И	A -Categories. Category! 
D                I 
    ;i  Add->   j|:i 
    <- Remove I 
    <i              i               H	<l              I               H 
    OK 
    Cancel 
    Help 
    Sort Direction: (*  Ascending Г" Descending 

    Рис. 5.12. Окно диалога Record Sort Order. 


    5.2.8. Группирование данных отчета 

    Crystal Reports позволяет группировать данные в отчете. Группа — набор 
записей, которые некоторым образом связаны друг другом. Например, в списке 
клиентов группа могла 6> содержать всех клиентов, живущих в одном городе. В 
отчете по продажам группа може-содержать заказы, размещенные одним клиентом, 
или все заказы, оформленные одним коммерческим представителем. 
    Crystal Reports предоставляет большую гибкость в группировании данных. Он 
также дает возможность создавать ряд разных видов значений группы. 
    Значение группы — значение, сгенерированное как результат оценки или 
вычисления выполняемого с данными из отдельной группы записей. Промежуточная 
сумма — один из видов значения группы, это сумма всех значений одного поля по 
всем записям в группе. В коммерческом отчете, например, если требуется 
получить итог продаж одного коммерческого агента, Crystal Reports собирает все 
записи, которые принадлежат этому коммерческому агенту, и суммирует объемы 
продаж из всех записей. 
    Значения группы — важные инструменты для создания мощных отчетов. Crystal 
Reports позволяет, в частности, вывести среднее значение по группе записей, 
подсчитать количество значений в группе, вычислить стандартное отклонение или 
разброс значений, определить самое вьюокое и самое низкое значение в группе. 
    В то время как в отчете может отображаться много полей данных, обычно 
имеется только одно поле, по которому требуется выполнить группирование. В 
коммерческом отчете, например, это, вероятнее всего, будет поле, содержащее 
объемы продаж и т. д. 
    Порядок организации группирований: 
    1. При создании групп в отчете сначала нужно определиться с полем, по 
которому будет выполняться группирование. 
    2. В меню Insert выбрать команду Group Section. Открывается окно диалога 
Insert Group Section. 
    3. В окне диалога Insert Group Section выбрать поле группирования и 
порядок сортировки значений в группе. 


    Глава 5. Создание отчетов с помощью Crystal Reports	97 

    После того как эти простые выборы сделаны, Crystal Reports соответствующим 
образом сгруппирует данные в отчете. 

    Создание пользовательских группирований 

    В большинстве случаев сортировка и группирование данных основываются на 
значениях полей отчета. Например, если имеется список клиентов и требуется 
отсортировать и сгруппировать его по городам, Crystal Reports вначале 
сортирует список по городам и затем разбивает список клиентов на группы при 
изменении значения в поле Город. 
    Иногда, однако, может потребоваться сгруппировать данные, основываясь на 
значениях, не входящих в число полей отчета: 
    •  отчет может не содержать поле, по которому требуется выполнить 
группирование. На-гфймёрГотчёт содержит поле Клиент и поле Город, но не 
содержит поля Страна, по которому требуется получить группы; 
    •  отчет может содержать поле, по которому нужно выполнить группирование, 
но для каждой группы требуется выбрать определенные..значенияилиинтервалы 
значений. Например, нужно г^одучить^одну группу с записями, гд^^^^г^родаж 
меньше некоторого значения, вторую группу, ще сумма продаж больше некоторого 
значения, и заключительную группу, в которой сумма продаж располагается между 
двумя значениями. 
    Для решения таких проблем Crystal Reports позволяет применить 
специфицированный порядок группирования. Специфицированный порядок 
группирования дает возможность создать требуемые группы и конкретизировать, 
какие записи должна содержать каждая группа. Единственноеi 
реальное...ограничение здесь — запись может принадлежать только 
однойгруппе,,,	"~: ™ " " "* 
    Создать специф^цировшнное группирование можно, выбрав в окне вставки 
группы или промежуточной суммы в качестве порядкаГсортировки опцию in 
specified order (рис. 5.13). Затем в окне Defirj^JvlajT^ejdJ^irj^^	конкретизируются 

    5.2.9. Получение итогов и промежуточных сумм 

    Когда Crystal Reports суммирует данные, он разбивает их на группы и затем 
выполняет специфицированную операцию со значениями каждой группы. Он делает 
это автоматически. Все, что должен сделать разработчик, — специфицировать: 
    •  поле, по которому требуется выполнить подсчет; 
    • тип операции, которую нужно выполнить с данными поля; 
    • поле, при изменении значения которого нужно Ha4?Tbjjg^yjorpj/Tiny; 
    • Тюрядб]Гс5рТ йровкй. 
    Чтобы вставить промежуточную сумму (сумма по группе данных; выполняется 
только для числовых полей): 
    1. Щелкнуть правой кнопкой мыши поле и выбрать команду Insert Subtotal из 
контекстного меню. Открывается окно диалога Insert Subtotal. 
    2. Выбрать поле, по которому требуется инициировать подсчет новой 
промежуточной суммы при каждом изменении значения. 
    3. Специфицировать порядок сортировки: Ascending (возрастание) или 
Descending (убывание). 
    4. Crystal Reports создает новые разделы Group Header и Group Footer и 
автоматически помещает прО|Ле^куто^нуюТумму в раздел Group Footer. 

    4 Зак.   136 


    98 Построение отчетов 

    Insert Subtotal 
    Insert a subtotal foe the field 
    When the report к printed, the records wil be sorted end grouped by: 
    Order Ое1ай$.ОиапЙу 
    jasg'SfKiltlfel:-'? ''\ 
    ':   | CategorylD 
    The subtotal wi be      Group Name: |UserGroup1 printed on any спащ 
    d 
    I in specified order:	d 
    | in ascending order.                                    I {in descending 
order.                                  | 
    New Named Group...	[in original order.	П1И 
    ill. 
    Edk Named Group... 
    
    ^^^^^^1 D ehne Named liroup		•••••	LUKE] 
    OK. 
    —    Catogorie^CategorylD  Щ Categories. Categor^D |<New> | J      jis     
 j»j   any v*juft__jjj*l 
    any value equal to one of less than later than 
    Cancel I	Help    | 
    Browse Data... 

    Рис. 5.13. Окна InMrt Subtotal и Define Named Group в режиме создания 
пользовательских (именованных) групп. 

    Для вставки общего итога: 
    1. Для вставки в конце отчета общего итога (среднее по отчету, количество 
данных и т. д.) нужно щелкнуть поле правой кнопкой мыши и выбрать команду 
Insert Grand Total из контекстного меню. Открывается окно диалога Insert Grand Total. 
    2. Выбрать из списка требуемую операцию и нажать ОК. 
    3. Crystal Reports создает раздел Grand Total, в котором будет выводиться 
общий итог (рис. 5.14). 
    Для вставки подсчетов: 
    1. Для вставки подсчета (количество значений, сумма, среднее, стандартное 
отклонение, разница, минимум, максимум и т. д.) нужно щелкнуть поле правой 
кнопкой мыши и в контекстном меню выбрать команду Insert Summary. Открывается 
окно диалога Insert Summary. 
    2. Выбрать поле, при изменении значения которого требуется начинать новый подсчет. 
    3. Специфицировать порядок сортировки: Ascending (возрастание) или 
Descending (убывание). 
    4. Crystal Reports создает разделы Group Header и Group Footer и 
автоматически помещает подсчет в раздел Group Footer. 


    Глава 5. Создание отчетов с помощью Crystal Reports	99 

    •*»;• , . л. , .^;.,':,^mzm®imm^'., "ks'. ,'. P. , 
    
    
    _.. . j-nruiraBuiruri'Me'ra" '   ' ~~"~ 
    Page header	Заголовок страницы           -Количество 
    ttl: Quantity -A 
    Details	Данные       .                            Quantity 
    ttl: Quantity -A	n of Quantity: 
    Grand total	n of Quantify 
    Page footer LiJ	Нижний колонтитул^       i«    f 
    JArial Cyr                   *\	10      т       В   I] U     A  A"         
                       :••• 
    Gfoup footer Й1: Order Details.Quantity - A 

    Рис. 5.14. Создание разделов Group Header, Group Footer и Grand Total при 
вставке промежуточной суммы и общего итога (см. строку состояния). 


    5.2.10. Выбор записей 

    При выборе поля для отчета Crystal Reports, по умолчанию, печатает 
значения поля из каждой записи активной таблицы. В ряде (если не в 
большинстве) случаев, однако, требуется включать в отчет не все значения, но 
только некоторое подмножество этих значений. Например, из общего количества 
записей активной'Га^лиЦы-базы данных нужно получить записи только для 
определенной группы клиентов или ^лМэпрёд'етгейного интервала номеров счетов. 
В Crystal Reports это реализуется весьма просто. Для этого при выборе записи 
необходимо дать указание Crystal Reports базировать отчет только на тех 
зёписях, которые отвечают некоторым установленным условиям. А условия 
эти,устанавливаются, исходя из того, какую информацию требуется получить в 
законченном отчете. ,>• 
    Процедуру специфицирования записей, которые требуется включить в отчет, 
помогает выполнить мастер Select Records Expert. При этом нужно просто выбрать 
поле, на котором требуется базировать отбор записей, и затем в окне мастера 
установить критерии выбора. Если нужно установить дополнительные критерии или 
если требуется базировать отбор записей на дополнительных полях, мастер 
обеспечивает для этого соответствующие инст-рументальныё~средсТва! 
    Начать работу с Select Records Expert можно одним из двух способов: ; 
    •  Bbi6pj3TbjTane в отчете и щелкнуть кнопку Select Records на,панели 
инструментов либо выбирать команду меню Report | Select Records Expert. 
Программа открывает окно диалога Select Records Expert, готовое для установки 
условий для выбранного поля; 
    •  не выбирая поле отчета, щелкнуть кнопку Select Rejojjls на данели 
инструментов либо выбрать команду меню Report | Select Records Expert. 
Появляется окно диалога Choose Field. Выбрать поле, на котором требуется 
базировать снбор записей и нажать ОК. Открывается окно диалога Select Records Expert 


    100 Построение отчетов 

    Далее, для создания простых критериев: 
    1. Используя раскрывающиеся списки, ввести критерии для значений 
выбранного поля. 
    2. Если отбор записей требуется базировать на более чем одном поле, 
щелкнуть вкладку New и выбрать следующее поле из окна диалога Choose Field. 
    3. По завершении нажать ОК, чтобы вернуться к отчету. Crystal Reports 
выполнит отбор записей в соответствии с установленными критериями. 

    ; Select Records Expert 
    Products.UnitPrice: |<New> I 
    ps       3 I greater Than д| [$90 I? or equal to 
    d 
    OK	Cancel              JHelp         Speed Tip...          Biowse...       
  Hide Formula «< 
    Formula Editor... 
    {-*~ Record Selection   <""" Group Selection 
    {Products.UnitPrice};-=$90 
    LJ 

    Рис. 5.15. Окно диалога Select Records Expert. 

    Нажав кнопку Formula Editor, в окне Edit Formula созданный критерий можно 
отредактировать или добавить более сложные условия. Относительно работы с 
формулами см. ниже раздел "Работа с формулами". 

    Тор N 

    В некоторых случаях в отчете требуется показывать только группу из 
нескольких верхних или нижних значений полей: самые умелые коммерческие агенты 
с наибольшими объемами продаж; самые "уважаемые" клиенты, размещающие наиболее 
крупные заказы; наименее ходовые товары и т. д. Так как этот вид выбора групп 
весьма популярен, Crystal Reports включает средство, позволякощёе это'лёгко сделать. 
    Отбор группы Тор N (или Bottom N) устанавливается выбором команды Top 
N/Sort Group Expert в меню Report. В окне Top N/Sort Group Expert можно 
специфицировать вывод группы верхних или нижних значений, а также количество 
(N) этих значений. 
    При выборе группы Тор N имеется один аспект, который заключается в том, 
что требуется решить, что_делат1ь с записями из других групп, которые не 
удовлетворяют установленным критериям Тор N или Bottom №~1ЭтТГзапйсйПм"бжно 
либо полностью удалить из отчета, либо свести их в отдельную группу, установив 
для нее некоторое имя. Программа позволяет сделать и то и другое переключением 
флажка include Others, with the name (см. рис. 5.16). 


    Глава 5. Создание отчетов с помощью Crystal Reports     101 

    Top N/Sort Group Expert 
    Analyse report results by taking the Top N or Sort of totals. Products. U 
nitPrice I 
    Ш 
    JTopN	J[J   of:   JSum of Products.UnitPrice 
    p———— where N is:     10 
    P" ijrducje Others, with the name:! jOthers 
    Cancel 
    Help 

    Рис. 5.16. Окно диалога Top N/Sort Group Expert. 


    5.2.11. Добавление графика/диаграммы 

    Crystal Reports позволяет включать в отчет сложные, красочные диаграммы и 
графики. При добавлении диаграммы в отчете выводится графическое представление 
информации подсчета и промежуточной суммы. Следовательно, прежде чем можно 
будет добавить график, необходимо иметь в отчете, по крайней мере, одну группу 
и одну^тр_омежуточнунэ> сумму. Например, если имеется отчет по продажам, 
сгруппированный по коммерческим агентам с промежуточной суммой объемов по 
каждому агенту, можно быстро создать диаграмму, которая будет отражать эти 
цифры графически. 
    Добавление и изменение графиков в Crystal Reports выполняется с 
использованием мастера Graph/Chart Expert. Мастер пошагово проводит 
разработчика через процедуру создания диаграммы. 
    Чтобы обратиться к мастеру Graph/Chart Expert, нужно нажать кнопку Insert 
Chart на панели инструментов или выбрать команду меню Insert | Graph/Chart Expert. 
    В окне мастера имеется несколько вкладок-шагов, позволяющих выбрать тип 
диаграммы и выполнить ее настройку (рис. 5.17): 
    •  вкладка Туре. Здесь можно выбрать один из доступных типов диаграмм. Для 
выбора нужно щелкнуть соответствующую кнопку и перейти к следующему шагу; 
    •  вкладка Data. В этой вкладке можно выбрать: какие данные требуется 
представить, как частовыводить диаграмму (зависит от того, где она будет 
располагаться) и что требуется гюказать в Д?а7р1Гм^ёТВТйскрый	расчеты и 
промежуточные суммы отчета; из них нужно выбрать элемент, на котором будет 
базироваться диаграмма; 
    •   вкладка Text. Позволяет ввести в соответствующие поля надписи для 
диаграммы — заголовки, сноски, заголовки осей. Crystal Reports использует 
надписи только соответственно выбранному типу диаграммы. Ненужные надписи 
будут игнорироваться; 
    •  вкладка Options. Позволяет поместить на диаграмме легенду, ввести 
максимальное или минимальное ограничение значений данных и ряд других опций. 


    102 Построение отчетов 

    Giaph / Chdit f xpe 
    HiO; Jypi 12 Dale J3: Той J4: Options 
    k 
    fell 
    Side By Side       30 Side      Stacked Bar    3D Stacked 
    IH"! 
    kill 
    |г^Р1Р^ 
    Percent Bar    3D Percent        Line 
    Area 
    * * *, 
    3D Bars	Re         Multiple Pie   Weighted Re 
    ....pejgdj1'     ЫФ    |	firaph Done~| 

    Рис. 5.17. Типы диаграмм Crystal Reports. 
    
    
    a. , . a. , . n. i . is. i . в. i . fr. i . и. i . i 
    Title 
    Page header 
    Заголовок отчета      Продажи по годам 
    1995 Заголовок страницы 
    1996 
    1997 

    Рис. 5.18.3-О гистограмма • разделе заголовка отчета (режим Design). 


    Глава 5. Создание отчетов с помощью Crystal Reports	103 


    5.2.12. Объекты OLE

    Crystal Reports — приложение-контейнер OLE, которое позволяет помещать в 
отчет OLE-объекты. Для этого:
    1. Выбрать команду Object в меню Insert. Открывается стандартное окно 
Insert Object. 
    2. Вставить существующий объект, выбрав опцию Create from file и выбрав 
требуемый объект, или создать новый объект, выбрав опцию Create New и затем 
объектный тип. Запустится_содтв?тствующее приложение (например, Paint при 
выборе "Рисунок BMP), "где можнсГсоздать объект"!~ ~" 
    3. Если требуется отредактировать объект, нужно просто дважды щелкнуть его 
— и запустится программа, в которой объект был создан (или! пйдвбное 
приложение, которое позволяет выполнить редактирование). 
    4. Изменить объект, сохранить его — и Crystal Reports автоматически 
модифицирует объект в отчете.	• 

    5.2.13. Добавление заголовка отчета	

    1. Для добавления заголовка к отчету нужно нажать кнопку Insert Text Field 
на панели инструментов или выбрать команду меню Insert j Text Field. 
Открывается окно диалога Edit Text Field. 
    2. Ввести требуемый заголовок в поле редактирования и по завершении нажать Accept. 
    3. Поместить созданное текстовое поле в требуемую позицию в разделе Title отчета. 

    5.2.14. Предварительный просмотр отчета 

    1. Перейти в режим предварительного просмотра (Preview) можно в любое 
время, нажав кнопку Preview Report на панели инструментов либо щелкнув ярлык 
вкладки Preview. Открывается вкладка Preview с результатами отчета. 
    2. После этого можно либо настроить отчет во вкладке Preview, либо закрыть 
это окно и продолжать работать с отчетом в режиме Design. Функциональные 
возможности в обоих режимах одинаковы.	... . .-., - t vf • 

    5.3. Работа с формулами 

    Во многих случаях достаточным будет вывод в отчете данных в том виде, как 
они хранятся в полях таблиц базы данных. Например, чтобы подготовить форму 
заказа, нужно просто заполнить данными соответствующие поля отчета. 
    Иногда, однако, в отчете требуется вывести данные, которых нет в полях 
базы данных. Такие значения можно получить, рассчитав их,по формуле. 
    Если требуется создать формулу для вычисления числовых значений, сравнения 
одного значения с другим и выбора альтернативных действий по результатам 
сравнения, соединения нескольких текстовых строк в одну строку и т. д., следует: 
    1. Нажать кнопку Insert Formula field на панели инструментов или выбрать 
команду меню Insert | Formula field. Открывается окно диалога Insert Formula. 
    2. Ввести имя для формулы и нажать ОК. Открывается окно Edit Formula, в 
котором можно создавать, тестировать и редактировать формулу. 

    Примечание: Окно диалога Edit Formula также можно открыть, нажав кнопку 
Formula Editor в окне диалога Select Records Expert при установке критериев 
отбора записей для отчета (см. рис. 5.15). В этом случае создаваемая формула 
будет неименованной. 


    104 Работа с формула/ 

    3. Ввести поля, операции и функции в поле Formula text, выбрав их двойным 
щелчкои соответствующих списках. Получить полную информацию относительно 
каждого дост ного элемента списков Function и Operator можно, нажав кнопку Help. 

    Примечание: Каждая формула — текстовая строка, которую, вместо выбора 
компонентов списков, можно впечатать непосредственно в поле Formula text. При 
двойном щелчке элемет списка Crystal Reports вводит элемент в формулу со 
скобками, пунктуацией и другими элеменп ми синтаксиса, требуемыми для 
правильной работы формулы. При вводе формулы вручнук клавиатуры эти элементы 
синтаксиса придется вводить самостоятельно. Обычно более fy опасно и более 
быстро строить формулу, выбирая соответствующие элемёнпТы из"списков" 

    Примечание: Значения полей в окне диалога Browse_?ield Data (просмотр 
значений полей) пре ставляют только подмножество доступных записей. 

    4. По завершении редактирования нажать ,кнопку Accept. Crystal Reports 
контролируе синтаксис формулы и, если ошибок нет, закрывает окно Edit Formula. 
Если в синтаксис имеется ошибка — например, не указано имя файла, пропущена 
разделяющая точка ил поле не заключено в фигурные скобки, Crystal Reports 
генерирует сообщение Eire компилятора формул, детализирующее ошибку. 
    5. Поместить поле формулы в требуемую позицию в отчете. 

    ! Edit Formula:	@Формцла1			H^^^Vx] 
    Fields: -		Functions:	Operators: 
    |   ReportsTo                       *ji --Order Details--                  
!		Arithmetic:                                  *j j R emainder (rum, denom)   
   ZZJ I	Arithmetic: x +y	Add       ?] 
    OrderlD		i   Abs(x)	x-y	Subtract 
    ProductID	_lj	!    Round (x)	x"y	Multiply 
    I   UnitPrice		;    Round (x, ttplaces)	x J у	Divide 
    •>ДШШ!^^^|	HH^H   V1<	1    Truncate (x)	x%y	Per cent 
    Discount тС^Г	^    ..__         _   ,	Sum (fid)                            
    ,-• JiimJfM   гпвНГЫ!                         _U 1                         
      >|	•X <l     1	Negate        i > I 
    Formula text: 
    {Products.LInitPrice} " {Order Details.Quantity)! 
    LJ 
    U 
    Accept   :	Check	Select	irowse Field Data... I	Cancel 
    Help 

    Рис. 5.19. Окно диалога Edit Formula. 

    Разделы окна Edit Formula: 
    •  В ОКНе Fields перечислены все поля, которые можно использовать как 
параметры формулы: 
    •   в окне Functions представлено множество функций Crystal Reports. Эти 
функции — прекомпилированные процедуры, возвращающие значения. Все доступные 
функции при-ведены в этом окне с соответствующими параметрами и упорядочены по 
их назначению: 
    в окне Operators перечислены операции ("глаголы действия"), которые можно 
использовать в формулах для объединения ее компонентов. 
    Некото^е_изтипичных пр^и^^е^ь1ий_ф_ор_мул: 
    Создание в отчете вычисляемых полей: 

    {Orders.UnitPrice}*.85   //   Вычисляет  цену  со   скидкой   15%. 


    Глава 5. Создание отчетов с помощью Crystal Reports	105 

    Форматирование текста в отчете: 
    // Функция  Uppercase переводит все значения в поле CustomerName в 
    //  верадий регистр  литер. 
    Uppercase    ({customer.CustomerName}) 
    Отбор части или частей текстовой строки: 
    (customer.CustomerName} [1] // Извлекает   первую  литеру  имени  клиента Отбор части даты: 
    Month({orders.OrderDate})   // Определяет,   в каком месяце был размещен заказ 

    Эти примеры демонстрируют лишь некоторые возможности формул. С помощью 
формул Crystal Reports можно выполнять очень сложные манипуляции с данными. 

    5.3.1. Приемы работы с формулами 

    Точно так же, как в формулы вводятся поля, в формулы можно вводить 
др\/гие_фррмулы. Crystal Reports выполняет вычисления во вложенной формуле и 
затем использует значение, возвращенное этой формулой, как если бы это было 
любое другое значение. 
    Например, формула: 

    1*(2+4*6/3-7*12-8) +2*(2+4*6/3-7*12-8) +3*(2+4*6/3-7*12-8) 
+4*(2+4*6/3-7*12-8)= -820 

    включает выражение (2+4*6/3-7*12-8), повторяемое несколько раз. 
    Если для повторяемого выражения создать формулу (@F = (2+4*6/3-7*12-8)) и 
затем обращаться к этой формуле вместо ввода непосредственно длинного 
выражения получим тот же результат: 

    1*{@F}+2*{@F}+3*{@F}+4*{@F}   =   -820 

    Каждый раз, когда Crystal Reports видит формулу @F, он выполняет 
вычисление @F и возвращает значение -82 так же, как и выражение 
(2+4*6/3-7*12-8), лежащее в основе формулы. 
    Вставить B^gj^^Jqj^njj+joj3jyi^	1АДрушелодя: через окно Fields или вводя 
их в вручную. 

    Примечание: Формула не может ссылаться сама на себя. 


    5.3.2. Значение поля группы 

    Значение поля группы — значение, которое суммирует значения записей группы 
(промежуточная сумма группы, среднее значение группы и т. д). Использование 
таких значений в формулах может быть весьма полезным. Типичное применение — 
выяснить процент от общего итога, который составляет группа.	""' 
    Bcj^Bj/nbjtiaHeHidfiL поля группы в>.формулыможно либо через окно Fields, 
либо непосредственно впечатав его в поле Formula text. 
    Примечание: Из-за сложности синтаксиса некоторых полей групп рекомендуется 
их вводить выбором из окна Fields. 

    5.3.3. Комментарии формул 

    Комментарии формулы — примечания, включаемые в формулу для 
документирования ее структуры и действия. 


    106	'                                            Работа сформулами 

    Комментарии не печатаются в отчете и не воздействуют на формулу, но они 
видны и доступны в окне Edit Formula. Рекомендуется всегда включать 
комментарии со сложными формулами, особенно с теми, которые будут неоднократно использоваться. 
    Комментарии 'вводятся непосредственно в поле Formula text. Комментарий 
может быть выше или ниже формулы, он может также следовать за формулой на той 
же строке. 

    Примечание: Комментарию нужно предшествовать двумя знаками прямого слэша 
(//). Знак комментария может быть также выбран в списке Operators. 

    Например, приемлемы следующие варианты ввода комментариев: 

    //   Это   пример  правильного   ввода   комментария. 
    //   Следует  помнить,   что  при разбиении  строки  комментария. 
    //   следующая   строка   также  должна  начинаться   со   знака   комментария. 
    //  Иначе- Crys'fral';</'Re'pbr'E'fe''!d6pa6oTaeT   строку  комментария,   
как  часть 
    //  формулы, ' иг'въ1'Йа:'С'т'''сбббщёние • об  ошибке. 
    If   {Orders.OrderAmount} in  (100.00   to  250.00) Then .10 * {orders.OrderAmount} Else	•.    •• •..  •-. >•        ••-••:- 
    0.	-,v .,,
    // Это - также правильный ввод комментария. If {Orders.OrderAmount} > 10.00 Then 
    "" // Этот вариант - также приемлем. 
    Else	?:.,..lO-'.pА 'Ч'»-. -;••'•'••• 
    "Заказ очень мал" 

    5.3.4. Синтаксис формул 

    Crystal Reports требует," чтобы различйыё компоненты формулы вводились 
согласно определенному набору правил, составляющих синтаксис формул. 
    Синтаксис, подобно грамматике любого языка, имеет тенденцию к расширению и 
совершенствованию. Компоненты формулы должны вводиться определенным образом и 
в определенном порядке. 
    Различные элементы синтаксиса (кавычки, скобки, круглые скобки и т. д.) 
используются программой для идентификации различных компонентов формулы. 
Поэтому очень важно придерживаться правил синтаксиса^стем чтобы элементы 
формулы могли быть правильно распознаны компилятором и формула работала так, 
как это планировалось. 
    Различные компоненты формул и их синтаксиса перечислены ниже: 

    Текст 
    Синтаксис: "Текст" или 'Текст'	.      >,        • (Заключается в 
'одинарные' или-"двойные кавычки") 
    При использованийтекста в формулах он должен быть заключен в одинарные или 
двойные кавычки. Любой текст внутри этих кавычек будет напечатан в отчете в 
поле формулы. 

    Числа
    Синтаксис: 23134.567 
    Числа, вводимые в формулы, не могут содержать в качестве разделителей 
разрядов запятые, а также символы валюты." ——— 


    Глава 5. Создание отчетов с помощью Crystal Rupert»  107 

    Поля данных 

    Синтаксис: {Файл.Поле} 

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

    (Customer.Region} 

    идентифицирует поле Region из таблицы Customer. 

    Операции 

    Синтаксис: 1+1 
    При использовании операций в формулах в нужном месте просто вводится знак 
операции. До и после знака операции можно вводить пробел, однако это не 
обязательно (то есть 1 + 1). 

    Функции 

    Синтаксис: Имя_функции(параметры) 
    При использовании функций в формулах вводится имя функции и необходимые 
параметры в круглых скобках. Например, функция Sum(x) требует в качестве 
параметра поля или формулы. Например: 

    Average({Order.Amount}) 

    Эта формула вернет среднее из всех значений в поле Amount. 


    Скобки в формулах 

    При написании формулы в Crystal Reports используется три разных типа 
скобок. Каждый тип имеет определенное назначение и может использоваться только 
с некоторыми элементами формулы: 
    {} — фигурные скобки помещаются вокруг полей формулы и базы данных: 
    {Customer.Region}, {@sum} 
    [ ] — квадратные скобки вводятся при использовании операции индекса массива: 
    {Customer.CustomerName}    [1]	. () — в круглые скобки заключаются 
параметры функции: 

    Round(x),   Abs(х) 


    Примечание: Круглые скобки могут также использоваться для управления 
порядком оценки элементов формулы. 


    5.3.5. Порядок вычислений в формулах 

    Если создается формула, которая содержит разные виды операций, важно 
учитывать порядок, в котором Crystal Reports оценивает отдельные части 
формулы. Этот порядок называется порядком старшинства. 
    Простой порядок старшинства соответствует базовым математическим правилам 
старшинства: сначала, слева направо, выполняется умножение и деление, затем — 
сложение и вычитание. Например: 

    5+10*3 = 35 

    Сначала выполняется умножение 10*3, затем 30 прибавляется к 5. 


    108	Работа с формулами 

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

    (5+ 10)*3 = 45 

    Ясно, что круглые скобки имеют более высокий приоритет, чем операции 
сложения, вычитания, умножения и деления. Они переопределяют порядок вычислений. 

    Примечание: Когда формула содержит другие формулы, например: @Summa * 107.5%, 
программа сначала оценивает внедренную формулу, @Summa, следуя правилам 
порядка старшинства, и затем оценивает остальную часть основной формулы. 

    5.3.6. Удаление формул из отчета 

    При создании формулы и вводе ее в отчет Crystal Reports сохраняет 
спецификацию формулы, используя назначенное ей имя, и помещает рабочую копию 
этой формулы в позицию, указанную для нее в отчете. Копия работы — любой 
экземпляр формулы в отчете. 
    Для удаления формулы необходимо^удал^!Т^,к?^специфи^а]ди^та^_и_все 
рабочие_копии формулы, причем нельзя удалить спецификацию, не удалив все 
рабочие копии формулы. 
    Чтобы удалить отдельную рабочую копию формулы: 
    1. Выбрать копию формулы в отчете. 
    2. Нажать клавишу <Delete> или <Del> на клавиатуре компьютера. 

    Примечание: Даже после удаления всех рабочих копий формулы из отчета 
спецификация формулы остается нетронутой. Спецификации формул представлены в 
окне диалога Insert Formula и доступны для немедленного использования, когда 
формулу нужно снова ввести в отчет. 

    Чтобы удалить спецификацию формулы: 
    1. После удаления, всех рабочих копий формулы нажать кнопку Insert Formula 
на панели "инструментов. Появляется окно диалога Insert Formula. 
    2. Выбрать спецификацию формулы, которую требуется удалить из списка 
Formula Name. Crystal Reports активирует кнопку Delete. 
    3. Нажать кнопку Delete; Crystal Reports удаляет спецификацию формулы. 
    Примечание: Если формула используется\вдругойформуле, программа все равно 
удалит спецификацию.

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


    5.3.7. Копирование формул из оперативной справки 

    Windows позволяет копировать текст из тем оперативной справки в буфер 
обмена. Затем этот текст можно вставлять везде, где необходимо. Так как 
формулы, создаваемые с использованием окна Edit Formula, — простой текст, 
можно сэкономить время, копируя полезные формулы непосредственно в Edit 
Formula и затем изменяя их под свои потребности. 
    Чтобы скопировать формулу из оперативной справки: 
    1. При активном окне Edit Formula любым из стандартных способов (меню 
Help, функциональная клавиша F1 и т. д.) вызвать справку Crystal Reports. 
    2. Перейти ко вкладке Search (Поиск), чтобы найти тему, которая содержит 
представляющую интерес формулу. Открыть тему. 


    Глава 5. Создание отчетов с помощью Crystal Reports	109 

    3. Пролистать текст темы и найти формулу, которую требуется скопировать. 
    4. Выделить формулу в тексте и выбрать команду Edit | Copy. Windows 
помещает копию выбранного текста в буфер обмена. 
    5. В окне Edit Formula установить курсор в позицию вставки и нажать 
Ctrl-V, чтобы вставить текст формулы из буфера обмена. 
    6. Отредактировать формулу. 

    5.3.8. Функции 

    Функции — встроенные процедуры или подпрограммы, используемые для 
выполнения вычислений или манипулирования данными. При специфицировании 
функции Crystal Reports выполняет набор встроенных в функцию операций; при 
этом специфицировать каждую операцию отдельно нет необходимости. Таким 
образом, функция существенно облегчает создание формул. В Crystal Reports 
имеется свыше ста полезных функций. Все они доступны в списке Functions окна 
диалога Edit Formula, где они представлены по категориям: арифметические, 
строковые, функции дат, массивов и прочие. 

    5.3.9. Операции 

    Операции — специальные символы или слова, которые описывают операцию или 
действие, выполняемое с одним или более значениями. Операции используются в 
формулах. Crystal Reports читает операции в формуле и выполняет 
специфицированные действия. 
    Операции доступны в списке Operators окна диалога Edit Formula, где они 
представлены по категориям: арифметические, преобразования, сравнения, 
строковые, интервалы, логические, массивы, шаблоны и прочие. 

    5.3.10. Переменные 

    Переменная — именованная область памяти, выделяемая для хранения 
некоторого значения. Переменная характеризуется типом данного, который 
определяет характер данных, которые могут храниться в переменной. 
    В Crystal_ReE2Et5 переменные могут быть одноп^/штяти типов данных: 
NumberVar (числовой), CurrencyVar (денежный), StringVar (строковый)ГВоо1ёапУаг 
(логический), DateVar (дата). 

    Объявление переменных 

    Прежде чем переменная может быть использована, _ее_нужн,о.,объявить. то 
есть сделать известной компилятору. Синтаксис объявлений: 

    NumberVar x; CurrencyVar х; StringVar x; BooleanVar x; DateVar х; 

    Примеры: 
    Объявление переменной Amount, которая может содержать любое целое или 
дробное числовое значение: 

    NumberVar Amount^ 


    110	             Элемент управления Crystal 

    Объявление переменной YeslSlo, которая может возвращать значение FALSE или TRUE: 

    BooleanVar  YesNo;"    

    Объявление, переменной Last^arne, которая может содержать строковое значение: 

    //  Здесь1 -й^й1Ь.йняе<г'&я'1'Ь<ак:же 'присваивание  значения переменной 
StringVar'"LastName' ':•*= '"Ворбнков"; - ' 

    5.4. Элемент управления Crystal 

    Кроме выполнения функций мощного ^автономного процессора отчетов, Crystal 
Report обеспечивает модуль отчетов, с которым можнд,ус1анайливать связь из 
приложения Visual Basic. Разработчик,~йспользующий Visual Basic 5.0, может 
добавлять к приложению сложные возможности генерации и печати отчетов, не 
затрачивая времени на написание собственного программного кода. 
    Процессор Crystal Report Effglne — библиотека динамической компоновки, 
которая позволяет в приложении обращатьея к темже функциям формирования 
отчетов, которые доступны в Crystal Reports; f- ^ •.>•;,•"• А 
    Доступ к Report Engine из приложения Visual Basic осуществляется через 
элемент управле^ ния Crystal. Когда к проекту подключен элемент управления 
Crystal, при компиляции прил<>~ женйё'Связывается'с Report Епд)пё'.!Раздел 
приложения, связанный с отчетом, может быть простым и заключатьсй-в создании 
единственного отчета, который передается на принтер или окно печати 
без-всякихопций/доступных пользователю. Задание это может быть также весьма 
сложным и может позволять'пользователю изменять параметры выбора, сортировки, 
группирования записей и принимать решение, куда должен быть направлен 
результирующий отчет. 
    Report Engine обеспечивает удобное дополнение — через элемент управления 
Crystal — к существуй^й^глрйв^у'Я^йпоженЙя Visual Basic. Введя лишь несколько 
строк программного кода, можно получить мощный инструмент, который иначе 
потребовал бы недель работы. 

    5.4.1. Подготовка к использованию элемента управления Crystal 

    Приступая к использованию 'элемента управления Crystal, следует помнить, 
что Report Engine печатает существующие отчеты. С помощью Report Engine нельзя 
создавать новые файлы отчета. Отчеты должны быть созданы в Crystal Reports. 
    Процедура использования любого проекта Visual Basic, который включает 
Crystal Report Engine, требует трех шагов: 
    •   создать отчеты, с которыми будут работать пользователи. Создание 
отчетов, с которыми будет работать притежениегидентично созданию отчетов для 
автономного использования; здесь нет никаких ограничений. Отчеты могут быть 
простыми или сложными, и их может быть столько, сколько требуется для 
удовлетворения всех потребностей пользователей; 
    •  спроектировать'пользовательский интерфейс в Visual Basic, который будет 
управлять доступом к Repdrt Engine; 
    •  добавить к приложению элемент управления Crystal. 

    5.4.2. Проектирование пользовательского интерфейса 

    Интерфейс, разрабатываемый для работы с отчетами, ограничен только 
потребностями пользователей и воображением разработчика. Если интерфейс может 
использовать 


    Глава 5. Создание отчетов с помощью Crystal Report»	111 

элемент управления Crystal, он будет работать. Для Crystal Reports вид 
создаваемого пользовательского интерфейса безразличен — он к этому времени 
свое дело уже сделал. 
    Вариантами использования Report Engine могут быть команда меню, которая 
создает единственный отчет, окно диалога, позволяющее сделать выбор из 
нескольких опций печати отчета, или полностью автономное приложение внешнего 
интерфейса, которое вызывается из текущего приложения. Все это — приемлемые 
методы, и каждый из них имеет свои преимущества. Реализация пользовательского 
интерфейса может определяться любым или всеми следующими аспектами: 
    •  назначение приложения; 
    • типы отчетов, используемых в приложении; 
    •  параметры печати, установку которых требуется сделать доступными для 
этих отчетов; 
    •  в приложении имеется только один отчет или может быть сделан выбор из 
нескольких отчетов. 

    5.4.3. Подключение элемента управления Crystal к проекту 

    Элементы управления ActiveX обеспечивают подключаемые возможности, которые 
позво-ля!оТдобавлять компоненты* приложения и даже целые приложения к 
разрабатываемым проектам без написания больше чем нескольких строк 
программного кода. Crystal Reports реализует концепцию ActiveX в элементе 
управления Crystal. 
    Элемент управления Crystal (файл Crystl32.ocx) устанавливается в каталоге 
\Windows\System при инсталляции Visual Basic 5.0. Под^]ючить элемент 
управления Crystal к проекту Visual Basic можно, используя команду Components 
меню Project. В окне Components (см. рис. 1.3) в списке Controls нужно выбрать 
компонент Crystal Report Control 4.6. 
    После подключения компонента Visual Basic добавляет элемент управления 
Crystal к панели элементов.

    Piojecll     Fuiml (Form) 
    |х| 
    d! 
    Copj«*te>1997 Seagate Software Information Management Group. Inc. 
    800-877-2340 (US.1 800-663-1244 (C*wda) 
    60Ш1-3435 $afc$@fng.seagate?oftwaie.com 
    Current version information available on our home page 
    http://www.img seagatesoRware. com 
    or GO REPORTS on CompuServe 

    Рис. 5.20. Элемент управления Crystal в форт». 

    5.4.4. Применение элемента управления Crystal 

    После размещения элемента управления Crystal в форме (в период выполнения 
он не виден) необходимо сформировать соединение между приложением и Crystal 
Reports. Соединение устанавливается установкой свойств объекта во время 
разработки или изменением свойств в период выполнения. Свойства элемента 
управления позволяют специфицировать: 
    •  имя отчета, который требуется напечататб в ответ на событие в приложении; 
    •  адресат для вывода отчета (окно Preview, дисковый файл, принтер или 
электронная почта);	. 


    112 Элемент управления Crystal 

    •	количество копий, которое требуется напечатать (если отчет направляется 
на принтер): 
    •	информацию файла печати (если отчет направляется в дисковый файл); 
    •	информацию размеров и расположения окна Preview (если отчет направляется 
в окно 
    предварительного просмотра); «	информацию формулы выбора записей (если 
требуется ограничить записи в отчете);   , | 
    •	информацию сортировки;                                                   
    •	другие свойства отчета. 
    Свойства элемента управления Crystal могут быть изменены как 
во_врёмя.рэзработщ, таки в период выполнения. Следует отметить, однако, что 
некоторые сврй,С1ва,доступны_только в период выполнения. В окне свойств во 
время разработки эти свойства не представлены. 

    Изменение свойств во время разработки 

    Во время разработки свойства элемента управления Crystal могут быть 
доступны либо через окно свойств, либо через окно страниц свойств Property Pages. 
    1. Щелкнуть элемент управления Crystal, расположенный в форме, правой 
кнопкой мыши. 
    2. Выбрать команду Crystal Properties из контекстного меню. Появляется 
окно диалога Property Pages. 
    3. Используя вкладки и элементы управления в этом окне диалога, настроить 
свойства элемента управления ActiveX. 

    Database         j         Selection General       j      prjnt Window 
    ReportFileName: fCAV'E \reportVI rpt 
    :  Destination 
    |   Г То Window	(• [foPrinlel 
    <" To MAPI 
    Print to File 
    Q 
    Г То File 
    OK	Отмена	Применить	справка 

    Рис. 5.21. Окно диалога Property Pages для элемента управления Crystal. 


    Изменение свойств в период выполнения 

    Большинство свойств элемента управления Crystal можно установить в период 
выполнения, добавляя простые вхождения в программный код процедуры. Установки 
свойств периода выполнения заменяют установки, которые сделаны во время разработки. 
    Свойство Action и метод PrintReport предназначены для фактического запуска 
отчета в период'выполнения и могут использоваться только в период выполнения. 


    Глава 5. Создание отчетов с помощью Crystal Reports	113 

    Информация по установке значений отдельных свойств в период выполнения 
приводится ниже в разделе описаний свойств. Каждое описание содержит пример 
установки свойства в программном коде приложения Visual Basic. 

    5.5. Свойства элемента управления Crystal 


    Action 

    Свойство, инициирующее печать отчета. Применение в коде Visual Basic в 
период выполнения: [форма. jCrystalReport.Action = 1 Например: 
    CrystalReportl.Action  =   1   '   Печатает   специфицированный  отчет   в 
  ответ 
    '   на   событие  в   приложении. 
    Доступность свойства: период выполнения. 

    BoundReportFooter 

    Значение свойства True или False определяет, нужно или нет вставлять 
раздел Page Footer в Default Bound Report (умолчательный связаннь1й^стчет). 
    Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport1 .BoundReportFooter = True Например: 
    CrystalReportl.BoundReportFooter  =  True Доступность свойства: 
разработка, выполнение. 

    BoundReportHeading 

    Свойство String, которое позволяет пользователю определять заголовок 
отчета. Применение в коде Visual Basic в период выполнения: 
[qbop/wa.]CrystalReport1 .BoundReportHeading = "заголовок" Например: 
    '   Печать   заголовка  для   специфицированного   отчета 
CrystalReportl.BoundReportHeading  =   "Продажи  по  регионам" 
    Доступность свойства: разработка, выполнение. 

    Connect 

    Регистрация на сервере SQL. 
    Применение в коде Visual Basic в период выполнения: 

    [форма. ]CrystalReport.Connect[= _ 
"имя_сервера;идентификатор_пользователя; _ пароль; база_данных"] 

    Например: 

    CrystalReportl.Connect = "DSN = Accounting;UID = 734;PWD = _ bbbl;DSQ = Administration" 


    114	Свойства элемента управления Crystal 

    В этой строке выполняется соединение с базой данных Administration на 
сервере Accounting с использованием идентификатора пользователя 734 и пароля ЬЬЫ. 
    Параметры должны быть указаны в следующем формате: DSN = имя_сервера;ию = 
идентификатор_пользователя', _ PWD = лароль;050 = база_данных 

    Примечание: Прежде чем можно будет использовать это свойство, для всех баз 
данных SQL к которым планируется обращаться, необходимо установить драйверы ODBC. 

    Доступность свойства: разработка, выполнение. 

    CopiesToPrinter	W^b    «>. П$.     •-*,*, 

    Определяет количество копий, которые необходимо напечатать, если вывод 
отчета направляется на принтер (если значение, назначенное для свойства 
Destination, 1 — Printer). 
    Применение в коде Visual Basic в период выполнения: 
[0opMa.]CrystalReport.CopiesToPrinter[= количество_копий ] Например: 

    CrystalReportl.CopiesToPrinter = 3 ' Печатает три копии 
    ' специфицированного отчета. 

    Параметр количество_копий не должен быть нулем или отрицательным числом. 
Доступность свойства: разработка, выполнение. 

    DataFiles 

    Определяет расположение файлов базы данных или таблиц, используемых в 
отчете. Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.DataFiles(i/HdeKC_/waccuea)[= расположение] 
    Расположение — имя и путь каждого файла базы данных или таблицы в отчете, 
для которого требуется изменить расположение. 
    Отдельную строку кода следует вводить для каждого файла, для которого 
требуется изменить расположение. 
    Дорядок файлов в массиве должен соответствовать порядку файлов в отчете. В 
дизайнере Crystal Reports определить порядок файлов в отчете можно в окне Set 
Location (команда Set Location в меню Database). 
    Первый файл в отчете имеет индекс_массива (0), второй файл — (1) и т. д. 
    Например, чтобы изменить расположение первого и третьего файлов в отчете 
(1 .dbf и S.dbf) на каталог c:\new, нужно использовать следующий синтаксис: 

    CrystalReportl.DataFiles(0)   =   "c:\new\l.dbf" 
CrystalReportl.DataFiles(2)   =   "c:\new\3.dbf" 

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


    Глава 5. Создание отчетов с помощью Crystal Reports 115 

    Свойство DataFiles очищается сразу после выполнения задания_печати. Если 
потребуется распечатать отчет второй раз, программа к этому моменту уже 
вернется к расположениям, первоначально специфицированным в файле отчета. 
    Доступность свойства: период выполнения. 

    DataSource 

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

    Destination 

    Определяет адресат печати отчета (Window, Printer или File). Применение в 
коде Visual Basic в период выполнения: [c)bopMa.]CrystalReport.Destination[= 
адресат] Например: 

    CrystalReportl.Destination   =   0 Возможен выбор следующих адресатов печати: 

    Передает   специфицированный  отчет в  окно  печати. 

    Значение	Адресат	Константа 

    0	Window (передает отчет в окно печати)	crptToWindow 
    1	Printer (передает отчет на принтер)	crptToPrinter 
    2	File (направляет вывод отчета в дисковый файл для последующей распечатки 
отчета или для импорта в другое приложение. Если выбирается это значение 
свойства Destination, необходимо также установить свойства PrintFileName и PrintFileType).	crptToFile 
    3	EMail через MAPI (передает отчет другому пользователю сети через MAPI 
Email (Microsoft Mail). Отчет присоединяется к сообщению EMail в формате, 
специфицированном свойством PrintFileType).	crptMapi 

    Доступность свойства: разработка, выполнение. 

    DetailCopies 

    Определяет количество копий каждой записи, которое должно быть напечатано 
в разделе Details отчета.	~~          " 
    Применение в коде Visual Basic в период выполнения: 
[0opMa.]CrystalReport.DetailCopies[= количество_копий ] Например: 
    CrystalReportl.DetailCopies  =  3   '   Определяет,   что  в  разделе  
данных '   должны быть   напечатаны '   три   (3)   копии  каждой  записи 
    Если для DetailCopies установлено значение, меньшее или равное нулю, 
значение игнорируется и в разделе данных будет напечатана 1 копия записей отчётаТ 
    Доступность: разработка, выполнение. 


    116 Свойства элемента управления Crystal 


    DiscardSavedData 

    Если со специфицированнымi отчетом сохранены данные, установка этого 
свойство в • (TrueforiepraeT данные.	'       '""                               
                          i 
    Применение в коде Visual Basic в период выполнения: 

[0op/wa.]CrystalReport.DiscardSavedData[= TrueFalse] Например: 
    CrystalReportl.DiscardSavedData = 1 ' Отвергает данные, сохраненные 
    ' со специфицированным отчетом. 

    Для параметра TrueFalse используются значения: False = 0, True = 1. 
Доступность: разработка, выполнение. 

    EMailCCList 

    Определяет список "СС", по которому требуется маршрутизировать сообщение 
электронной почты. 
    Применение в коде Visual Basic в период выполнения: 
[qbopMa.JCrystalReport.EMailCCList [= список_адресатов] Например: 

    '   Передать   сообщение E-mail  пользователям Волков  и Воронков. 
CrystalReportl.EMailCCList   =   "Волков;Воронков" 

    Применяется к MAPI. 
    Имена должны разделяться точкой с запятой. 
    Доступность: разработка, выполнение. 

    EMailMessage 

    Определяет строку, составляющую тело сообщения электронной почты. 
Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.EMailMessage[=coo6u4ewe] Например: 

    CrystalReportl.EMailMessage   =   "Встречаемся   в   18:00   под  часами" 

    Применяется к MAPI. 
    Доступность: разработка, выполнение. 

    EMailSubject 

    Определяет подчиненную строку (тему) сообщения электронной почты. 
Применение в коде Visual Basic в период выполнения: 
[0opMa.]CrystalReport.EMailSubject[= тема] Например: 

    CrystalReportl.EMailSubject = "По поводу предыдущей договоренности" 

    Применяется к MAPI. 
    Доступность: разработка, выполнение. 


    Глава 5. Создание отчетов с помощью Crystal Reports	117 


    EMailToList 
    Определяет список адресатов "То", по которому требуется направить 
сообщение электронной почты. 
    Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.EMailToList [=список_адресатов] Например: 

    CrystalReportl.EMailToList   =   "Воронков"   '   В   списке   "То"   -   
одно  имя 

    Применяется к MAPI. 
    Несколько имен должны разд^л^ьс^точкой_с_^апятой. 
    Доступность: разработка, выполнение. 

    Formulas 

    Определяет для существующей формулы новую строку спецификации. Применение 
в коде Visual Basic в период выполнения: 
[0op/wa.]CrystalReport.Formulas(t/H(3eK'c_Maccuea)[= "имя_формулы= текст_формулы"] 
    В этом свойстве вводится имя и новый текст для каждой формулы, которыми 
требуется заменить существующие спецификации формул отчета. 
    Например, чтобы изменить формулу ©COMMISSION на {file.SALES} M, а вторую 
формулу ©TOTAL — на {file.SALES} + {file.COMMISSION}, нужно ввести следующее: 

    CrystalReportl.Formulas(0) = "COMMISSION {file.SALES} * .1" 
CrystalReportl.Formulas(1) = "TOTAL= {file.SALES} + {file.COMMISSION}" 

    Особенности свойства: 
    •  Formulas — свойство-массив, которое доступно только в период выполнения; 
    • для каждой формулы, которую требуется изменить, нужно вводить отдельную 
строку программного кода; 
    •  первой изменяемой формуле должен быть назначен индекс массива (0), 
второй — индекс массива (1) и т. д.; 
    • новая строка формулы должна отвечать требованиям синтаксиса Crystal Reports; 
    • по завершении выполнения задания печати значение этого свойства 
очищается. При повторной печати программа возвращается к формулам, 
первоначально специфицированным в отчете. 

    Примечание: Пробелы, в ^именах формул, ^--.значащие. По этой причине знак 
равенства должен следовать непосредственно за именем формулы без 
дополнительных пробелов. 

    Примечание: Знак @ при обозначении имени формулы в этом свойстве не используется. 

    Примечание: Для создания новых формул 
сврйствс[^отпу/аз^^рльзовшрь^^нельзя. Его можно использовать 
т6лькб~для'изменения существующих формул.	~" 
    Доступность свойства: период выполнения. 

    GraphData 

    Получает и устанавливает данные, используемые для специфицированной 
диаграммы. Применение в коде Visual Basic в период выполнения: 
    [форма.]Сгуз1а!Рерог1.ОгарМОа1а(ин(Эе/<-с_мэссува)[:::раз<Эел_отчета; _ 
номер_диаграммы; строка; столбец; поле; направление] 


    118 Свойства элемента управления Crystal 

    Параметр	Назначение 

    раздел_отчета	Определяет раздел, в котором требуется изменить диаграмму 
(см. ниже таблицу значений параметра раздел_отчёгпа). 
    номер_диаграммы	Номер диаграммы внутри раздела, которую требуется 
изменить. Диаграммы в разделе нумеруются начиная с нуля, слева направо v затем 
сверху вниз. 
    строка	Номер группы в отчете, используемой для создания строк в диаграмме, 
например GROUP1, GROUP2, GROUPS, . . ., GROUP9 
    столбец	Номер группы в отчете, используемой для создания столбцов в 
диаграмме, например GROUP1, GROUP2, GROUPS, . . ., GROUP9. 
    поле	Поле суммирования, содержащее значения, которые нужно использовать в 
качестве значения каждого элемента диаграммы (столбика, сектора и т.д). Первое 
поле суммирования, добавленное к отчету, получает значение 0, второе — 1 и т. д. 
    направление	Указывает, какие значения используются для создания диаграммы: 
строк,   столбцов   или  оба.   Возможные  значения:   ROWS,   COLS, ROWANDCOL 
или COLANDROW. 
    В следующей таблице приведены возможные значения параметра раздел_отчета: 

    Раздел	Код раздела	Раздел	Код раздела 

    Все разделы	ALL	Group Footer 1	GF1 
    Заголовок отчета	TITLE	Group Footer 2	GF2 
    Page Header	HEADER	Group Footer 3	GF3 
    Group Header 1	GH1	Group Footer 4	GF4 
    Group Header 2	GH2	Group Footer 5	GF5 
    Group Header 3	GH3	Group Footer 6	GF6 
    Group Header 4	GH4	Group Footer 7	GF7 
    Group Header 5	GH5	Group Footer 8	GF8 
    Group Header 6	GH6	Group Footer 9	GF9 
    Group Header 7	GH7	Grand Total	GRNDTTL 
    Group Header 8	GH8	Page Footer	FOOTER 
    Group Header 9	GH9	Резюме отчета	SUMMARY 


    Раздел данных	DETAIL 
    Например: 

    CrystalReportl.GraphData(0)= "DETAIL; 1; GROUP1; GROUP2; 0;COLANDROW" 

    С помощью свойства GraphData в период выполнения можно специфицировать 
изменения в одной или больше диаграммах. Эти изменения затем применяются при 
вызове "Action=1". Значение для GraphData просто определяет последовательный 
номер изменения. Таким образом, строка: 

    CrystalReportl.GraphData (0) = "DETAIL; 3; Groupl; Group2;666; COLANDROW" 

вводится для создания изменений только в одной диаграмме, но строки 

    CrystalReportl.GraphData(0)   =   "HEADER;   3;   Groupl;   Group2;666; COLANDROW" 


    Глава 5.-Создание отчетов с помощью Crystal Reports 119 


    CrystalReportl.GraphData(1)   =   "DETAIL;   3;   Groupl;   Group2;666;   
_ COLANDROW" 
    обусловливают изменения в более чем одной диаграмме. Доступность свойства: 
период выполнения. 

    GraphOptions 

    Получает и устанавливает ряд опций для специфицированной диаграммы. 
Применение в коде Visual Basic в период выполнения: 
    [0opMa.]CrystalReport.GraphOptions(wHde/fc_Maccivea)[= раздел_отчета; _ 
номер_диаграммы; шрифт; направление_столбиков; _надпись_элемента; _ линии_сетки;легенда;тах;тт] 

    Параметр	Описание 

    раздел_отчета	Определяет раздел отчета, в котором требуется изменить диаграмму. 
    номер_диаграммы	Определяет, какую диаграмму в разделе требуется изменить. 
Диаграммы в разделе нумеруются начиная с нуля, слева направо и сверху вниз. 
    шрифт	Определяет стиль шрифта (фактическое имя шрифта, например Arial), 
который требуется использовать для всей диаграммы. 
    направление_столбиков	В гистограмме (столбиковой диаграмме) определяет 
направление столбиков. Возможные значения: Н = горизонтально, V = вертикально, 
X = как есть. 
    надпись_элемента	Определяет, требуется или нет показывать значения данных 
на каждом элементе диаграммы. Возможные значения: Т = да, F = нет, X = .как .есть^. 
    линии_сетки	Определяет, требуется ли показывать линии сетки диаграммы. 
Возможные значения: Т = да, F = нет, X = как есть. 
    легенда	Определяет, требуется ли показывать легенду диаграммы. Возможные 
значения: Т = да, F = нет, X = как есть. 
    max	Определяет максимальное значение, которое требуется отображать в диаграмме. 
    min	Определяет минимальное значение, которое требуется отображать в диаграмме. 
    Например: 

    CrystalReportl.GraphOptions(0) ="FOOTER;0;Arial;H;T;F;X;max;min" 

    (В разделе Page Footer отчета в первой диаграмме устанавливает шрифт 
диаграммы в Arial, устанавливает горизонтальное направление столбиков, 
показывает значения данных на каждом элементе (надпись_элемента = Т) и 
отключает вывод сетки.) 
    С помощью свойства GraphOptions в период выполнения можно специфицировать 
изменения в одной или больше диаграммах. Эти изменения применяются 
последовательно при отработке вызова "Action=1". Значение индекс_массива для 
GraphOptions просто определяет последовательный номер изменения. 
    Доступность свойства: период выполнения. 


    г 120	Свойства элемента управления Crystal 


    GraphText 

    Получает и устанавливает для специфицированной диаграммы различные 
текстовые компоненты. 
    Применение в коде Visual Basic в период выполнения: 

    [0opMa.]CrystalReport.GraphText(uH6e/<pc_Maccuea)[= раздел_отчета; __ 
номер_диаграммы;заголовок; подзаголовок; нижний_колонтитул; ряд; группа; х; у; z] 

    Например, строка: 

    CrystalReportl.GraphText(0)   =   "HEADER;   0;;;;;;новая_надпись_х;   _ 
новая_надпись__у;   новая^надпись^г   " 

    определит надписи по осям х, у и z для первой диаграммы в разделе Page Header. 
    С помощью свойства GraphText в период выполнения можно специфицировать 
изменения в одной или больше диаграмм. Эти изменения применяются 
последовательно при отработке вызова "Action=1". Значение индека_массива для 
GraphOpfiohs просто определяет после-дова^гёЖньГй'номер изменения. Таким 
образом, строка: 
    CrystalReportl.GraphText (0) = "DETAIL; 1; строка заголовка; _ строка 
подзаголовка; строка колонтитула; строка ряда; _ строка группы; строка х; 
строка у; строка z" 
    создает изменения только в одной диаграмме, но строки: 
    CrystalReportl.GraphText (0) = "DETAIL; 1; строка заголовка; _ 
    строка подзаголовка; строка колонтитула; строка ряда; строка группы; 
    строка х; строка у; строка z" 
    CrystalReportl.GraphText (1) = "DETAIL; 1; строка заголовка; _ 
    строка подзаголовка; строка колонтитула; строка ряда; _ 
    строка группы; строка х; строка у; строка z" 
    обуславливают изменения более, чем в одной диаграмме. Доступность 
свойства: период выполнения. 

    GraphType 

    Получает и устанавливает вид диаграммы, используемой в указанном разделе 
специфицированного отчета. 
    Применение в коде Visual Basic в период выполнения: 
    [форма.]Сгуз1а!РероЛ.СгарпТуре(шдекс_массива)[=раздел_отчета;_ 
номер_диаграммы;тип_диаграммы]      ' ~——
    Например: 
    CrystalReportl.GraphType(0)=   "GHl;   0;   PIE" 
    Определяет первую диаграмму (graphNum = 0) в разделе Group Header 1 как круговую. 
    С помощью свойства GraphType в период выполнения можно специфицировать 
изменения в одной или больше диаграммах. Эти изменения применяются 
последовательно при отработке вызова "Action=1". Значение индекс_массива для 
GraphOptions просто определяет последовательный номер изменения. Таким 
образом, строка: 

    CrystalReportl.GraphType(0)    =   "DETAIL;    0;   PIE" создает изменения 
только в одной диаграмме, но строки: 
    CrystalReportl.GraphType(0)    =   "HEADER;    0;   PIE" 


    Глава 5. Создание отчетов с помощью Crystal Reports 121 

    CrystalReportl.GraphType(1) = "DETAIL; 0; PIE" обусловливают изменения 
больше чем в одной диаграмме. Графы в разделе нумеруются начиная с нуля, слева 
направо и сверху вниз. 
    В следующей таблице приводятся константы типов диаграмм для применения в 
программном коде: 
    Тип диаграммы	Константа 

    Плоская гистограмма	SIDEBYSIDE 
    3-D гистограмма	3DSIDE 
    Сложенная плоская гистограмма	STACKEDBAR 
    3-D сложенная гистограмма	3DSTACKED 
    Процентная плоская гистограмма	PERCENTBAR 
    3-D процентная гистограмма	3DPERCENT 
    График	LINE 
    Диаграмма с областями	AREA 
    3-D столбики	3DBARS 
    Круговая	PIE 
    Несколько кругов	MULTIPLEPIE 
    Ранжированные круги	WEIGHTEDPIE 
    Доступность свойства: период выполнения. 
    GroupCondition 

    Определяет, какое изменение значения поля группы вызовет создание новой 
группы. Применение в коде Visual Basic в период выполнения: 

    [$opMa.]CrystalReport.GroupCondition(uH<3eKC)[= группа; поле; условие; _ порядок_сортировки] 

    Например, строка: 

    CrystalReportl.GroupCondition(0)="GROUP1;{Header.Ordernum};ANYCHANGE;A" 

    определяет, что любое изменение в поле Ordernum в Groupl обусловит новое группирование. 

    Параметры свойства: 

    Параметр	Описание 

    группа	Группа, для которой требуется установить условие группирования. 
Первая группа в отчете — GROUP1 , следующая группа — GROUP2 и т. д. 
    поле	Имя поля, при изменении значения которого инициируется новое 
группирование. Имя поля нужно вводить в следующем формате: (таблица. поле] 
    условие	Условие, которое вызывает группирование (см. таблицы ниже). 
    порядок_ сорт ировки	Направление, в котором должны сортироваться группы: А 
= возрастание, D = убывание. 


    122 Свойства элемента управления Crystal 

    В следующей таблице приводятся возможные значения параметра условие: 

    Условие	Код условия 

    Поля типа Date 

    Ежедневно                    /	DAILY 
    Еженедельно	WEEKLY 
    Два раза в месяц	SEMIMONTHLY 
    Ежемесячно	MONTHLY 
    Ежеквартально	QUARTERLY 
    Раз в полгода	SEMIANNUALLY 
    Ежегодно	ANNUALLY 

    Поля типа Boolean 

    При изменении значения на Yes	TOYES 
    При изменении значения на No	TONO 
    При каждом Yes	EVERYYES 
    При каждом No	EVERYNO 
    Следующее будет Yes	NEXTISYES 
    Следующее будет No	NEXTISNO 
    Для всех остальных типов данных 
    Любое изменение	ANYCHANGE 

    Доступность свойства: период выполнения. 

    GmupSelectionFormula 

    Определяет группы, которые нужно использовать при печати отчета. 
Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.GroupSelectionFormula[= "формула_выбора_группы"] 

    Формула выбора группы специфицируется точно так же, как и в окне Edit 
Formula. Например, для ограничения отчёта только группами с промежуточной 
суммой по полю {Header.Amount}, меньшей 10000 (с инициированием группирования 
изменениями в поле {Header.CustNum}), нужно в качестве формулы выбора группы 
ввести следующую строку: 

    CrystalReportl.GroupSelectionFormula  =  Sum   (   {Header.Amount},   _ 
{Header.CustNum}}   <   10000 

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

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

    Доступность свойства: разработка, выполнение. 

    GrgupSortFields 

    Определяет поле (поля) группы, которые должны использоваться, для 
сортировки данных при печати отчета. 

    Глава 5. Создание отчетов с помощью Crystal Reports	123 

    Применение в коде Visual Basic в период выполнения: 
[0opMa.]CrystalReport.GroupSortFields(iyHde/<c_Maccuea)[= "{+|-}лоле"] 

    Например, допустим, что данные в группах разбиты по городам и Crystal 
Reports должен	I подсчитать количества_клиеытав_,в,)?аждой_группе. Чтобы 
вначале напечатать группу с * самым большим количеством клиентов, затем 
rpyflny со следующим количеством и т. д. (в QJ порядке убывания], можно ввести 
примерно следующую строку: 

    CrystalReportl.GroupSortFields(0)   =   "-Count({Customer.Customer},   _ 
{Customer. Sity})"	*"       "~ 

    Особенности свойства: 
    • GroupSortFields — свойство-массив, доступное только в период выполнения; 
    • для специфицирования каждого поля сортировки группы следует использовать 
отдельную строку программного кода; 
    • вводить поля сортировки групп нужно в том порядке, в котором требуется 
сортировать отчет. Например, если требуется, чтобы отчет был отсортирован 
сначала по полю А , а затем по полю В, соответственно, нужно создать две 
строки программного кода; 
    • первому специфицируемому полю сортировки группы должен быть назначен 
шдекс^мас-шва 0, второму полю — 1 и т. д. Ряд значений индексов должен быть непрерывным; 
    • значения индексов должны быть указаны в строке кода непосредственно 
после имени свойства, то есть 

    CrystalReportl.GroupSortFields (O) =.... 

    • если имеются поля сортировки, специфицированные для отчета во время 
разработки, они будут заменены полями, введенными в коде в период выполнения; 
    • если свойство GroupSortFields не используется, программа использует 
инструкции сортировки, специфицированные в файле отчета; 
    • если требуется очистить поля сортировки группы в отчете, следует 
использовать пустую строку:
   
   CrystalReportl.GroupSortFields    

    • значение свойства, установленное в период выполнения, после выполнения 
задания печатжрбрасывается. При повторной печати программа возвращается к 
полям сортиров-шГгруппы, первоначально специфицированным в файле отчета. 
    Примечание: Имени поля сортировки группы должен предшествовать указатель 
направления сортировки (+ или -) без пробелов. 
    Примечание: Чтобы найти правильный синтаксис для любой группы в отчете, 
используя Crystal Reports для Visual Basic, нужнЪГвыбрать команду меню Insert 
Formula field, ввести имя формулы в окно диалога Insert Formula, когда он 
появляется, и в списке Fields в окне Formula Edit дважды щелкнуть поле группы, 
представляющее интерес. 
    Crystal Reports вводит имя поля группы в окно Formula text. Имя и 
синтаксис из этого поля можно использовать при построении строки для поля 
сортировки группы. 

    Доступность свойства: период выполнения. 

    LastErrorNumber 

    Возвращает код последней ошибки, возникшей во время выполнения программы. 
Применение в коде Visual Basic в период выполнения: [qbopMa.JCrystalReport. LastErrorNumber 


    124	Свойства элемента управления Crystal 

    Например: 

    ' Если возвращается ошибка, перейти к метке Error Handler 
    ErrorHandler: 
    MsgBox CrystalReportl.LastErrorNumber 

    Если возвращается ошибка, этот программный код вызывает окно сообщения, 
которое выводит на экран номер ошибки. 

    Примечание: Значение LastErrorNumber может быть получено после того, как 
отработает вызов свойства Action. После печати отчета можно обратиться к этому 
свойству за номером ошибки (если таковой имеется). Если ошибки при печати не 
было, LastErrorNumber = 0. 


    Доступность свойства: чтение и запись в период выполнения. 

    LastErrorString 

    Во время выполнения программы возвращает описание последней ошибки. 
Применение в коде Visual Basic в период выполнения: [qbopwaJCrystalReport. 
LastErrorString Например: 

    '   Если  возвращается   ошибка,   перейти  к  процедуре  Error  Handler 
    ErrorHandler: 
    MsgBox  CrystalReportl.LastErrorString 
    Доступность свойства: период выполнения. 
    MarginBottom, MarginLeft, MarginRight, Margin Top 
    Устанавливают поля для специфицированного отчета: 
    MarginBottom — устанавливает нижнее поле отчета. 
    MarginLeft — устанавливает левое поле отчета. 
    MarginRight — устанавливает правое поле отчета. 
    MarginTop — устанавливает верхнее поле отчета. Применение в коде Visual 
Basic в период выполнения: [форма. ]CrystalReport.MarginBottom[=3Ha4eHue] Например: 
    '   Установить   нижнее   поле  для   отчета  равным   1/2   дюйма \f      
  ' (1   дюйм  =   1440   твипов) 
    CrystalReportl.MarginBottom  =   720 


    Доступность свойств: разработка, выполнение. 

    Password 

    Вводит пароль, требуемый для использования таблицы базы данных Access 
(файл.тсЛэ) ограниченного доступа. 
    Применение в коде Visual Basic в период выполнения: 

[qbopMa.]CrystalReport.Password[= пароль] 

Например: 

    CrystalReportl.Password  =   "PPP4" Доступность свойства: разработка, выполнение. 


    Глава 5. Создание отчетов с помощью Crystal Reports 125 

    PrintDay 

    Устанавливает компонент дня даты печати (если печатается отчет с датой, 
отличной от фактической даты). 
    Применение в коде Visual Basic в период выполнения: 

    [$opMa.]CrystalReport.PrintDay[=deHb] 

    Например: 

    CrystalReportl.PrintDay  =   23 

    Особенности свойства: свойства PrintYear, PrintMonth и PrintDay должны 
использоваться совместно. То есть, чтобы изменить дату печати, необходимо 
изменить значения всех трех свойств. Если этого не сделать, используется 
датаГпечатй, сохраненная с отчетом. Это может быть также текущая дата, если с 
отчетом не сохранена определенная дата. 

    Доступность: разработка, выполнение. 

    PrinterCollation 

    Если специфицируется печать более одной копии (через свойство 
PrinterCopies), свойство PrinterCollation определяет, буд^т^!^ти_копии объединены. 
    Применение в коде Visual Basic в период выполнения: 

    [qbopMa.]CrystalReport.PrinterCollation[=KO<3] 

    Например: 

    CrystalReportl.PrinterCollation  =   1   '   Объединить   копии '   
специфицированного   отчета 

    Значение параметра код может быть назначено из следующей таблицы: 

    Q 
    Действие с копиями	Значение параметра код	Константа 
    Не объединять	0	crptUncollated 
    Объединять	1	crptCollated 
    Умолчательное объединение	2	crptDefault 
    Доступность: разработка, выполнение. 
    PrinterCopies	и*--4u f v' 

    Устанавливает количество копий отчета, которое требуется напечатать. 
Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.PrinterCopies[=4i/cno_KO™u] Например: 

    CrystalReportl.PrinterCopies   =   3   '   Программа  должна  печатать 
    '   три   (3)   копии  отчета 

    Параметр число_копий не должен быть нулем или отрицательным значением. 
Доступность: разработка, выполнение. 

    PrinterDriver, PrinterName, PrinterPort 

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


    126	'            Свойства элемента управления Crystal 

    Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.PrinterDriver[= драйвер_принтера] 
[qbopMa.]CrystalReport.PrinterName[= имя_принтера]	с 
[qbopMa.]CrystalReport.PrinterPort[= порт_принтера]                            

    Например:

    CrystalReportl.PrinterName= "Epson LQ-850" ' Определяет принтер 
    ' Epson LQ-850	i 
    CrystalReportl.PrinterPort= "LPT1" ' Устанавливает для принтера 
    ' порт LPT1 

    Свойства PrinterDriver, PrinterName и PrinterPort работают совместно. Для 
определения нового принтера должны быть установлены все три свойства. Если все 
три свойства не "установлены, будет Использоваться принтер, определенный в 
отчете. Если в отчете принтер не был специфицирован, будет использоваться 
умолчательный принтер системы. 

    Доступность свойств: разработка, выполнение. 

    PrinterStartPage 

    Устанавливает страницу, с которой нужно начать печатать отчет. Применение 
в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.PrinterStartPage[= StartPage] Например: 

    CrystalReportl.PrinterStartPage = 7 ' Начать печатать отчет 
    ' с 7-й страницы 

    Если значение StartPage меньше или равно 0, это значение игнорируется и 
печать начинается со страницы 1. 

    Доступность: разработка, выполнение. 

    PrinterStopPage 

    Устанавливает последнюю страницу, которая должна быть напечатана. 
Применение в коде Visual Basic в период выполнения: 
[cpopMa.]CrystalReport.PrinterStopPage[=StopPage] Например: 

    '   Печать  должна  закончиться  на  странице   12  отчета 
CrystalReportljPrinterStopPage  =  12 

    Чтобы указать, что печать нужно продолжить до последней страницы, для 
свойства PrinterStopPage можно ввести значение -1. 

    Доступность: разработка, выполнение. 

    PrintFileCharSepQuote 

    Получает и устанавливает символ кавычки, используемый для заключения 
алфавитно-цифровых данных поля при печати в файпс использованием формата 
текста с разделителями. 
    Применение в коде Visual Basic в период выполнения: 


    Глава 5. Создание отчетов с помощью Crystal Reports	127 


    [gbopMa.]CrystalReport.PrintFileCharSepQuote[=Kaeb/4Ka] 

    Например: 

    CrystalReportl.PrintFileCharSepQuote   =   "   '    " 

    Особенности свойства: 
    • даМёйяется, только когда PrintFileType = 5 — формах"текст. с^^ 
разделителями"; t применяется, только шгда свойство Destination = 2 — файл или 
3 — EMail; 
    • если для свойства PrintFileCharSepQuote указана строка, содержащая более 
одного символа, элемент управления использует только первый символ этой строки. 

    Доступность: разработка, выполнение. 

    PrintFileCharSepSeparator 

    Устанавливает символ (символы), которые требуется использовать для 
разделения полей при печати в файл с использованием формата текста с разделителями. 
    Применение в коде Visual Basic в период выполнения: 

    [qbopMa.]CrystalReport.PrintFileCharSepSeparator[=pa3dem/m^b] 

    Например: 

    '   Для  разделения   значений  полей  должен  использоваться   символ   " 
  @   " CrystalReportl.PrintFileCharSepSeparator=   "@" 

    Особенности свойства: 
    •  применяется, только когда PrintFileType = 5 — формат "текст с разделителями"; 
    •  применяется, только когда свойство Destination = 2 — файл или 3 — EMail. 

    Доступность свойства: разработка, выполнение. 

    PrintFileName 

    Определяет имя файла, в который должен быть направлен вывод отчета. 
Применение в коде Visual Basic в период выполнения: 
[форма.]CrystalReport.PrintFileName[= имя_файла] Например: 

    '   Вывести  отчет   в   файл   "cust_rpt.txt"   в   каталоге   c:\crw 
CrystalReportl.PrintFileName   = "с:\crw\cust_rpt.txt" 

    Особенности свойства: 
    • дважды щелкнув это свойство в окне свойств, можно затем нажать кнопку с 
многоточием в окне Property Pages для этого свойства и в окне диалога Choose 
Output File выбрать имя и путь файла, в который программа должна напечатать отчет; 
    • значение для этого свойства можно установить, только когда выполняется 
печать в файл (если значение свойства Destination = 2 — файл). 

    Примечание: Если требуется специфицировать PrintFileName в период 
выполнения, имя файла необходимо заключать в кавычки. 


    Доступность свойства: разработка, выполнение. 

    PrintFileType 

    Определяет тип файла, используемого при печати отчета в файл. Применение в 
коде Visual Basic в период выполнения: 


    128 Свойства элемента управления Crystal 


    [0opMa.]CrystalReport.PrintFileType[= тип_файла] 

    Например: 

    CrystalReportl.PrintFileType  =   1   '   Формат  разделения   табуляторами 

    При печати в файл можно выбрать один из следующих типов файла (если 
значение свойства Destination = 2 — файл): 

    Тип файла	Описание	Константа 

    0 — Запись	Стиль записи (столбцы значений). Не используется никаких 
разделителей. Каждая запись имеет фиксированную длину.	crptRecord 
    1 — Разделение табуляторами	Представляет данные в табличной форме. 
Алфавитно-цифровые данные поля заключаются в кавычки, и поля разделяются табуляторами.	crptTabSep 
    2 — Текст	Данные сохраняются в текстовом формате ASCII со всеми 
значениями, отделяемыми пробелами. Текст этого  стиля  выглядит,   как  
напечатанная страница.	crptText 
    3 — DIF	Сохранение    данных    в    формате    DIF    (data interchange 
format — формат обмена данных). Этот формат часто используется для передачи 
данных между электронными таблицами разных форматов.	crptDIF 
    4 — CSV (Comma separated values)	Значения отделяются запятыми. 
Алфавитно-цифровые данные поля заключаются в кавычки, и поля разделяются запятыми.	crptCSV 
    5 — Разделение символами	Сохранение значений данных в текстовом формате 
ASCII с разделением символами. Все значения отделяются символом или символами, 
специфицированными свойством PrintFileCharSepSeparator.	crptCharSep 
    6 — Разделение табуляторами	Сохранение значений данных в текстовом формате 
ASCII с разделением табуляторами.	crptTabSepText 
    7 — Формат Crystal Reports RPT	Используется     стандартный     формат     
Crystal Reports. Наиболее часто применяется для передачи отчета другому 
пользователю через EMail.	crptCrystal 
    8 — Excel 2.1 XLS	Отчет экспортируется в формате рабочего листа Microsoft 
Excel 2.1.	crptExce!21 
    9 — Excel 3.0 XLS	Отчет экспортируется в формате рабочего листа Microsoft 
Excel 3.0.	crptExcelSO 
    10 — Excel 4.0 XLS	Отчет экспортируется в формате рабочего листа Microsoft 
Excel 4.0.	crptExceWO 
    11 —Lotus 1-2-3 WK1	Отчет экспортируется в формате рабочего листа Lotus 1 
-2-3 WK1.	crpt123wk1 
    12 — Lotus 1-2-3 WK3	Отчет экспортируется в формате рабочего листа Lotus 1 
-2-3 WK3.	crpt123wk3 


    Глава 5. Создание отчетов с помощью Crystal Reports 129 

    Тип файла	Описание	Константа 

    13 — Lotus 1-2-3 WKS	Отчет экспортируется в формате рабочего листа Lotus 
1-2-3 WKS.	crpt123wks 
    15 — RTF	Данные сохраняются в формате RTF (Rich Text Format).	crptRTF 
    1 7 — Word для Windows	Данные   сохраняются   в   формате   Word   для Windows.	crptWinWord 
    19 — Excel 5.0 XLS L	Отчет экспортируется в формате рабочего листа 
Microsoft Excel 5.0.	crptExcelSO 
    20 — HTML 3.0	Отчет экспортируется в формате HTML.	crptHTMLSO 
    21 — Internet Explorer	Отчет экспортируется в формате Internet Explorer.	crptlntExpl 
    22 — Netscape	Отчет экспортируется в формате Netscape.	crptNetscape 

    Доступность свойства: разработка, выполнение. 

    PrintFileUseRptDateFmt 

    При печати в файл указывает, должна ли программа сохранитьдатьмзтом же 
формате дат, который используется в отчете, или вместо этого оптимизировать 
даты с учетом выбранного формата файла.	" «—,•«,„.,„.,..—.-..^™— 
    Применение в коде Visual Basic в период выполнения: [форма. 
]CrystalReport.PrintFileUseRptDateFmt[= TrueFalse] Например: 
    '   Программа  должна  печатать   даты  в   том же   формате, '   который  
используется  в   отчете. CrystalReportl.PrintFileUseRptDateFmt   =   I 
    Особенности свойства: 
    •  применяется, только когда свойство PrintFileType = 0,1,3,4 или 5; 
    •  применяется, только когда свойство Destination = 2 — файл или 3 — EMail. 

    Доступность: разработка, выполнение. 

    PrintFileUseRptNumberFmt 

    При печати в файл указывает, должна ли программа печатать числа в том же 
формате (десятичные позиции, отрицательные значения и т. д.), который 
использовался в отчете, или вместо этого оптимизировать числа с учетом 
выбранного формата файла. 
    Применение в коде Visual Basic в период выполнения: 

[qbopMa.]CrystalReport.PrintFileUseRptNumberFmt[=7rtyeFa/se] Например:	'   7 

    '   Программа  должна  печатать  числа  в   том же  формате, '   какой  
используется   в   отчете CrystalReportl.PrintFileUseRptNumberFmt   =   1 
    Особенности свойства: 
    •  применяется, только когда свойство PrintFileType = 0, 1, 3, 4 или 5; 
    •  применяется, только когда свойство Destination = 2 — файл или 3 — EMail. 
    Доступность: разработка, выполнение. 

    5 Зак.   136 


    130	Свойства элемента управления Crystal 

    PrintMonth, PrintYear 

    Устанавливают, соответственно, компонент месяца и года даты печати (если 
он отличается от фактической даты печати отчета). 
    Применение в коде Visual Basic в период выполнения: 
[0op/wa.]CrystalReport.PrintMonth[= месяц] 
[qbopMa.]CrystalReport.PrintYear[=aod] Например: 

    CrystalReportl.PrintMonth=   7   'Устанавливает  июль   как  месяц  печати 
    CrystalReportl.PrintYear   =   1997   '   Устанавливает   компонент 

    '   года  даты  печати равным  1997 
    Особенности свойств: 
    •   значение месяца вводится в интервале от 1 до 12 (январь = 1, декабрь = 12); 
    •   год вводится как четырехзначное число; 
    •  свойства PrintYear, PrintMonth и PrintDay функционируют совместно. 
Чтобы изменить дату печати, необходимо изменить значения всех трех свойств. 
Если этого не сделать будет использована дата печати, сохраненная с отчетом. 
Если определенная дата не сохранена с отчетом, будет использована текущая дата. 

    Доступность: разработка, выполнение. 

    RecordsPrinted 

    Определяет количество фактически напечатанных записей. Применение в коде 
Visual Basic в период выполнения: [форма. ]CrystalReport. RecordsPrinted Например: 
    ЧЗернуть   количеству?   напечатанных   записей  и  сохранить   его   в   
переменнс:'-Printed=   CrystalReportl.RecordsPrinted 
    Если печатаемый отчет содержит одну или больше формул выбора группы, 
значение, возвращенное свойством RecordsPrinted, может быть значительно меньше 
значения, возвращенного 
    свойством RecordsSelected. Иначе это значение должно равняться RecordsSelected. 

    Доступность свойства: период выполнения. 

    RecordsRead 

    Определяет количество фактически обработанных записей. Применение в коде 
Visual Basic в период выполнения: [qbopMa.JCrystalReport.RecordsRead Например: 
    '   Получить   количество   прочитанных   записей  и  сохранить   его  в   
переменной Readl   =  CrystalReportl.RecordsRead 
    Если при печати отчета Crystal Reports Engine генерирует запрос SQL, чтобы 
получить данные из базы данных SQL, RecordsRead вернет только количество 
записей, полученных из запроса. Это значение может быть значительно меньше, 
чем количество записей, фактически сохраняемых в таблице базы данных. 

    Доступность свойства: период выполнения. 


    Глава 5. Создание отчетов с помощью Crystal Reports	131 RecordsSelected 

    Определяет количество записей, отобранных для^включения_в отчет из общего 
количества прочитанных записей. 
    Применение в коде Visual Basic в период выполнения: 

    qbopMa.JCrystalReport.RecordsSelected 

    Например: 

    Получить   количество   выбранных   записей  и  сохранить   его   в   
переменной elected  =  CrystalReportl.RecordsSelected 
    <ecordsSelected возвращает значение между нулем и значением, возвращенным 
свойством RecordsRead.	"" ••-••-•• • 
    Значение, возвращенное свойством RecordsSelected, зависит от установленных 
в отчете опросов и формул выбора. 

    Доступность свойства: период выполнения. 

    ReportDisplayPage 

    Указывает, которая страница многостраничного отчета в данный момент 
выводится на экран в окне Preview. 
    Применение в коде Visual Basic в период выполнения: [qbopMa.]CrystalReport.ReportDisplayPage 
    Например: 
    Получить   номер  выводимой  страницы и  сохранить   его   в  переменной 

-suit  =T"rystalReportl•DisplayPage 

    Доступность свойства: период выполнения. 

    ReportFileName 

    Определяет отчет, который должен быть напечатан. Применение в коде Visual 
Basic в период выполнения: [qbopMa.]CrystalReport.ReportFileName[= имя_отчета] Например: 

    CrystalReportl.ReportFileName   =   "c:\crw\company.rpt" 

    Дважды щелкнув это свойство в окне свойств, можно затем нажать кнопку с 
многоточием в окне Property Pages для этого свойства и в окне диалога Choose 
Report выбрать имя и путь отчета, который программа должна напечатать в ответ 
на пользовательское событие. 

    Примечание: Если требуется специфицировать ReportFileName в период 
выполнения, имя отчета в программном коде должно быть заключено в кавычки. 

    Доступность свойства: разработка, выполнение. 

    ReportLatestPage 

    Определяет последнюю страницу^ напечатанную в специфицированном отчете. 
Применение в коде Visual Basic в период выполнения: [форма. ]CrystalReport. ReportLatestPage 


    132	Свойства элемента управления Crystal 

    Например: 
    ' Получить номер последней напечатанной страницы 
    ' и сохранить ее в переменной 

    Latest = CrystalReportl.ReportLatestPage 

    Доступность свойства: период выполнения. 

    ReportStartPage 

    Определяет первую страницу, напечатанную в специфицированном отчете. 
Применение в коде Visual Basic в период выполнения: [0op/wa.]CrystalReport. 
ReportStartPage Например: 

    '   Получить   номер  первой  напечатанной  страницы 
    '   и~сохранить   его   в   переменной 
    StartPage   =  CrystalReportl.ReportStartPage 

    Доступность свойства: период выполнения. 

    SectionFont 

    Устанавливает шрифт для одного или больше разделов специфицированного 
отчета. Применение в коде Visual Basic в период выполнения: 

    [0opMa.]CrystalReport.SectionFont(uH<3eKc)[= код_раздела; _шрифт; 
размер_шрифта: курсив; полужирный; подчеркивание; зачеркивание] 

    Например: 
    '   Установить   для  раздела   нижнего   колонтитула '   шрифт   в   12   
пунктов,   Arial,   зачеркнутый CrystalReportl.SectionFont(0)="FOOTER;Arial;12;N;N;N;Y" 
    С помощью свойства SectionFont в период выполнения можно специфицировать 
изменения в одном или больше разделах отчета. Эти изменения затем 
последовательно применяются при вызовах "Action=1". 
    Значение индекс для свойства SectionFont простропределяет 
последрвательнь1й_^юмер изменения. Таким образом, строка:	~ " ~ 

    CrystalReportl.SectionFont(0)=   "DETAIL;Arial;12;N;N;N;Y" вносит 
изменения только в раздел DETAIL, но строки: 
    CrystalReportl.SectionMinHeight(0)   =   "HEADER;Arial;12;N;N;N;Y" 
CrystalReportl.SectionMinHeight(1)   =   "DETAIL;Arial;12;N;N;N;Y" 
обусловливают изменения в более чем одном разделе. 

    SectionLineHeight 

    Определяет высоту строки отчета в твипах. Твип — 1/1440 дюйма; в точке — 
20 твипов. Применение в коде Visual Basic в период выполнения: 

    [форма.]CrystalReport.SectionLineHeight(uH<3eKC)[= код_раздела; _строка; 
высота; _ подъем] 


    Глава 5. Создание отчетов с помощью Crystal Reports 133 

    Параметр 
    код_раздела 
    строка 
    высота 
    подъем 

    Описание 

    Определяет программный код раздела (разделов) отчета, для которых 
требуется установить новую высоту строки. 
    Определяет номер строки (строк), для которых требуется установить высоту. 
Строки в разделахТнумеруются начиная с 0. 
    Определяет высоту строки в твипах. Твип — 1/1440 дюйма; в точке — 20 твипов. 
    Определяет подъем шрифта в твипах. Подъем — расстояние от верхней границы 
распределенного пространства строки (высота строки) до базовой линии шрифта. 
Параметр подъем используется для специфицирования позициимбазовой линии. Если 
подъем установить в 0, программа помещает базовую лиТ?иТЬ~наве"рху 
пространства строки; если для подъем установить то же значение, что и для 
высота, программа устанавливает базовую линию внизу пространства строки. Для 
любой другой базовой линии побьем специфицируется в твипах. 

    Например: 
    '   Установить   высоту  второй   строки  в  разделе   нулевого '   
заголовка   группы  в   500   твипов   с  подъемом   300   твипов 
CrystalReportl . ЗесЛоТ^ьГпён'еГдНГ('0')'"=""GHO;   I;   500;   300" 
    С помощью свойства SectionLineHeight в период выполнения можно 
специфицировать изменения в одном или больше разделах отчета. Эти изменения 
применяются последовательно при вызове "Action=1". Значение индекс для 
свойства SectionLineHeight определяет последовательный номер изменения.	^^    

    Доступность свойства: период выполнения.

    SectionMinHeight 

    Устанавливает минимальную высоту специфицированного раздела отчета. 
Применение в коде Visual Basic в период выполнения: 
[форма.]Сгуз\а№ерог1.5ес1\опМ\г\Нё\дЩиндекс)[=код_раздела;т1п_высота] Например: 

    '   Установить   минимальную  высоту  для   всех  разделов  равной   500   
твипов CrystalReportl.SectionMinHeight(0)   =   "ALL;   500" 

    С помощью свойства SectionMinHeight в период выполнения можно 
специфицировать изменения в одном или больше разделах отчета. Эти изменения 
применяютря доследовательно при вызове "Action=1". Значение индекс для 
свойства SectionMinHeight определяет последовательный номер изменения. 

    Доступность свойства: период выполнения. 

    SelectionFormula 

    Определяет записи, которые нужно использовать при печати отчета. 
Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.SelectionFormula[= формула] 
    Формула выбора вводится в свойство точно так же, как в окно Edit Formula в 
Crystal Reports. Например, чтобы включить в отчет только те записи, которые в 
поле {file.Qty} имеют 


    134	Свойства элемента управления Crystal 

    значение, большее 5, для параметра формула нужно ввести "{File.Qty} > 5", 
то есть CrystalReportl.SelectionFormula = "{File.Qty} > 5" 
    Особенности свойства: 
    •   строку формулы выбора следует заключать в двойные кавычки; 
    •   если формула выбора включает внутренние кавычки, например: {File.Sity} 
= "Иваново", то нужно все внутренние двойные кавычки изменить на одинарные 
кавычки и затем заключить всю формулу выбора в двойные кавычки: "{File.Sity} = 'Иваново'" 
    •   если формула выбора создана для отчета во время разработки, то любая 
формула которая вводится в свойство SelectionFormula, будет конкатенирована к 
этой формуле выбора. Таким образом, записи будут отбираться с учетом 
комбинации двух формул выбора. 

    Доступность свойства: разработка, выполнение. 

    SessionHandle

    Устанавливает дескриптор сеанса пользователя, когда для использования в 
отчете с помощью свойств UserName и Password открывается файл .mdb. 
    Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.SessionHandle[= дескриптор] 
    Если в приложении Visual Basic уже открыт сеанс Jet, с помощью свойства 
SessionHandle можно установить этот сеанс в качестве текущего. Иначе нужно 
использовать свойства Password и UserName для установления нового сеанса Jet. 
    Например: 

    CrystalReportl.SessionHandle   =  CurrentSessionHandle 

    Здесь текущим устанавливается дескриптор сеанса, возвращенный где-либо в 
другом месте в приложении и сохраненный в переменной CurrentSessionHandle. 

    Доступность свойства: период выполнения. 

    SortFields 

    Определяет поле (поля), которые должны использоваться для сортировки 
данных при печати отчета. 
    Применение в коде Visual Basic в период выполнения: 
[0opMa.]CrystalReport.SortFields((VHdeKC_Macctyea)[= "{+|-}поле"] 
    Например, чтобы отсортировать в отчете данные из базы данных заказов 
сначала в алфавитном порядке по клиентам, а затем по дате заказа, можно ввести 
такие строки кода: 

    CrystalReportl.SortFields(0)   =   "+{0rders.Customer}" 
CrystalReportl.SortFields(1)   =   "+{0rders.Orderdate}" 

    Особенности свойства: 
    •   SortFields — свойство-массив, доступное только в период выполнения; 
    •   для специфицирования каждого поля сортировки нужно использовать 
отдельную строку кода; 
    •   поля сортировки нужно вводить в том порядке, в котором требуется 
отсортировать отчет; 
    •   первому^полю сортировки должен быть назначен индекс массива 0, второму 
полю — 1 и т. д; 
    •   значения ряда индексов массива должны быть непрерывны; пропуски не 
допускаются (0,1,3 = неправильно); 


    Глава 5. Создание отчетов с помощью Crystal Reports	135 

    • если во время разработки для отчета уже были специфицированы поля 
сортировки, поля, которые вводятся в свойство SortFields, заменят ранее 
назначенные поля; 
    •  если это свойство не используется, программа использует инструкции 
сортировки, специфицированные в файле отчета; 
    • для очистки поля сортировки в отчете можно использовать пустую строку 
(CrystalReportl .SortFields (0) = ""); 
    •  имена полей следует заключать в фигурные скобки; 
    •  полями сортировки могут быть поля базы данных или поля формулы. Если 
сортировка выполняется по полю формулы, перед именем формулы используется знак 
@, то есть @имя_формулы. 

    Доступность свойства: период выполнения. 

    SQL Query 

    Устанавливает запрос SQL, используемый для специфицированного отчета. 
Применение в коде Visual Basic в период выполнения: 
!^opMa.]CrystalReport.SQLQuery[=3anpoc_SQL] Например: 

    CrystalReportl.SQLQuery  =   "SELECT   authors.au_id, 
    authors.au_lname,   authors.au_fname 
    FROM pubs2   authors 
    WHERE   authors . au__lname   >   'Воронков'" 

    Здесь выполняется запрос SQL базы данных, в котором возвращаются только 
записи, содержащие фамилии авторов после фамилии 'Воронков', в алфавитном 
порядке фамилий.        ' ,о 
    Изменять можно только разделы WHERE и FROM запроса SQL. Хотя свойство 
требует ввода всего запроса SQL, раздел SELECT не должен отличаться от 
оригинального запроса. 

    Доступность свойства: разработка, выполнение. 

    Status 

    Определяет статус печати специфицированного отчета. Применение в коде 
Visual Basic в период выполнения: [qbopMa.]CrystalReport.Status Например: 
    '   Получить   статус  печати  и   сохранить   его   в   переменной 
rptStatus   =   CrystalReportl.Status 
    Свойство Status может вернуть одно из следующих значений: 
    •	0 — отчет не был напечатан или печать не закончена; 
    •	3 — печать отчета завершена; 
    •	5 — печать отчета была отменена пользователем. 

    Доступность свойства: период выполнения. 

    StoredProcParam 

    При использовании отчета, базирующегося на хранимой процедуре SQL, 
возвращает и устанавливает параметры хранимой процедуры. 
    Применение в коде Visual Basic в период выполнения: 
№op/Ma.]CrystalReport.StoredProcParam(uHde/fc_napaMempa)[= новый_параметр] 


    136 Свойства элемента управления Crystn 

    Например: 
    '   Установить   для   первого   параметра  хранимой  процедуры '   дату   
14   июня   1996   года CrystalReportl.StoredProcParam(O)   =   "06/14/1996" 
    Это свойство устанавливает значение специфицированного параметра в таблице 
базы даннык SQL, которая базируется на хранимой процедуре. Значение параметра, 
который требуете! установить,_пер_едается как строка, даже если для параметра 
ожидается другой тип данного Например, при передачёГцелого значения 396 
используется строковый параметр "396". Прео_б-разованием значения в 
целочисленный формат управляептррцессор Crystal Reports Engine. 

    Доступность свойства: только период выполнения. 

    UserName 

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

    [0opMa.]CrystalReport.UserName[= имя] 

    Например: 

    CrystalReportl.UserName   =   "Волков" 
    Особенности свойства: имя должно быть заключено в кавычки. 
    Доступность свойства: период выполнения. 
    WindowBorderStyle 

    Определяет тип окантовки для окна печати. Применение в коде Visual Basic в 
период выполнения: [qbopMa.]CrystalReport.WindowBorderStyle[= стиль_окантовки] Например: 
    '   Установить   масштабируемый  стиль   окантовки   (Стиль   #2) 
CrystalReportl.WindowBorderStyle   =   2 
    Для окна печати может быть установлен один из следующих стилей окантовки: 

    Стиль	Описание	Константа 

    0	Нет (создает окно без окантовки).	CrptNoBorder 
    1	Fixed Single (создает окно фиксированного размера с одинарной 
окантовкой).	crptFixedSingle    ' 
    2	Масштабируемое окно (создает окно, размер которого может изменяться пользователем).	crptSizeable 
    3	Fixed  Double (создает окно фиксированного размера с двойной окантовкой).	crptFixedDouble 

    Доступность свойства: разработка, выполнение. 

    WindowControlBox 

    Определяет, должно ли окно печати иметь в верхнем левом углу управляющее 
(системное) меню. 
    Применение в коде Visual Basic в период выполнения: 


    Глава 5. Создание отчетов с помощью Crystal Reports	137 

    [<JtopMa.]CrystalReport.WindowControlBox[= {True\False}] Например: 
    CrystalReportl.WindowControlBox  =  True   '   Системное  меню  есть 

Особенности свойства: 
    • выбрать True, если требуется, чтобы окно содержало управляющее меню. 
Иначе — False; 
    • значения свойства име^т^смыслт только если печать отчета направляется в 
окно (свойство Destination = 0).	"               " 

    Доступность свойства: разработка, выполнение. 

    WindowControls 

    Определяет, должно ли окно Preview при печати отчета иметь элементы 
управления печати. Применение в коде Visual Basic в период выполнения: 
[qbop/wa.]CrystalReport.WindowControls[=To/e|Fa/se] Например: 
    '   Элементы управления  печати  в   окне   Preview  должны  быть 
CrystalReportl.WindowControls   =   1 

    Доступность: разработка, выполнение. 

    WindowHeight 

    Устанавливает высоту окна печати, когда вывод отчета направлен в окно. 
Применение в коде Visual Basic в период выполнения: 
[qbop/wa.]CrystalReport.WindowHeight[= высота] Например: 
    '   Установить   высоту  окна   печати  равной   300   пикселей 
CrystalReportl.WindowHeight   =   300 
    Особенности свойства: значение свойства имеет смысл, только если печать 
направляется в окно (если свойство Destination = 0). 

    Доступность свойства: разработка, выполнение. 

    Window/Left 

    Устанавливает расстояние в пикселях от левого края родительского окна до 
окна печати. Если окно печати — окно верхнего уровня, то расстояние измеряется 
от левого края экрана. 
    Применение в коде Visual Basic в период выполнения: 

[0opMa.]CrystalReport.WindowLeft[= расстояние] Например: 
    ' Установить расстояние левого края окна печати в 100 пикселей ' от левого 
края экрана CrystalReportl.WindowLeft = 100 

    Особенности свойства: значение свойства имеет смысл, только если печать 
направляется в окно (если свойство Destination = 0). 

    Доступность свойства: разработка, выполнение. 


    138 Свойства элемента управления Crystal 


    WindowMaxButton, WindowMinButton 

    Определяют, соответственно, должно ли окно печати при печати отчета иметь 
кнопв Maximize и Minimize. 
    Применение в коде Visual Basic в период выполнения: 
[форма.JCrystalReport.WindowMaxButton^ {True\False}] 
[qbopMa.]CrystalReport.WindowMinButton[= {True\False}] Например: 

    CrystalReportl.WindowMaxButton  =   False   '   Кнопки  Maximize 
    '   не   должно  быть 
    CrystalReportl.WindowMinButton   =  True   '   Окно  должно  иметь 
    '   кнопку  Minimize 

    Особенности свойств: значение свойств WindowMaxButton и WindowMinButton 
имеет смьн только если печать направляется в окно (если свойство Destination = 0). 

    Доступность свойств: разработка, выполнение. 

    WindowParentHandle 

    Определяет дескриптор родительского окна, если окно печати должно быть 
потомке другого окна. 
    Применение в коде Visual Basic в период выполнения: 
[0opMa.]CrystalReport.WindowParentHandle[= дескриптор] Например: 

    CrystalReportl.   WindowParentHandle  =   Forml.hWnd 

    Здесь для свойства WindowParentHandle устанавливается дескриптор Forml. 
Этим опред ляется, что окно печати должно быть потомком формы Forml. 

    Доступность свойства: период выполнения. 

    WindowState 

    Устанавливает состояние окна Preview: нормальное, минимизированное или 
максимизири ванное, когда отчет выводится в окно Preview. 
    Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.WindowState[= состояние] Например: 
    '   При  печати  отчета  — максимизировать   окно   Preview 
CrystalReportl.WindowState=   2 
    Для установки свойства WindowState можно использовать следующие значения: 

    Значение	Описание	Константа 

    0	Окно Preview не является ни минимизированным, ни максимизированным. При 
открытии оно имеет умолчательный размер  и  позицию,  ранее определенную  
приложением  или Windows.	crptNormai 


    Глава 5. Создание отчетов с помощью Crystal Reports 139 

    Значение	Описание	Константа 

    1	Окно Preview выводится минимизированным в виде пиктограммы в нижнем 
левом углу экрана. Пиктограмма может быть расширена с переводом окна в 
нормальное (0) состояние.	

     crptMinimized 

    2	Окно Preview максимизировано и заполняет весь экран.	

    crptMaximized 


    Поступность свойства: разработка, выполнение.                              

    WindowTitle 

    Определяет заголовок в титульной строке окна печати при выводе отчета в 
окно. Применение в коде Visual Basic в период выполнения: 
[qbopMa.]CrystalReport.WindowTitle[= заголовок] Например: 

    CrystalReportl.WindowTitle   =   "Квартальные   обороты" Особенности свойства: 

    •  заголовок окна необходимо заключать в кавычки; 
    •  значение свойства WindowTitle имеет смысл, только если печать 
направляется в окно (если свойство Destination = 0). 

    Доступность свойства: разработка, выполнение. 

    WindowTop 

    Устанавливает расстояние в пикселях от края окна печати до верхнего края 
родительского окна. Если окно печати — окно верхнего уровня, расстояние 
измеряется от верхнего края экрана. 
    Применение в коде Visual Basic в период выполнения: 
[qbop/wa.]CrystalReport.WindowTop[= расстояние] Например: 
    '   Установить   равным   100   пикселей  расстояние   от   верхнего   
края   окна '   печати  до   верхней  части  экрана CrystalReportl.WindowTop   
=   100 
    Особенности свойства: значение свойства WindowTop имеет смысл, только если 
печать направляется в окно (если свойство Destination = 0). 
    Доступность свойства: разработка, выполнение. 

    WindowWidth 

    Определяет ширину окна печати в пикселях. Применение в коде Visual Basic в 
период выполнения: [qbopMa.]CrystalReport.WindowWidth[= ширина] Например: 

    CrystalReportl.WindowWidth  =   480 

    Установить   ширину  окна  печати в   480   пикселей 


    140	Методы элемента управления Crystal 

    Значение свойства WindowWidth имеет смысл, только если печать направляется 
в огно (если свойство Destination = 0). 

    5.6. Методы элемента управления Crystal 


    PrintReport 

    Инициирует печать отчета. 
    Применение в коде Visual Basic в период выполнения: 

    [qbopMa.]CrystalReport.PrintReport 

    Например: 
    '    Распечатать   специфицированный  отчет Result  =  
CrystalReportl.PrintReport   отчет 
    Особенности метода: 
    «   метод PrintReport возвращает код результата 0, если вызов успешен, и 
код ошибки = интервале 20ХХХ, если печать терпит сбой; 
    •   печатать отчет можно также, используя свойство Action. Однако, если 
что-то отрабатывает неправильно, всГв'рёмя выполнения программы возвращается 
ошибка, которая завершит приложение. Для обработки таких ситуаций необходимо 
ввести процедуру обработки ошибок. 

