C#项目开发全程实录(第4版)
上QQ阅读APP看书,第一时间看更新

2.9 客户级别分析模块设计

视频讲解

2.9.1 客户级别分析模块概述

客户级别分析窗体主要反映不同级别的客户情况,操作人员可以通过选择客户等级,查看指定级别的客户详细信息。客户级别分析窗体运行结果如图2.25所示。

图2.25 客户级别分析窗体

2.9.2 客户级别分析模块技术分析

在开发客户级别分析模块时,用到了水晶报表控件。使用水晶报表时,需要通过编写代码来动态连接水晶报表的数据源,否则程序在非开发机器上运行时会弹出“数据库登录对话框”。动态连接水晶报表数据源,需要通过设置TableLogOnInfo实例的ConnectionInfo属性来实现,下面将详细介绍。

说明

Visual Studio 2017开发环境中默认没有水晶报表,开发人员在使用时,首先需要到SAP官方网站下载Crystal Reports安装文件进行安装,然后才可以在Visual Studio 2017开发环境中创建水晶报表。

(1)创建TableLogOnInfo类的实例,该实例可用来获取或设置Table连接的信息(包括服务器名称、数据库名、登录用户名、登录密码等),创建该实例的示例代码如下。

    TableLogOnInfo logOnInfo = new TableLogOnInfo();

(2)设置TableLogOnInfo实例的ConnectionInfo属性,下面的示例代码描述了本系统的水晶报表连接数据源的实际情况。

2.9.3 客户级别分析模块实现过程

 本模块使用的数据表:tb_ClientInfo

客户级别分析模块的具体实现步骤如下。

(1)新建一个Windows窗体,命名为frmCLAnalyse.cs,用于实现客户级别分析功能,该窗体主要用到的控件、控件属性设置及其用途如表2.13所示。

表2.13 客户级别分析窗体主要用到的控件

(2)声明公共类OperateAndValidate的一个全局对象,通过类对象调用类中的功能方法。实现关键代码如下:

例程33 代码位置:资源包\TM\02\CRM\SumManage\frmCLAnalyse.cs

frmCLAnalyse窗体的Load事件中,通过调用公共类OperateAndValidate中的CrystalReports()方法对客户级别分析报表进行数据绑定,显示不同级别的客户信息。frmCLAnalyse窗体的Load事件关键代码如下:

例程34 代码位置:资源包\TM\02\CRM\SumManage\frmCLAnalyse.cs

 代码贴士

❶ 自定义string字符串,用来存储SQL查询语句。

❷ 调用公共类OperateAndValidate中的CrystalReports()方法对指定报表进行数据绑定。

单击“查找”按钮,程序根据用户选择的查询条件,在客户信息表中查找出指定级别的客户信息,并将其结果绑定到客户级别分析报表上。“查找”按钮的Click事件代码如下:

例程35 代码位置:资源包\TM\02\CRM\SumManage\frmCLAnalyse.cs

2.9.4 单元测试

在绑定水晶报表时,用SQL语句取值,可能会出现如图2.26所示的信息提示框。

图2.26 “Crystal Report Windows窗体查看器”对话框

原绑定水晶报表的完整代码如下:

    string P_str_sql = "select * from tb_ClientInfo where CStep like '" + tscboxCLevel.Text.Trim() + "'";
    CReportViewer.ReportSource = opAndvalidate.CrystalReports("CReportCLAnalyse.rpt", P_str_sql);

经过分析,发现错误是由于在绑定水晶报表时,给其赋值的SQL语句的写法有问题。标准的绑定水晶报表的SQL语法如下:

    {Table.Column} like 'string'

修改后的绑定水晶报表的代码如下:

    string P_str_sql = " {tb_ClientInfo.CStep} like '" + tscboxCLevel.Text.Trim() + "'";
    CReportViewer.ReportSource = opAndvalidate.CrystalReports("CReportCLAnalyse.rpt", P_str_sql);