灵当CRM

 找回密码
 立即注册
查看: 8364|回复: 0

灵当 CRM 自定义报表工具使用手册

[复制链接]

1660

主题

1709

帖子

5万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
59078
发表于 2017-9-12 15:33:15 | 显示全部楼层 |阅读模式
1. Stimulsoft Reports.PHP  

Stimulsoft Reports.PHP 报表设计工具主要是为了能够在互联网上使用客户端-服务器技术创建报表而设计。

Stimulsoft Reports.PHP 中主要结合运用了两种技术,PHP 脚本技术和Adobe Flash 技术。

PHP 脚本主要是在服务器端工作,用于控制报表的生成;而Adobe Flash 技术则主要是在客户端工作,

这里的 Adobe Flash 技术提供另一个普通的机制,使得Stimulsoft Reports.PHP 可以在任何客户端生成报表,

也正是因为这点,使得Stimulsoft Reports 非常的易于使用。

Stimulsoft Reports.PHP 使用的内置 PHP 技术构架了一个现代化的、具有成本效益的、在网站上呈现的报表。

Stimulsoft Reports.PHP 不仅拥有快速强大的报表引擎,而且还有丰富直观的用户界面,方便用户上手,易于部署,易于授权。


2.   安装步骤

1)   下载地址:

      https://71mis.com/download/tools/


2)   解压后双击 \Applications\Flash\DesignerFx_AIR_PHP_Trial.air 进行安装,需要

      先安装环境 AdobeAIRInstaller

3)   安装完成后运行桌面快捷方式即可打开报表设计器,接下来您就可以开始定制报表啦!


厂商在线教程(适用谷歌浏览器打开,并鼠标右键点击翻译成中文)https://www.stimulsoft.com/en/documentation/online/user-manual/


1

1


3. 常用组件说明

2

2


3

3


4

4


4. 报表设计方法

1) 以一个简单的数据统计报表“业绩提成明细表”为例:

5

5


说明:业务员,业务员直属经理和总监分别按设定的比例和合同金额计算提成

2) 打开报表设计器,右边工具栏选择{Dictionary->New Connection}

6

6


3) 打开{Select Type of Connection}界面,选择{MySQL Connection}

7

7


4) 打开{Edit MySQL Connection},输入连接字符串。测试通过后保存即可。

8

8


Mysql 连接字符串如下,红色部分根据实际情况填写即可:

Driver={MySQL};Server=192.168.1.5ort=3306;Option=131072;Database=cr

m_1221; User=luyxassword=123;

5)   选 中 刚 才 建 立 的 连 接 , 右 键 选 择 {New Date Source->Data from MySQL


      Connection},建立数据源,可以建立多个数据源。

9

9


      ♢   数据源可以简单理解为报表查询的视图脚本

      ♢   可以直接把查询脚本写在 Query Test 中,但是不建议这样做。建议把复杂的查询

           过程创建为视图,这里直接利用。

      ♢   例如:这里把业绩提成编写成视图vw_yejidetails,这样就可以直接在Query Test

            中填写:select * from vw_yejidetails

      ♢   填写 Query Test 之后请务必点击下面的文字按钮{Retrieve Columns}检索数据

           源提供的字段列

6)   添加查询条件参数

10

10


     ♢   假设该报表需要添加 3 个查询条件:起始日期、截止日期、客户名称

     ♢   右边工具栏选择{Variables->New Variables},依次添加三个参数:参数 Name

          分别设置为:start_date、end_date、account_name,Type 分别选择 datetime

          和 string

         

11

11


    ♢   修改数据源中的 Query Test,添加这些变量查询条件:

         select * from vw_yejidetails

         where                                     signed_data                                 BETWEEN

         STR_TO_DATE(replace('{start_date}','/','.'),GET_FORMAT(DATE, 'USA'))

         and STR_TO_DATE(replace('{end_date}','/','.'),GET_FORMAT(DATE, 'USA'))

         and accountname like '%{account_name}%'

         说明:字符串类型的可以直接添加{}来查询,日期类型的查询需要做一下格式转化

   ♢   设置查询条件参数时,需要注意的是:参数的名称 Name 一定要和 Query Test

        中保持一致,查询条件显示的标签名称由 Alias 属性值控制。

   ♢   做完以上设置,切换到{Preview}界面就可以看到查询条件已经添加成功啦!


12

12


7)   设计报表格式

13

13


   ♢   报表页面的宽度和高度可以通过右边工具栏{Properities->age}属性进行调整

   ♢   页面和页脚通过添加 Page Header、Page Footer,以及 Text 组件实现,需要

        显示文字直接写在 Text 组件上。

   ♢   报表标题通过 Report Title 和 Text 组件实现,需要显示的文字直接写在 Text 组件上。

   ♢   GroupHeader 用来设置分组小计,如果要添加小计需在这里指定小计字段。

   ♢   Header 用来设置列头,通过添加多个 Text 组件用来定义每列的列头。

   ♢   Date 用来设定每列的取值,通过添加多个 Text 组件绑定数据源中的列。

   ♢   设计过程中,可以随时切换到{Preview}界面预览报表样式。

5.   把报表引入系统

