1. Trang chủ
  2. » Công Nghệ Thông Tin

Hướng dẫn học Microsoft SQL Server 2008 part 159 pptx

10 90 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 640,81 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

However, the report expression language requires careful coding to handle any NULL values or data type conversions.. Scope refers to either the name of a dataset or the name of a groupin

Trang 1

FIGURE 73-6

Example of multi-value nested parameters

Adding calculated fields to a dataset

Once the dataset is defined, it is possible to add fields to it and specify an expression for the field value

For example, you could add a field to theProductsdataset named ‘‘Margin’’, and set the expression to

calculate it asListPrice – StandardCost To add a field, follow these steps:

1 Right-click on theProductsdataset and choose Add Calculated Field The Dataset Properties dialog displays, showing a blank row on the Fields tag

2 Enter ‘‘Margin’’ for the new Field Name.

3 Enter the following expression as the Field Source Alternately, click the fx button to launch

the expression editor and build the expression using the fields listed there

=Fields!ListPrice.Value - Fields!StandardCost.Value

4 Select OK and the new field is added to the dataset.

Best Practice

While it is possible to achieve the same result by including the calculation in the SQL statement, this

approach is very convenient when calling a stored procedure that you don’t want to include the

calculation in, or that you don’t have permission to update However, the report expression language requires

careful coding to handle any NULL values or data type conversions

It is also possible to include expressions in the report layout, but this may require writing and maintaining

the expression multiple times within the report Adding the calculated field to the dataset ensures that the

expression is defined in one place and simplifies report construction and maintenance

Working with XML data sources

XML can be a very useful data source for reports Individual files can provide easy-to-deploy datasets

that are not otherwise available Web Service access allows reports to be enhanced by services available

inside and outside the organization The example in this section demonstrates both types of data

Trang 2

sources, using an XML file to populate a report parameter and a Web Service to provide the dataset for

reporting The ultimate goal is to choose a company from the parameter and view its stock quote in the

report

The following XML file contains the stock symbols and their associated companies:

<?xml version="1.0" encoding="utf-8" ?>

<StockSymbols>

<Symbol Value="AAPL" Name="Apple Computer, Inc (AAPL)" />

<Symbol Value="CSCO" Name="Cisco Systems (CSCO)" />

<Symbol Value="MSFT" Name="Microsoft Corporation (MSFT)" />

<Symbol Value="ORCL" Name="Oracle Corporation (ORCL)" />

<Symbol Value="JAVA" Name="Sun Microsystems, Inc (JAVA)" />

</StockSymbols>

Follow these steps to create a new dataset for theStockSymbols.xmlfile:

1 Create a file namedStockSymbols.xmlcontaining the stock symbols XML code above

2 Place the file on a handy web server.

3 Create a new data source with the name ‘‘Stocks’’, the type XML, and a connection string that

points to the newly created file — for example,http://localhost/StockSymbols.xml

for a file saved on the root of the local web server

4 Add a dataset under the Stocks data source, name it ‘‘StockSymbols’’, and use the following

query:

<Query>

<ElementPath IgnoreNamespaces="true">

StockSymbols/Symbol{@Value, @Name}

</ElementPath>

</Query>

5 Use the Query Designer to execute the query to ensure successful connection and

configuration

Now create a report parameter namedSymbolsand use theStockSymbolsdataset to populate the

values Follow these steps:

1 Right-click the Parameters folder in the Report Data pane and choose Add Parameter.

2 Name the parameterSymbols, set the prompt to something user-friendly such as ‘‘Stock

Symbol’’, and set the data type toText

3 Under the Available Values tag, select ‘‘Get values from query.’’ Set the dataset toStock

Symbols, the Value toValue, and the Label toName

4 Click OK to save the new parameter.

When the report is executed, the user will be prompted to select a stock symbol from the parameter to

obtain a quote Now create a dataset to retrieve stock quote information from a Web Service CDYNE

Corporation provides a Web Service to return delayed stock quotes The GetQuotemethod of the Web

Service retrieves a current stock quote and requires two parameters:StockSymbolandLicenseKey

Trang 3

