e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> PowerBuilder教程 >> 用PB7.0制作一个电视节目脱机浏览器 >> 教程正文
 
教程搜索
 
 
相关教程
  • 在PowerBuilder中利用Dat
  • 什么是“pbcat表?
  • 修改PB6的PBL,使之在PB5中
  • 使用日期格式时的一些问题
  • 如何存取二进制大对象(BL
  • 关于PowerBuilder的补丁包
  • 如果在isql中建立表或者增
  • PB高级开发环境配置
  • 动态设置Win95和NT的缺省
  • PowerBuilder6.0运行环境
  • PowerBuilder、InfoMaker
  • PB API调用原型
  • 如何用VC创建可在PB中调用
  • PB应用技巧——数据窗口自
  • 为PB加入具有布局功能的容
  • PB7.0通用选字段查询窗口
 
 
赞 助 商
 
 
用PB7.0制作一个电视节目脱机浏览器
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

随着人们物质文化生活水平的提高和网络的日益普及,上网查电视节目已经不是什么新鲜事了。中央电视台网站(央视国际网站http://www.cctv.com.cn)专门制作了电视节目查询网页和查询工具,供我们查询一周内中央和地方电视台各频道的节目,可以按频道、节目名称、起止时间、星期任意查询。尽管如此,上网查电视节目效果并不理想,其主要原因,一是速度慢,二是费用高。一般情况下,很少有人会为查电视节目专门上网。

如果将电视节目时间表下载到本地硬盘,再做一个浏览器进行脱机浏览,可以大大提高查询速度、降低费用,用起来也更加方便灵活。

本人用PB7.0制作了一个电视节目脱机浏览器,经过半年多的使用,效果令人满意。下面将实现方法介绍给读者。

一、数据库与应用程序对象

1.建立一个Access 2000数据库tv_acc.mdb(可以是其它数据库),在数据库中建立一个表tv_tab。表结构如图所示。

在PB中配置ODBC和Profile(命名为tv_acc)。

2.建立一个PB应用程序对象tv_tab,并对其open事件编写如下代码:

SQLCA.DBMS="ODBC"

SQLCA.DbParm="

ConnectString='DSN=tv_acc;UID=;PWD='" CONNECT USING SQLCA;

If sqlca.sqlcode <> 0 Then

MessageBox ("数据库连接失败", sqlca.sqlerrtext)

Halt //终止应用程序

End If

open(w_tv) //打开电视节目脱机浏览器窗口

二、窗口设计

建立如图2所示的窗口对象w_tv。

标签tab_1有三个标签页tabpage_1、tabpage_2和tabpage_3,每个标签页放一个数据窗口控件,分别命名为dw_1、dw_2和dw_3(图中只标出dw_1)。

两个下拉列表框ddlb_1和ddlb_2用来选择"星期"和"频道"。

水平滚动条htb_1、htb_2以及对应的编辑框em_1、em_2用来调整和显示起止时间。

单行编辑框sle_jm和sle_cnt分别用来指定节目和显示当前记录数。

静态超级链接shl_1用来连接到中央电视台"节目下载"网页。

此外,窗口上有cb_1~cb_6六个命令按钮,具体功能将在后面介绍。

(图2)

三、将电视节目导入数据库

为了便于查询,需要将网上获得的电视节目导入本地数据库。

电视节目信息的获取方式有以下几种:

1.利用cctv的电视节目查询系统,提取全部节目信息,保存到本地硬盘。缺点:速度慢、操作麻烦。

2.在cctv网站订阅节目时间表。特点:纯文本、按时邮寄。

3.从cctv网站下栽节目时间表,保存到本地硬盘。特点:速度快、操作方便、纯文本、便于导入数据库。网址:http://www.cctv.com.cn/appsvr/showtime/Show_Time.jsp。本软件采用此种方法。单击窗口的"节目下载"超级链接,可连接到中央电视台网页,进行节目下载。


单击"导入"按钮,产生clicked事件,通过下面代码将电视节目导入数据库。

string s_path,s_file,s_line //路径名,文件名,文件行

string s_rq,s_xq,s_pd,s_sj,s_jm //日期,星期,频道,时间,节目

integer i_fn,i_code //文件代号,返回码

getfileopenname("选择目录与文件",s_path,s_file,"TXT","文本文件(*.TXT),*.TXT")

s_pd=left(s_file,pos(s_file,".")-1) //文件名即为"频道"名

i_fn = FileOpen(s_path,LineMode!, Read!, LockRead!) //打开文件

i_code=FileRead(i_fn,s_line) //读一行

DO while i_code<>-100 //文件未结束,循环

IF i_code>0 THEN //不为空行

IF pos(s_line,"/")>0 and pos(s_line,"星期")>0 THEN //标题行

s_rq=left(s_line,8) //取得"日期"和"星期"

s_xq=mid(s_line,pos(s_line,"星期"),6)

ELSE

s_sj=left(s_line,5) //取得"时间"和"节目"

s_jm=mid(s_line,7,80)

INSERT INTO "tv_tab" ("rq","xq","pd","sj","jm") //插入记录

VALUES (:s_rq,:s_xq,:s_pd,:s_sj,:s_jm );

END IF

END IF

i_code=FileRead(i_fn,s_line) //读一行

LOOP

FileClose(i_fn) //关闭文件

该程序段用getfileopenname选择节目时间表目录与文件(TXT文件),取出文件名作为"频道"名,打开文件并按行读取,从标题行中取得"日期"和"星期",从其它行中取得"时间"和"节目",形成记录插入数据库的tv_tab表。

四、任意查询的实现

电视节目导入数据库的tv_tab表后,可进行任意查询。

1.建立数据窗口对象d_jmll(节目浏览),网格式,按pd(频道)、rq(日期)、sj(时间)排序。

2.将第一个标签页上的数据窗口空件dw_1与d_jmll挂接。


3.相关控件:

ddlb_1的Items属性为"星期一、星期二、…、星期日"。ddlb_2的Items属性为各频道名称。sle_jm用来输入要查询的电视节目名(可以是一部分)。em_1(起始时间)和em_2(截止时间)的值受控于水平滚动条htb_1和htb_2,用来指定节目的播出时间。

4."查询"按钮clicked代码

如果Tab_1.SelectedTab=1(选中第一标签页),则执行下列代码,将满足条件的记录显示在数据窗口控件dw_1中。

string jstj1 //条件表达式变量

jstj1="" //形成条件表达式

IF len(trim(ddlb_1.text))>0 THEN //第一部分(星期)

jstj1="pos(xq,trim('"+ddlb_1.text+"'))>0"

END IF

IF len(trim(ddlb_2.text))>0 THEN //第二部分(频道)

IF len(jstj1)>0 THEN

jstj1=jstj1+"and pos(pd,trim('"+ddlb_2.text+"'))>0"

ELSE

jstj1="pos(pd,trim('"+ddlb_2.text+"'))>0"

END IF

END IF

IF len(trim(sle_jm.text))>0 THEN //第三部分(节目)

IF len(jstj1)>0 THEN

jstj1=jstj1+"and pos(jm,trim('"+sle_jm.text+"'))>0"

ELSE

jstj1="pos(jm,trim('"+sle_jm.text+"'))>0"

END IF

END IF

IF len(jstj1)>0 THEN //第四部分(起止时间)

jstj1=jstj1+"and sj>='"+em_1.text+"' and sj<='"+em_2.text+"'"

ELSE

jstj1="sj>='"+em_1.text+"' and sj<='"+em_2.text+"'"

END IF tab_1.

tabpage_1.dw_1.SetFilter(jstj1) //显示查询结果

tab_1.tabpage_1.dw

[1] [2] 下一页

  • 上一篇教程: PB7.0通用全字段查询技术的实现
  • 下一篇教程: PB7.0通用选字段查询窗口的设计
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.