1)    以管理员用户登录系统,进入“定制报表”模块

14

14



2)    新建报表:输入报表命名,选择刚定义好的报表模板,并指定允许访问的用户范围。

15

15


3)    确定之后,完成定制报表设置过程。

16

16


6.   常见问题及使用技巧

1)    如何设定报表查询数据的范围根据当前用户已设定的某个模块的数据范围来查询?

       ♢   修改数据源中的 Query Test,添加如下脚本:与临时表 tmp_users 做 INNer JOIN

     INNER JOIN

                    (

                       select DISTINCT userid from

                       (

                               select ld_users.id as userid from ld_users where EXISTS(select 1

     from ld_setscoperhigher where modulename='quotes'

                                                        and scopeauthority=1 and userid='[uuid]')

                               UNION

                               select 1 as userid

                               UNION

                               select viewid as userid from ld_scoperhigher where userid='[uuid]'

      and modulename='quotes'

                                          and    EXISTS(select    1     from   ld_setscoperhigher   where

      userid='[uuid]' and scopeauthority=2 and modulename='quotes')

                                  UNION

                                  select DISTINCT ld_users2group.userid as userid from

      ld_scoperhigher INNER JOIN

                                     ld_groups on ld_groups.groupid=ld_scoperhigher.viewid

                                  inner join ld_users2group on

      ld_users2group.groupid=ld_groups.groupid

                                  where ld_scoperhigher.userid='[uuid]' and

      ld_scoperhigher.modulename='SalesOrder' and ld_scoperhigher.scopeauthority=3 and EXISTS(select 1 from

      ld_setscoperhigher where modulename='quotes' and scopeauthority=3 and userid='[uuid]')

      UNION select id as userid from ld_users where exists(select 1

      from ld_users where id='[uuid]' and is_admin='on')

                             )as vw_users

                      ) as tmp_users ON tmp_users.userid=

      ♢   可修改上面语句中的 modulename=' ',表示查询范围根据用户数据权限中当前

           用户已指定的某个模块的数据范围来控制。

2)   如何设置报表数据的排序(报表输出结果与视图中的排序不一致)?

17

17


      ♢   可以在 DateBand 中的 Sort 属性中设置排序字段和排序方法

      ♢   但是这里的排序不能正确的按照中文拼音首字母进行排序,这里介绍一种变通的解

            决方法。

      ♢   首先在数据库中定义一个取拼音首字母的函数 FUNCTION,脚本如下:

            DROP FUNCTION IF EXISTS `getPY`;

            DELIMITER ||

            CREATE FUNCTION `getPY`(in_string VARCHAR(65534)) RETURNS mediumtext

            CHARSET utf8

            BEGIN

            DECLARE tmp_str VARCHAR(65534) charset gbk DEFAULT '';

            DECLARE tmp_len SMALLINT DEFAULT 0;#tmp_str 的长度

            DECLARE tmp_char VARCHAR(2) charset gbk DEFAULT '';

            DECLARE tmp_rs VARCHAR(65534) charset gbk DEFAULT '';

            DECLARE tmp_cc VARCHAR(2) charset gbk DEFAULT '';

            SET tmp_str = in_string;

            SET tmp_len = LENGTH(tmp_str);

            WHILE tmp_len > 0 DO

            SET tmp_cc = tmp_char;

            IF LENGTH(tmp_char)>1 THEN

            SELECT

            ELT(INTERVAL(CONV(HEX(tmp_char),16,10),0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6

            EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC

           ,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA ,0xCEF4,

            0xD1B9,0xD4D1), 'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z') INTO

            tmp_cc;

            END IF;

            SET tmp_rs = CONCAT(tmp_rs,tmp_cc);

            SET tmp_str = SUBSTRING(tmp_str,2);

            SET tmp_len = LENGTH(tmp_str);

            END WHILE;

            RETURN tmp_rs;

            END ||

            DELIMITER;

       ♢   编写视图的时候对于需要排序的中文字段,调用该函数生成对应的拼音首字母。例

             如:这里在视图中生成了产品名称的拼音首字母列 productnae_PY

       ♢   在 DateBand 中设置排序时,利用拼音首字母列 productname_PY 进行排序。

3)     对于 1 对多的关系,如何计算合计?例如:合同明细表,每个合有多个产品明细,

        此时如何计算合同订单的总金额合计?

       ♢   不能直接用合计来计算,因为合同有多条明细的情况下会被重复计算。

       ♢   解决方法:重新定义一个计算合计的数据源,所有查询条件与报表统计的数据源保

            持一致,计算合计时直接从该数据源中取对应的列即可。

4)    如何合并单元格?例如:同一个用户的多个合同订单记录,用户列希望报表输出时按用

       户名来合并单元格。

       ♢   在 DateBand 中选定该列,右边工具栏属性页签{Processing Duplicates}设为Merge

18

18


5)   如何去掉 DEMO 水印?

        ♢   联系我们对报表进行授权即可。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

灵当CRM

GMT+8, 2024-3-29 16:43 , Processed in 0.060208 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2008-2022, Tencent Cloud.

沪ICP备08110973号-2

快速回复 返回顶部 返回列表