数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
PB编程经验谈

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

  PB作为数据库开发的工具,早已深受广大开发人员的认可,笔者在开发PB应用程序时,总结了一些编程的经验技巧,介绍给大家。

  1.添加启动声音

  对Win 98的启动声音一定不陌生吧,那么有没有想过为你的PB应用程序添加启动声音呢?使用Win32 API函数PlaySound很容易实现。方法是在“Global External Functions...”中添加如下函数声明:

  Function long PlaySound (String Filename,Int Mod,Int Flags ) Library ″winmm.dll″

  获得这个函数声明的最好的方法是使用Visual Basic中的“API Viewer”,只需把得到的结果改写成PB的格式,然后在Application的Open事件中添加如下代码:

  iRet=PlaySound(″C:\Program Files\Joint\Start.wav″,1,1)

  参数1指定启动声音文件,参数2指定播放模式,参数3指定播放标记。播放成功返回1,否则返回0。若因声音文件不存在等原因导致播放失败也不会产生错误提示,因此没有必要对返回值进行捕捉处理。

  2.使PB窗口居中

  在窗口属性的Position页中可以粗略地设置窗口的弹出位置。然而,你并不知道客户机的屏幕分辨率是多少(800×600还是1024×786),不如在Open事件中加入下列代码使其居中:

  GetEnvironment(Env)//获取客户机环境信息

  dy=(Pixelstounits(Env.ScreenHeight,YPixelsToUnits!)-this.Height)/2

  dx=(Pixelstounits(Env.ScreenWidth, XPixelsToUnits!)-this.Width)/2

  this.Move(dx,dy)

  //Env为Environment类型,dx,dy为Long类型3.使用ActiveX控件

  VB可以直接引用ActiveX控件,而PB只能通过“控件嵌套”的方法来引用。这种方法需要借助OLE容器。下面以Animation控件为例说明引用过程及约定。

  窗体设计时,选择OLE,在弹出的“Insert Object”对话框中选择“Insert Control”页,在Control Type下列出了系统中所有注册过的ActiveX控件,选择“Microsoft Animation Control”。对ActiveX控件的属性和方法的引用必须遵循“OLE控件.Object.属性(或方法)”的规则。如下代码通过调用Animation控件的属性和方法来自动播放一个视频剪辑:

  ole—1.Object.AutoPlay =True

  //设置为自动播放

  ole—1.Object.Open(″C:\Program Files\Joint\FireWork.avi″) //打开一个Avi文件

  若你的PB程序中使用了ActiveX控件,最好把相应的OCX文件与你的程序一起发布,并在安装程序中进行注册,因为客户机不一定注册了相应控件。注册的方法是用Regsvr32,若采用InstallShield来制作安装程序,也可以把所有要注册的OCX文件放到一个File Group中,然后将它的“Self-Registered”设置成Yes来自动注册。

  4.操纵LOB

  大对象(Large OBject)通常指大文本和大二进制对象,几乎每一种数据库都支持它。在PB中可以用UpdateBlob和SelectBlob语句来对它们进行处理。

  (1)用UpdateBlob来把大对象数据写入数据库

  在编写管理软件时,要求把员工的照片(Bmp文件)和工作经历(Doc文件)保存在数据库中,而不是像以前一样保存它们的文mpno=′9925′; //把图像数据写入数据库

  If SQLCA.SQLNRows〉0 Then Commit;

  End If

  注意,FileRead一次只能读取32K,若文件大于32K应分多次读取;UpdateBlob执行成功与否不能用SQLCode或SQLDBCode来判断,而要用SQLNRows是否大于0来判断。

  (2)用SelectBlob从数据库中读取大对象数据

  要查看员工的照片或工作经历,就应把相关信息从数据库中读出来。主要代码如下:

  Blob pic //把pic定义为二进制大对象(Binary large object)

  SelectBlob photo Into :pic From emp Where empno=′9925′;//把图像数据读到变量pic中

  p_1.SetPicture(pic) //用图像控件显示图像

  5.编译技巧

  (1)没有必要将pbl编译成机器码dll,即不要选择“Machine Code”。那样做意味着你至少要等待半个小时。编译成伪码pbd就行了。

  (2)把程序中用到的ico、bmp等文件打包到目标代码中。方法是:用记事本创建一个扩展名为pbr的资源文件,它的每一行是一个带完整路径的文件名,用于告诉编译器到何处去找用到的资源。

  (3)PB应用程序要独立运行,必须把Sybase\Shared下的几个共享库与你的程序一起发布,它们是:pbvm60.dll、pbodb60.dll、pbdwe60.dll。后台若使用MS SQL Server,还得带上pbmss60.dll;若使用Sybase SQL Anywhere,要带上pbo7360.dll;若使用Informix V7.x,要带上pbin760.dll。




相关文章

相关软件