在建设某公司内部信息网的过程中,涉及到大量的dbf文件直接转换为html文件的应用,其他的文件格式(excel,access,以及大型数据库的查询)也有这方面的要求,由此用pb实现了基于odbc查询的psr文件生成工具。
此生成器的原理是:
1、通过取出表的结构,
2、生成查询的sql语法,
3、syntaxfromsql()函数生成datawindow语法,
4、create()函数生成数据窗
5、将生成的数据窗进行修饰,包括增加对象、删除对象、修饰对象、布置对象等操作,进行数据窗的美化工作。
6、将生成的数据窗用saveas()函数另寸为 psr 文件。
7、在html页中使用插件方式或直接连接方式显示该psr文件。
在实现过程中,使用了数据窗函数modify()的各种语法来实现对数据窗的修饰,如加入线条,加入文本、改变格式、颜色等。可修饰的内容如下图:
该工具主要有以下特点:
1、自动化
对某些部门而言,需要处理的数据是动态变化的,如某销售公司,每天处理十几报表,报表的形式基本稳定,因此只需将更新后的数据拷贝到指定的位置,或在形成sql语法时加入一定的条件,即可实现自动化的报表处理。处理时,将需要的报表循环,自动设置odbc连接参数(用写注册表的方法),自动连接好数据库,打开报表对应的数据窗,检索记录,然后另存为预定的psr文件即可。
2、实用性
该工具特别针对查询而设计,可扩展到任何用odbc连接的数据源,只要该数据源支持标准sql查询即可。特别对于oa中或信息发布中需要将一些沿用已久fox系统下的dbf文件发布而言,所做工作只要在一次定义后,按几个按钮即可完成。 特别是在notes中只要将 psr 文件作为附件直接插入到文档中,在客户端定义好plugin,即可实现 web 发布。
【技术要点参考】
1、创建数据窗子对象
通过数据窗的modify()函数实现,语法:
dw_report.modify('create text(name=uc_text_001 x="10" y="20" width="300" ....')
通过对具体对象(static text,picture,rectangle,line,compute等)的属性赋值(注意括号的使用与匹配),如x,y,width,height,color,font,background.color,background.mode,expression,format等,即可实现对象的创建。创建对象时特别注意是加入 moveable=1 resizeable=1 语法,实际上是将对象设为可移动,可变大小,这对于对象的调整是比较重要的。
删除对象只需用如下语法:
dw_report.modify('destroy uc_text_001')
如何实现象pb开发环境下的创建对象的方式呢?
1、建立菜单(将bar的toolbar的object type 设为menucascade方式,item项为各可创建对象),
2、各菜单item的clicked event中写入:
parent.toolbaritemdown = false // 使该toolbaritem处于压下状态
mf_createobject('stop')
统一调用函数mf_create_object([对象类别]),[对象类别]可自定以好,如"text","line"等
3、mf_create_object函数如下(argument 为 string object_string)
window lw_sheet
lw_sheet = parentwindow.getactivesheet ()
if isvalid (lw_sheet) then
lw_sheet.triggerevent('ue_createobject',0,obj_string)
end if
该函数取得当前打开的sheet窗口lw_sheet,然后调用该窗口下的ue_createobject自定义事件。
4、在主窗口下,自定义ue_createobject事件,该事件主要响应如下:
string passedstring
passedstring = string(message.longparm, "address") // 取出创建类型
if isnull(passedstring) or passedstring = 'stop' then
m_main.m_objects.toolbaritemdown = false
ib_creatingobject = false
return
end if
ib_creatingobject = true // 等待dw_report的click事件来触发
is_objectstring = passedstring // 告知当前触发对象
5、在dw_report的clicked事件中,写入以下语法:
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器