ActiveReports 报表应用教程 (12)—交互式报表之贯穿钻取

  这是从id97拉取新热映电影的python脚本,很不难,假诺急需拉取别的电影一贯改一下正则表明式就能够了,程序测试环境:Win7
60位,Python 2.7。

在葡萄城ActiveReports报表中提供有力的多少解析能力,您可以由此图片、表格、图片、列表、波形图等控件来促成多少的贯通钻取,在拔尖报表中得以经过鼠标点击来钻取更为详细的数目。

  代码如下:

正文浮现的是二零一二寒暑天天销售数据合计,通过销售日历报表可以贯通钻取到当天的行销明细报表。

# -*- coding: utf-8 -*-

import urllib2;
import os;
import re;

# 找到电影
# <a\shref=\"http\:\/\/www\.id97\.com\/videos\/resource\/id\/(.+?)\"><img\swidth=\"100\%\"\ssrc=(.+?)\salt=(.+?)></a>
def getVideoList():
    url = 'http://www.id97.com/';
    user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'
    headers = { 'User-Agent' : user_agent }
    req = urllib2.Request(url, headers = headers)
    result = urllib2.urlopen(req);
    # print 'myResponse == ',myResponse;
    content = result.read();
    items = re.findall('<a\shref=\"http\:\/\/www\.id97\.com\/videos\/resource\/id\/(.+?)\"><img\swidth=\"100\%\"\ssrc=(.+?)\salt=(.+?)></a>',content,re.S);
    filePath = 'freefilm.txt';
    if os.path.exists(filePath):
        os.remove(filePath);
    f = open(filePath,'w+');
    for item in items:
        itemUrl = 'http://www.id97.com/videos/resource/id/' + item[0];
        onlineUrl = getVideoInfo(itemUrl);
        itemName = item[2];
        print 'itemName == ',itemName,' onlineUrl == ',onlineUrl;
        f.write('电影名称:' + itemName + ( 60 - len( itemName ) )*' ' +  '播放地址:' + onlineUrl + '\n' );
    f.close();

# 找播放地址
# <li\stitle=\"\"\sdata-original-title=\"\"\sdata-toggle=\"tooltip\"\sid=\"onlineplay\"\sclass=\"list-group-item\"><a\starget=\"_blank\"\shref=\"(.+?)\">在线观看</a></li><script\stype=\"text/javascript\">
def getVideoInfo(url):
    resultUrl = '';
    user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'
    headers = { 'User-Agent' : user_agent }
    req = urllib2.Request(url, headers = headers)
    result = urllib2.urlopen(req);
    page = result.read();
    content = page.decode("utf-8");
    urls = re.findall('<li\stitle=\"\"\sdata-original-title=\"\"\sdata-toggle=\"tooltip\"\sid=\"onlineplay\"\sclass=\"list-group-item\"><a\starget=\"_blank\"\shref=\"(.+?)\">(.+?)</a></li><script\stype=\"text/javascript\">'\
        ,content,re.S);
    for onlineUrl in urls:
        resultUrl = onlineUrl[0];
        break;
    return str(resultUrl);

# 拉取id97新上映电影
getVideoList();

图片 1

  拉取结果如下:

① 、创制报表文件

在应用程序中成立叁个名为
rptVacations.rdlx 的 ActiveReports 报表文件,使用的种类模板为
ActiveReports 页面报表,创制实现之后从 VS
的报表菜单项中采用更换为延续页面布局(CPL)报表,将固定页面报表转换为总是页面报表。

电影名称:”霍比特人3:五军之战,高清在线播放”
播放地址:http://www.id97.com/videos/play/mid/8549.html

贰 、打开报表能源管理器,并依据以下新闻创造报表数据源

名称: NorthWind_CHS
类型: Micorsoft OleDb Provider
OLE DB 提供程序: Microsoft.Jet.OLEDB.4.0
服务器或文件名称: Data\NWind_CHS.mdb

 

电影名称:”饥饿游戏3:嘲讽鸟(上).高清在线观察”
播放地址:http://www.id97.com/videos/play/mid/8548.html

叁 、 添加数据集

在新建的
NorthWind_CHS 数据源上鼠标右键并接纳丰富数据集菜单项

常规-名称:SalesByDay

查询-查询:

SELECT

订单.订购日期,

Sum

(订单明细.单价*订单明细.数量)

AS

营业额

FROM

订单明细

INNERJOIN

订单

ON

订单明细.订单ID
= 订单.订单ID

WHERE

DateDiff(“yyyy”,’二零一二-01-01′,订单.订购日期) = 0

GROUPBY

订单.订购日期;

 

影视名称:”爆裂鼓手,高清在线播放”
播放地址:http://www.id97.com/videos/play/mid/8543.html

④ 、设计报表界面

从 Visual Studio
工具箱中将 Calendar 控件添加到报表设计界面,遵照以下列表设置 Calendar
控件的性质:

数据 数据集名称:SalesByDay
起始日期:=Fields!订购日期.Value
截止日期:=Fields!订购日期.Value
值:=Fields!营业额.Value
导航 跳转到报表:Reports\rptOrderDetailsForSub.rdlx
跳转到报表-参数:
名称=Date
值==Fields!订购日期.Value

 

录制名称:”生命之书,高清在线播放”
播放地址:http://www.id97.com/videos/play/mid/8518.html

五 、创制贯穿报表的子报表

在应用程序中开创一个名为
rptOrderDetailsForSub.rdlx 的 ActiveReports 报表文件,使用的种类模板为
ActiveReports 页面报表,创制实现以后从 VS
的表格菜单项中精选更换为连日来页面布局(CPL)报表,将定点页面报表转换为一而再页面报表。并为报表创建以下参数:

名称: Date
数据类型: DateTime
提示用户输入值显示的文本; 其实日期:
隐藏: True

 

影视名称:”马达加斯加的企鹅,高清在线播放”
播放地址:http://www.id97.com/videos/play/mid/8501.html

⑥ 、在子报表中打开报表能源管理器,并依据以下信息创造报表数据源

名称: NWind_CHS
共享数据源: True
引用: ..\Data\NWind_CHS_Access.rdsx

 

柒 、 添加数据集

在新建的
NWind_CHS 数据源上鼠标右键并选择充裕数码集菜单项

常规-名称:OrderDetails

参数-名称:Param

参数-值:=[@Date]

查询-查询:

SELECT

订单.订单ID,
订单.客户ID, 订单.订购日期, 产品.产品名称,订单明细.数量, 订单明细.单价,
订单明细.折扣

from

(( 订单

innerjoin

订单明细

on

订单.订单ID =
订单明细.订单ID )

innerjoin

产品

on

订单明细.产品ID
= 产品.产品ID )

where

? = 订购日期

ORDERBY

订单.订单ID;

 

捌 、运维程序

点击二零一三年份销售数据报表中有多少的日子,然后可以贯通钻取到当天的销售明细报表中:

图片 2

在线演示及源码下载地址:

http://www.gcpowertools.com.cn/products/activereports\_demo.htm
图片 3

连带阅读:

【报表福利大放送】100余套报表模板免费下载 

 矩表 –
现代数据解析中须求的表格工具