You will associate the StockSymbol query parameter to theSymbolsReport parameter just created

and hard-code theLicenseKeyquery parameter with a value of0; the key is provided for testing

purposes Follow these steps to create the Stock Quote dataset:

1 Create a new data source namedStockQuoteas an XML data source and use the following URL for the connection string:

http://ws.cdyne.com/delayedstockquote/delayedstockquote.asmx

2 Create a dataset namedQuoteunder the new data source, using the following code:

<Query>

<Method Namespace="http://ws.cdyne.com/" Name="GetQuote">

<Parameters>

<Parameter Name="StockSymbol">

<DefaultValue>MSFT</DefaultValue>

</Parameter>

<Parameter Name="LicenseKey">

<DefaultValue>0</DefaultValue>

</Parameter>

</Parameters>

</Method>

<SoapAction>http://ws.cdyne.com/GetQuote</SoapAction>

<ElementPath IgnoreNamespaces="true">*</ElementPath>

</Query>

3 On the Parameters tab, add a new Parameter namedStockSymbolmapped to the [@Symbols]report parameter (available in the drop-down) Add a second parameter namedLicenseKeyand set the value to0 Be aware that the parameter names are case sensitive These parameters correspond to the parameter placeholders in the XML and override the default values specified there

4 Use the Query Designer to execute the query to ensure successful connection and

configuration

Now place fields from theQuotedataset in the report — a List item works well here because it is

dif-ficult to fit all the fields across the page Then run the report, choose a company, and view the Web

Service results in the output

For a detailed description of query syntax, see the ‘‘XML Query Syntax for Specifying XML Report Data’’

topic in Books Online

Working with expressions

Expressions are a powerful resource for report authors They can be used as data for any item

that appears on the report design surface, which enables calculations on source data and a

vari-ety of summarizations Expressions can also be included in most object properties, enabling

items to be selectively hidden, formatted, and change most any other behavior controlled by

properties

Figure 73-7 shows the Expression Editor used to build expressions

Trang 4

To open the Expression Editor, select <Expression .> from a property value list, right-click on an

object, and select Expression from the context menu, or select the function button labeled ‘‘fx’’ next to

a property in a property page The Expression Editor contains the expression code window, a category

tree, category items, and a description pane Double-clicking a value in the Item pane or Description

pane inserts code into the code window

FIGURE 73-7

The Expression Editor now contains advanced features such as IntelliSense and a list of available

functions

Table 73-2 describes the categories available in the Expression Editor

Expression scope

Aggregate functions enable you to specify the scope for performing a calculation Scope refers to either

the name of a dataset or the name of a grouping or data region that contains the report item in which

the aggregate function is used

For example, consider a Sales by Product report containing a table with a group namedgrpProduct

To add a Running Total column to the report that resets the running total on each product, use the

fol-lowing expression:

=RunningValue(Fields!LineTotal.Value, Sum, "grpProduct")

Trang 5

TABLE 73-2

Expression Editor Categories

Constants Constants are not available for all report items and properties This category

will contain the constant values available for the property for which the expression is being written For example, when editing an expression to set the background color for a row in a table, the Constants category contains the list of colors available and exposes controls enabling the addition of a custom color

Built-in Fields This category contains built-in tags to access information about the report

and the execution of the report, such as ExecutionTime, PageNumber, TotalPages, and UserID

Parameters This category contains the list of report parameters Note that special

handling is required for multi-value parameters because they represent a list

of values instead of a single value For example, the Join function can be used to produce a single string from the multiple values; an expression like Join(Parameters!ProductCategoryID.Value,",")will produce a comma-separated list of category IDs

Fields This category contains the list of fields for the dataset within the scope of

the selected report item or property For example, when editing the expression for a cell in a table bound to the Products dataset, the Fields expression category will list all of the fields available in the Products dataset

Datasets This expression category contains each dataset defined in the report

Selecting a dataset displays the default aggregation function for each field in the dataset The default aggregation function varies according to the data type for the field For example, the default aggregation function of the ListPricefield in the Products dataset is Sum(ListPrice)

Double-clicking this field adds the following code to the code window:

Sum(Fields!ListPrice.Value, "Products") Operators This expression category contains Arithmetic, Comparison, Concatenation,

Logical/Bitwise, and Bit Shift operators to assist with expression syntax and construction

Common Functions This expression category contains functions for working with Text, Date and

Time, Math, Inspection, Program Flow, Aggregate, Financial, Conversion, and Miscellaneous

Trang 6

To add a Running Total column to the report that does not reset by product, use this expression:

=RunningValue(Fields!LineTotal.Value, Sum)

Expression scope can also be important when adding an expression to a textbox Because the textbox

report item cannot be bound directly to a dataset, the expression must include the dataset’s scope The

following expression calculates the sum of theLineTotalfield in theSalesdataset:

=Sum(Fields!LineTotal.Value, "Sales")

Expressing yourself with common expressions

The following examples demonstrate several common expressions used in reports Using the following

expression as theBackgroundColorproperty for the detail row in a table will set the background

color for the even rows toAliceBlue:

=IIf(RowNumber(nothing) mod 2 = 1, "AliceBlue", "White")

It’s a good idea to include the date and time a report was executed The following expression produces

output like ‘‘Report Executed on Monday, August 15, 2005 at 2:24:33P.M.’’:

="Report Executed On " & Globals!ExecutionTime.ToLongDateString &

" at " & Globals!ExecutionTime.ToLongTimeString

Expressions can be used to format text The following expression calculates the sum of theLineTotal

field in theSalesdataset and formats the result as a currency string such as $4,231,205.23:

=FormatCurrency(Sum(Fields!LineTotal.Value, "Sales"),

2, true, true, true)

Sometimes it doesn’t make sense to show certain report items based on the parameters selected To

tog-gle the visibility of a report item or even just a cell in a table, use an expression similar to the following

in theVisibility.Hiddenproperty:

=IIf(Parameters!CategoryID.Value = 10, true, false)

Designing the Report Layout

The Report Designer contains a rich feature set for designing reports This section discusses the basics of

report design and demonstrates creating a report design, grouping and sorting data, and adding charts to

a report

Design basics

The Design tab in the Report Designer contains rich features to make formatting even the most

com-plicated reports possible The page layout contains three sections: header, body, and footer Table 73-3

summarizes the behavior and purpose of each section Designing the report layout is similar to working

with Windows Forms Report items are added by dragging them from the Toolbox onto the report

Trang 7

Best Practice

Because a report represents the state of a dataset at a particular moment in time, it is important to include

enough information in the report to answer the ‘‘5 Ws’’ of the report: who, what, when, where, and

why? Who ran the report? Where did they run it? What criteria were provided to execute the report? When

was the report generated? Why does the report exist? Communicating these facts on the report in a consistent

manner avoids confusion and debate over the report’s content

TABLE 73-3

Report Sections

Header By default, content in the header will appear on every page This is a good

place to include the report title to indicate why the report exists The PrintOnFirstPageand PrintOnLastPage properties can be used to prevent the header from appearing on the first and last pages

Body If the report contains parameters, it’s a good idea to add a section to the top

or bottom of the body to show the value of the parameters used to execute the report, and perhaps a short description of what the report represents

Adding this detail at the top or bottom of the body ensures that the information is printed only once, rather than on every page

Footer Like the header, the footer also appears on every page by default and can

be turned off for the first and last pages This is a good place to include information specifying who ran the report, when they ran it, the report version, and page numbering

Designing the report header

To add a report title, follow these steps:

1 Right-click the left margin of the report and select Page Header to show the page header

section Be aware that once you have added content to a report section, the content is lost if you toggle that section off

2 Add a textbox to the header from the Toolbox.

3 Type the report title and format the textbox You may want the title to be dynamic based on

the report content or parameters selected This can be achieved by using an expression Nearly all visual aspects of the textbox permit expressions too

Trang 8

Designing the report footer

The footer should include information such as who ran the report, when the report was executed, and

page numbering This type of information can be added using expressions Follow these steps to build

the footer:

1 Right-click the left margin of the report and select Page Footer to show the page footer section.

