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);