VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 优化OLE的调用频率
发表评论(0)作者:, 平台:, 阅读:16381, 日期:2000-03-12
优化OLE的调用频率


?在VB5.0中,OLE调用功能大大增强,程序员的调用次数也自然地随之增加,显然,

优化OLE的调用对提高系统效率

有着不可低估的意义。下面提供三则优化OLE调用技巧供参考。


?1.预先定义专用对象,减少OLE调用次数,提高程序效率

在VB中进行OLE功能调用时,一般需要重复使用“对象、属性”这类语句,有时连

接对象很多,语句较长。比如,

要想获得某个数据库中数据表字段名称的OLE功能调用语句可能这样:

DBEngine,Workspaces(0).DataBases(0).RecordSet.Fields(0).Name

上面语句中的每个点(.)都需要进行一次OLE功能调用。如果我们想列出所有的字段

名称,一般情况下程序如下:

ForI%=0ToDBEngine.WorkSpaces(0).Database.RecordSet.Fields.Count-1

PrintDBEngine.WorkSpaces(0).Database.RecordSet.Fields(I%).Name

Next

上面这段程序用循环的方式将所有字段名称列出来,每一个循环需要有10次OLE调

用(10个点),假设有10个字段,

则完成这个循环需要进行100次OLE调用。从上面的程序中我们可以看到OLE调用语

句的前面部分对象都是一样的,

我们可以考虑将其预先定义好,这样就可以减少OLE调用次数,提高效率,将程序

改写如下:

DimDBAsDatabase

DimSAsFields

DimFAsField

SetDB=DBEngine.Workspaces(0).OpenDatabase("biblio.mdb")

SetX=DBEngine.Workspaces(0).Databases(0).TableDefs(0).Fields

ForEachFInX

PrintF.Name

Next

改写后的程序在完成定义对象时使用6次OLE调用,循环过程需要10次(10×1),完

成整个任务只需要16次,

和上面的程序比起来效率大大提高了。

 

?2.利用WITH语句来减少OLE调用次数

比如,我们通过OLE功能定义某个字段的属性语句可能这样:

DBEngine.WorkSpaces(0).Database.RecordSet.Fields(0).Name="Book"

DBEngine.WorkSpaces(0).Database.RecordSet.Fields(0).Required=True

DBEngine.WorkSpaces(0).Database.RecordSet.Fields(0).Size=20

DBEngine.WorkSpaces(0).Database.RecordSet.Fields(0).Type=db Text

DBEngine.WorkSpaces(0).Database.RecordSet.Fields(0).Value="MSDOS"

上面的语句运行效率不高,且书写繁琐,利用WITH语句改写如下:

WithDBEngine.WorkSpaces(0)

.Database.RecordSet.Fields(0)

.Name="BOOK"

.Required=True

.Size=20

.Type=dbText

.Value="MSDOS"

EndWith

改写后的程序书写简单、效率也高(OLE调用次数少)。

 

3.利用服务方程序的宏来减少OLE功能调用次数

如果要从VB中通过OLE调用WORD中的某些功能来完成某项任务,首先在WORD中将所

要使用的功能用记录宏

的方式记录成一个宏(根据实际情况可修改记录后的宏代码),然后再用VB的OLE功

能调用WORD来执行这个宏,

这样可避免反复用VB的OLE功能调用WORD来完成任务,简化了程序,提高了效率。