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

Tài liệu Determine Which Records Will Be Printed at Runtime pptx

5 274 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 đề Determine Which Records Will Be Printed At Runtime
Trường học University of Information Technology
Chuyên ngành Computer Science
Thể loại Tài liệu
Năm xuất bản 2023
Thành phố Ho Chi Minh City
Định dạng
Số trang 5
Dung lượng 18,3 KB

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

Nội dung

10.5 Determine Which Records Will Be Printed at Runtime I can use the Select Wizard to help limit the records that I want to be displayed on the report, but that doesn't do my users much

Trang 1

10.5 Determine Which Records Will Be Printed at Runtime

I can use the Select Wizard to help limit the records that I want to be displayed on the report, but that doesn't do my users much good when they want control over that when the application is running How do I determine which records are displayed at runtime?

Technique

To handle this, use the SelectionFormula of the CrystalReportsViewer When you use the SelectionFormula to limit your records, you are taking advantage of Crystal Report's Database optimization This means that the query you generated by setting the

SelectionFormula and the original record source for the report will be "pushed down" to the server

SelectionFormula Syntax

You can see the syntax for the SelectionFormula here:

CrystalReportViewer1.SelectionFormula = "{Table.Field} = value"

Value can be various data types, delimited by the usual delimiters, such as single quotes for strings

For the new criteria to take effect, after setting the SelectionFormula, you need to call the RefreshReport method of the CrystalReportViewer

Setting Report Options

To get optimal use out of the SelectionFormula, you need to keep some things in mind You need to set an option of the report that will ensure it uses the record source indexes if possible

To do this, you right-click on the report and choose Report Options from the Report menu On the Options page, make sure to check Use Indexes or Server for Speed (see Figure 10.20)

Figure 10.20 Customize your report by using the Report Options dialog box

Trang 2

Another tip is to make sure you use indexed fields whenever possible

Tip

Take some time now to check out some of the other report options

Steps

Open and run the Visual Basic NET-Chapter 10 solution Click on the button labeled How-To 10.5 You can select Regions from the ComboBox control on the top of the form; the report then reflects the selection (see Figure 10.21)

1 Create a Windows Form

2 Drag on a ReportDocument object, and set it to point to the report you created in How-To 10.1 Then name your report document rdHowTo10_5

3 Place the controls shown in Figure 10.21 onto the form with the properties set in Table 10.4

Trang 3

Table 10.4 Label, Combo, and CrystalReportViewer Controls and Their

Property Settings

CrystalReportViewer Name cvwRegionReport

4 Add the code in Listing 10.3 into the Load event of the form This code performs a DISTINCT SQL statement to get all of the regions used in the Customers table The data adapter then fills dtRegions Before binding dtRegions to the combo box cboRegions, a new data row is added to allow the user to specify All Regions

Listing 10.3 frmHowTo10_5.vb: Populating the Selection Combo Box

Private Sub frmHowTo10_5_Load(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles MyBase.Load

Dim odaRegions As New _

OleDb.OleDbDataAdapter("SELECT DISTINCT Region FROM

Customers",

BuildCnnStr("(local)", "Northwind"))

Dim dtRegions As New DataTable()

odaRegions.Fill(dtRegions)

' Add the All Regions feature

Dim drAll As DataRow = dtRegions.NewRow

drAll(0) = "<< ALL Regions >>"

dtRegions.Rows.Add(drAll)

With Me.cboRegions

.DataSource = dtRegions

.ValueMember = "Region"

End With

Trang 4

End Sub

Note

As with a number of other examples, the BuildCnnStr() function has been created in the modGeneralRoutines module to create a connection string

5 Add the report in Listing 10.4 to the SelectedIndexChanged event of cboRegions One of the values that is in the Region field of the Customer table is NULL This code tests for that first by testing this:

6 Me.cboRegions.SelectedItem(0) Is System.DBNull.Value

If the selected item is NULL, which uses System.DBNull.Value for the

comparison, then the value of IsNull({Customers.Region}) is stored in the

SelectionFormula If All Reasons was chosen, then the SelectFormula is set to the empty string so that all items are chosen Otherwise, the Customers.Region field is compared to the literal region, supplied by cboRegions The last task performed is refreshing the report

Listing 10.4 frmHowTo10_5.vb: Setting the SelectionFormula Property

Private Sub cboRegions_SelectedIndexChanged(ByVal sender As System.Object, _

ByVal e As System.EventArgs) _

Handles cboRegions.SelectedIndexChanged

With Me.cvwRegionReport

If Me.cboRegions.SelectedItem(0) Is System.DBNull.Value Then

SelectionFormula = "IsNull({Customers.Region})"

ElseIf Me.cboRegions.SelectedItem(0) = "<< ALL Regions >>" Then

SelectionFormula = ""

Else

SelectionFormula = "{Customers.Region} = '" & _

Trang 5

Me.cboRegions.SelectedItem(0) & "'"

End If

.RefreshReport()

End With

End Sub

Figure 10.21 You can let your user control how much data he sees in the report

Comments

You can limit the selection displayed on the report in other ways, too This How-To presented just one way to get you started Letting your user choose the records gives him the perceived control he wants

Ngày đăng: 14/12/2013, 20:16

TỪ KHÓA LIÊN QUAN

w