VB COM基础讲座之创建第一个COM对象

原创 2004年11月02日 09:32:00
让我们直接来开始创建第一个真正的COM对象,它将被用于那些ActiveX程序中。

  具体步骤如下:
启动Visual Basic;

  我们将看到一个"New Project"对话框,其中有几个与ActiveX相关的选项图标。下面来解释一下:

  ActiveX DLL——创建一个包含类的.DLL程序,这是我们将要采用的选项;

  ActiveX EXE——创建一个包含类的.EXE程序,以后将讨论这个类型;

  ActiveX Control——添加一个工程,允许自己创建用于toolbox中的控件。这里不去讨论它。

  ActiveX Document EXE——创建一个基于Web页的.EXE程序,这里也不去讨论。

  ActiveX Document DLL——创建一个基于Web页的.DLL程序,由于与我们的主题甚远,所以自然也不去讨论它。
顺便说明一下,如果在工程列表中没有上述选项,那么你可能使用了Visual Basic的学习版。

  当然,在上述那么多选项中,我们真正感兴趣的是ActiveX DLLs和Active EXEs。等会再来讨论后一种,这里先看看第一种!

  选中"ActiveX DLL"项;

  单击[OK]按钮;

  这样,一个ActiveX DLL工程就建立好了。我们之所以创建ActiveX DLL是准备将它作为一个前端服务器,它基于Northwind数据库中的Customers表的(Northwind数据库是随Visual Basic一起发行的,位于VB98文件夹中)。

  这也就是说,我们后面一定会处理Customers信息,但那时我们仅仅需要对类的调用,而不想过多地停留在数据处理代码的纠缠中。

  当然,我们得首先创建这个类。虽然COM能使编程更容易一点,但这个类的构造还是比较困难的。尽管如此,在深入数据库之前,先来对ActiveX程序中的名称作一些修改。

  将类的Name属性改为"Customers";

  选择"Project"->"Project Properties"菜单,在弹出的对话框中,将工程名改为"Northwind";

  现在再来使类与数据库相连:

  选择"Project"->"References"菜单;

  在弹出的对话框中,选择"Microsoft ActiveX Data Objects 2.1 Library",单击[OK]按钮;该"引用"允许用户处理一个数据库,当然现在都使用COM对象来处理了。下面将围绕相应的记录集而展开:

  在我们的类中添加下列代码:

Dim rs As Recordset

  这是一个用于访问数据库的记录集对象。

  当然,当其他开始使用该类时,我们希望记录集对象能和数据库建立连接,而当类使用结束后,与数据库的连接能断开。基于这种思想,其代码如下:

  在代码窗口中,将Object组合框中当前的"(General)"项改为"Class";

  在右边的组合框中,确保当前项为"Initialize";

  代码窗口中将出现:

  Private Sub Class_Initialize()

  End Sub

  当类刚开始时,所有这里面的代码都会被执行,类似于表单中的Form_Load事件。

  在"Initialize"事件中键入下列代码:

  Set rs = New Recordset

  rs.ActiveConnection = "Provider=Microsoft." & _

             "Jet.OLEDB.4.0;Data Source=C:/Program Files/" & _

             "Microsoft Visual Studio/VB98/Nwind.mdb;" & _

             "Persist Security Info=False"

  rs.Open "select * from customers", , adOpenKeyset, adLockOptimistic

  这里不需要任何与该类相关的代码,它只是使用Visual Basic通用的ADO数据库处理代码,该类中的代码是用来如何与数据库建立连接的。

  需要说明的是,如果Northwind数据库Nwind.mdb不在C:/Program Files/Microsoft Visual Studio/VB98文件夹,那么必须将ActiveConnection字符串内容作适当修改!

  当类开始时,rs对象负责与数据库建立连接,但当类对象结束后或程序关闭它时,我们应该使该连接断开。

  编程时,我们使用Terminate事件,它与Form_Unload非常相似的。从名称来看,它们都有一个"n",但更相似的地方是当相应的对象关闭后,它们都会被激发。

  下面来加入数据库关闭的代码:

  从Object组合框中选择"Class",从Procedure组合框中选择"Terminate";

  在"Terminate"事件中,添加下列代码:

  rs.Close

  Set rs = Nothing

  这就是我们添加的又一段简单代码,它只是简单地关闭数据库,然后将rs设置为Nothing。这样,rs就会被有效删除。

  好了,本节就到这里。下一节中,我们将继续添加代码用来处理数据中的记录集。

