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

Changing report formats

When sending reports to a preview window using PEOutputToWindow, Volume 2, Chapter 1, you should always avoid making any formatting changes to a print job once you call PEStartPrintJob, Volume 2, Chapter 1. If the first page of a report has been displayed in the preview window, and you make formatting changes to the print job, subsequent pages of the report, if requested, may appear formatted differently than the first page. Depending on the changes made, trying to change report formatting after calling PEStartPrintJob can even cause errors in the Crystal Report Engine.

To avoid such formatting problems, you should get in the habit of formatting the report before starting the print job with PEStartPrintJob. Adding a routine to monitor job status using PEGetJobStatus, Volume 2, Chapter 1, can also help avoid conflicts. If you need to display the same report with different formatting options, create two separate print jobs, format each separately, and start each separately.

Exporting reports

The following topics are discussed in this section:

PEExportTo Overview, Page 95

PEExportOptions Structure, Page 95

Considerations when using the export functions, Page 97

Using the Professional Edition of Seagate Crystal Reports, you can give your applications the ability to export reports in a number of word processor and spreadsheet formats, and in a variety of popular data interchange formats as well.

The program includes two export functions, PEExportTo, Volume 2, Chapter 1, and PEGetExportOptions, Volume 2, Chapter 1. PEExportTo can be used by itself or in conjunction with PEGetExportOptions.

Use PEExportTo by itself if you want your application to export reports in a fixed format to a fixed destination. Use this alternative, for example, if you want to preset the format and destination for a report and have the application export the report according to your specifications in response to user input.

Use PEExportTo in conjunction with PEGetExportOptions to export reports in the format and destination your user selects from the Export dialog box at Print time.

PEGetExportOptions can only be used in conjunction with PEExportTo.

Crystal Report Engine

94

PEExportTo Overview

The PEExportTo, Volume 2, Chapter 1 function uses a structure, PEExportOptions, Volume 2, Chapter 1, as part of its argument list. This structure passes format and destination data to the function.

When using the PEExportTo function by itself, you hard code the format and destination data into the structure. Then, when you issue a call to PEStartPrintJob, Volume 2, Chapter 1, the program exports the report using the format and destination you specified in the code.

Most of the format and destination data that you need to enter can be taken from the table in the PEExportTo topic.

To hard code an export file name or e-mail header information, you will have to pass a second structure as an argument to the PEExportOptions structure. This second structure is defined in the *.h file that corresponds with the destination DLL you have selected.

When using the PEExportTo function in conjunction with the PEGetExportOptions function, you run the PEGetExportOptions function first to:

retrieve the format and destination data that the user specifies in the Export dialog box, and

pass that data to the PEExportOptions structure (again, part of the PEExportTo argument list).

Then, when you issue a call to PEEnableEventInfo, Volume 2, Chapter 1, the program exports the report using the format and destination specified by the user.

PEExportOptions Structure

struct PEExportOptions

{

WORD StructSize;

//the size of the structure. Initialize to sizeof PEExportOptions char formatDLLName [PE_DLL_NAME_LEN];

//Each export format is defined in a DLL. This is the name of the

//DLL for the format you select. From table in PEExportTo topic.

//Requires a null-terminated string. Does not need to include

//drive, path or extension. For example, uxfsepv is an example of

//a valid formatDLLName.

DWORD formatType;

//Some DLLs are used for more than one format. Enter the

//appropriate value from the table under PEExportTo. void FAR *formatOptions;

//Some formats offer additional options (see table in the

//PEExportTo topic). You can set this element to 0. Then, If the

//DLLs require more information, they will prompt the user

//for it. To hard code this information, see the note immediately

Crystal Report Engine

95

// following this structure.

char destinationDLLName [PE_DLL_NAME_LEN];

//Each export destination is defined in a DLL. This is the name of

//the DLL for the destination you select. From table in PEExportTo

//topic. Requires a null-terminated string. Does not need to

//include drive, path or extension. For example, uxddisk is an

//example of a valid destination DLLName.

DWORD destinationType;

//At the present time, each DLL implements only one destination.

//You must specify a type here, nonetheless, because the DLL may

//implement more than one destination someday. See the table under

//PEExportTo for values to enter here.

void FAR *destinationOptions;

//Some destinations offer additional options (see table in the

//PEExportTo topic). You can set this element to 0. Then, If the

//DLLs require more information, they will prompt the user for

//it. To hard code this information, see the note immediately

//following this structure.

WORD nFormatOptionsBytes;

//Set by 'PEGetExportOptions', ignored by 'PEExportTo'. Both

//functions use the same structure. PEGetExportOptions uses this

//information in communicating with the application. The

//application needs to know how many options bytes are being

//returned because it may need to copy the options. PEExportTo

//expects a filled in structure and does not need the byte

//information because it is not going to copy the options. It uses

//only a subset of the structure that does not include byte

information.

WORD nDestinationOptionsBytes;

//Set by 'PEGetExportOptions', ignored by 'PEExportTo'. See

//comments for nFormatOptionsBytes above.

};

NOTE: You may choose to hard code the data for formatOptions and destinationOptions. You can set the formatOptions and destinationOptions elements to 0 as indicated. If the DLLs require more information than this, however, they will prompt the user to include more information. To hard code this information, you must define and fill in a structure of the appropriate kind. See the header file for the specified DLL for examples. Once the structure is defined, set the formatOptions or destinationOptions element to the address of the structure. Once PEExportTo returns or finishes, deallocate the formatOptions and destinationOptions structures. You should also deallocate the PEExportOptions structure once PEExportTo returns.

Crystal Report Engine

96

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