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

Tài liệu Using Expression Columns to Display Aggregate Values pptx

3 305 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

Tiêu đề Using expression columns to display aggregate values
Tác giả Team LiB
Thể loại Presentation
Định dạng
Số trang 3
Dung lượng 15,37 KB

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

Nội dung

[ Team LiB ]Recipe 3.7 Using Expression Columns to Display Aggregate Values Problem You want to add summary information such as averages, sums, and counts to a table based on related c

Trang 1

[ Team LiB ]

Recipe 3.7 Using Expression Columns to Display Aggregate Values

Problem

You want to add summary information such as averages, sums, and counts to a table based on related child rows

Solution

Use expression columns to perform aggregate calculations based on child rows

The sample code starts by creating a DataSet containing the Orders and Order Details tables from Northwind sample database and a relation between them An expression is added to the Order Details table to calculate the extended price for each row Aggregate values for the total extended price of the order and the number of Order Detail rows are added to the Orders table Finally, the default view of the Orders table is bound to the data grid to display the results

The C# code is shown in Example 3-7

Example 3-7 File: ChildAggregateForm.cs

// Namespaces, variables, and constants

using System;

using System.Configuration;

using System.Data;

using System.Data.SqlClient;

// Table name constants

private const String ORDERS_TABLE = "Orders";

private const String ORDERDETAILS_TABLE = "OrderDetails";

// Relation name constants

private const String ORDERS_ORDERDETAILS_RELATION =

"Orders_OrderDetails_Relation";

// Field name constants

private const String ORDERID_FIELD = "OrderID";

Trang 2

//

DataSet ds = new DataSet( );

SqlDataAdapter da;

// Fill the Order table and add it to the DataSet

da = new SqlDataAdapter("SELECT * FROM Orders",

ConfigurationSettings.AppSettings["Sql_ConnectString"]);

DataTable orderTable = new DataTable(ORDERS_TABLE);

da.Fill(orderTable);

ds.Tables.Add(orderTable);

// Fill the OrderDetails table and add it to the DataSet

da = new SqlDataAdapter("SELECT * FROM [Order Details]",

ConfigurationSettings.AppSettings["Sql_ConnectString"]);

DataTable orderDetailTable = new DataTable(ORDERDETAILS_TABLE);

da.Fill(orderDetailTable);

ds.Tables.Add(orderDetailTable);

// Create a relation between the tables

ds.Relations.Add(ORDERS_ORDERDETAILS_RELATION,

ds.Tables[ORDERS_TABLE].Columns[ORDERID_FIELD],

ds.Tables[ORDERDETAILS_TABLE].Columns[ORDERID_FIELD],

true);

// Create the expression column for the line total

orderDetailTable.Columns.Add("OrderDetailTotal", typeof(Decimal),

"(Quantity * UnitPrice) * (1-Discount)");

// Create the OrderDetails aggregate values in the Order table

orderTable.Columns.Add("OrderDetailCount", typeof(int),

"COUNT(Child.ProductId)");

orderTable.Columns.Add("OrderTotal", typeof(Decimal),

"SUM(Child.OrderDetailTotal)");

// Bind the DataSet to the grid

childAggregateDataGrid.DataSource = ds.DefaultViewManager;

childAggregateDataGrid.DataMember = ORDERS_TABLE;

Discussion

You can create aggregate columns within a table to display summary information for

Trang 3

related child records When a DataRelation exists between a parent and child table in a

DataSet, you can refer to a child record by adding the prefix Child to the column name in the child table In the sample code, COUNT(Child.ProductID) returns the number of

Order Details child records for the parent Order record Expression columns support

aggregate functions as shown in Table 3-2

Table 3-2 Aggregate functions supported by expression columns

Function Description

AVG Average of all values

STDEV Statistical standard deviation of all values

SUM Sum of all values

VAR Statistical variance of all values

If the parent table has more than one child table, the relationship must be specified in the aggregate function The fully qualified syntax to access the count of child Order Details records would be:

COUNT(Child("Orders_OrderDetails_Relation").ProductId)

You can refer to the parent table for a child in a similar manner by adding the prefix

Parent to the column name In the previous example, for a row in the Order Details table, Parent.CustomerID refers to the CustomerID for the parent Orders row

[ Team LiB ]

Ngày đăng: 21/01/2014, 11:20

TỪ KHÓA LIÊN QUAN

w