HOW TO:避免“将COM对象与其基础RCW分开后不能再使用该对象”错误

Author:水如烟  出现这个情形,是在重写了Finalize并在里面含有调用Com对象的代码,同时在销毁对象前没有显式释放Com对象。解决的办法是,显式调用释放代码。如:Public Sub Qu...
  • lzmtw
  • lzmtw
  • 2006年12月20日 21:21
  • 5388

创建virtualboxclient com对象失败最简单有效的解决方案

右键VirtualBox的桌面快捷方式,选择属性 选到兼容性选项卡,勾选“以兼容模式运行这个程序” 下拉框选择Windows Server 2008 (Service Pack 1) 再勾选“以管理员...
  • danshenxiaobang
  • danshenxiaobang
  • 2017年06月06日 14:16
  • 893

COM对象的创建原理

笔者学习COM原理有一段时间了,但是在创建COM对象时一直使用的是智能指针,别的方式在网上也见过好几次,但是不明白其原理,所以也只是看看,现在想系统的学一下 COM原理,将原来大致浏览的内容重新看了...
  • dasgk
  • dasgk
  • 2013年07月05日 09:38
  • 1711

virtualbox创建com对象失败(解决方法)

virtualbox创建com对象失败(解决方法) 试过网上的好几个方法都不行,最后结合了两种办法才搞定。 方法一:(不能完全解决问题) ①对VirtualBox的图标点击右键->属性->兼容性; ②...
  • mingmingzhizhonging
  • mingmingzhizhonging
  • 2016年03月10日 14:09
  • 21815

获取com对象的所有属性和方法

package com.bovy.officehelper; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTException; ...
  • KimmKing
  • KimmKing
  • 2008年06月12日 15:00
  • 3496

COM 对象与其基础 RCW 分开后就不能再使用

在实现遍历工作空间下所有数据集以及数据类中遇到的错误,出错代码:  pDataset = pEnumDataset.Next();                 if (pDataset != ...
  • yh0503
  • yh0503
  • 2015年06月10日 17:45
  • 2174

VB语言COM组件开发GUID指定方法

一、背景          VS2010开发环境下,VB的开发许多代码可以自动的生成模板,节省大量开发时间。 二、方法    新建一个项目,选择Visual Basic\Window \ 类库,假设项...
  • zhouqt
  • zhouqt
  • 2016年05月24日 21:12
  • 1343

COM对象与其基础RCW分开后就不能再使用

RCW是一个.NET和COM之间的桥梁,上述错误就是在于COM那一段的陆地消失了,你再想走着这桥,系统就报错了, 这种问题多半是COM对象被意外销毁或者没有抛出异常就崩溃导致。  解决问...
  • wmg494005678
  • wmg494005678
  • 2013年02月18日 11:12
  • 14332

VB COM基础讲座之可重用性

  还记得我们是怎么将一个类添加到标准的Visual Basic工程中的?   是的,一流的COM体系的最大特点是其代码的可重用性。换句话说,如果用Visual Basic创建一个用于财务管理的类,那...
  • naive1010
  • naive1010
  • 2004年11月02日 09:08
  • 843

VirtualBox提示严重错误,创建 COM 对象失败的问题

这个问题出现在我启动VitualBox的时候,由于最近在使用这个虚拟机,又由于磁盘空间不足导致了虚拟机宕掉,清理空间再次启动后出现该错误,不多说,直接上问题解决方法,希望能帮助到遇到同样问题的朋友。一...
  • Alvin_CSDN_blog
  • Alvin_CSDN_blog
  • 2017年03月14日 12:13
  • 1563
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB COM基础讲座之创建第一个COM对象
举报原因:
原因补充:

(最多只允许输入30个字)