2 Add three textboxes using these expressions:

=User!UserID

=Globals!PageNumber & " of " & Globals!TotalPages

=Globals!ExecutionTime

3 Add a line above the textboxes to provide visual separation.

Adding and formatting a Table report item

Use the Table report item to render the data from a row-oriented dataset — the type of data that might

present well in a simple Excel spreadsheet Follow these steps to add a table showing the data from a

dataset namedProducts:

1 Add a table to the body of the report from the Toolbox.

2 Drag fields from the dataset to the detail section of the table Notice how the indicator

high-lights where the field will be placed — either in an empty column or between columns If

necessary, highlight and right-click column headers and delete columns as necessary Column

headers are automatically set based on the field name Note that dropping fields into the

header and footer sections of the table will create an expression to either return the value for

that field from the first row in the dataset or to calculate the sum of a numeric dataset field

3 Format the report by using the numerous formatting options available in the toolbar and

prop-erties pane to control data presentation Table formatting can be set at the table, row, column,

and cell level — each parent’s formatting can be overridden at the child level Property values

can be specified as expressions to dynamically change the formatting based on data values

(e.g., exceptions could be highlighted by changing the font color or weight)

Figure 73-8 shows the layout of the report, including the header, table, and footer Figure 73-9 shows

the rendered report

Adding and formatting a List report item

Adding a List item to a report places both a Tablix and a Rectangle item on the design surface Because

it includes a Tablix, it can present anything that a Table or Matrix can present, but the List item is in a

convenient form to contain other items, suggesting a number of uses:

■ Place other items within the List item, such as textboxes, images, charts, etc All these nested

items will be repeated for each row of the dataset associated with the list This is an excellent

approach for data that does not fit cleanly into a grid because the arrangement of items within

the List is free-form

Trang 9

FIGURE 73-8

Report layout with formatted header, body, and footer

FIGURE 73-9

Rendered report with formatted header, body, and footer

Trang 10

■ By adding group(s) to the List (see ‘‘Grouping and Sorting Data in a Tablix’’ later in this

chapter), it is simple to show both master and detail data in flexible layouts For example,

textboxes in a group header can show customer information, while a table in the group footer

can list all of the customer’s associated order detail

■ Adding a group to a List item (and eliminating the detail section) can summarize a dataset that

is reported in detail elsewhere

Using the Tablix property pages

Use the Tablix property pages to define key behaviors as described in Table 73-4 Invoke the property

pages by clicking somewhere within the Tablix to expose the row and column handles, then right-click

one of the handles and choose Tablix Properties While the options vary slightly among the Table,

Matrix, and List report items, the process to work with them is very similar

TABLE 73-4

Table and Matrix Property Pages Property Page Description

General Name the table/matrix/list, bind a dataset, set the tooltip text, control page

breaks, and control where row/column headers appear Note that row/column headers are not simply the first row or column displayed, but group or other headers as designated by dotted lines around the cells in design mode

Visibility Control the initial visibility of the item upon report execution Allow the item

visibility to be toggled by another report item

Filters Supply filter criteria Use expressions to apply values from report parameters or

other data for filtering

Sorting Set the sort order of the details section of the Tablix

Many of the same properties are available in the Properties pane of the design environment For

example, the dataset can be set directly in the Properties pane The property pages can also be launched

from the icon in the Properties pane, or by choosing the ellipses of some property values (e.g.,

SortExpressions)

Grouping and sorting data in a Tablix

Grouping within a Tablix provides the power to organize data in many ways Figure 73-10 shows a

matrix item with groups The row and column groups displayed at the bottom show the name and

order of the groups of the currently selected report item This grouping display is enabled by checking

the Grouping option of the Report menu of the design environment The scope of the grouping in the

Tablix is indicated by the brace markings within the row and column handles, indicating which portions

will be repeated for each group

Groups can be created by dragging fields into the Row Groups or Column Groups areas, or by clicking

the drop-down on each group The drop-down also allows a group to be removed, or totals, such as the

Ngày đăng: 04/07/2014, 09:20

TỪ KHÓA LIÊN QUAN