top
Loading...
VBCOM基礎講座之創建第一個COM對象
讓我們直接來開始創建第一個真正的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 StudioVB98Nwind.mdb;" & _

"Persist Security Info=False"

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

這里不需要任何與該類相關的代碼,它只是使用Visual Basic通用的ADO數據庫處理代碼,該類中的代碼是用來如何與數據庫建立連接的。

需要說明的是,如果Northwind數據庫Nwind.mdb不在C:Program FilesMicrosoft Visual StudioVB98文件夾,那么必須將ActiveConnection字符串內容作適當修改!

當類開始時,rs對象負責與數據庫建立連接,但當類對象結束后或程序關閉它時,我們應該使該連接斷開。

編程時,我們使用Terminate事件,它與Form_Unload非常相似的。從名稱來看,它們都有一個"n",但更相似的地方是當相應的對象關閉后,它們都會被激發。

下面來加入數據庫關閉的代碼:

從Object組合框中選擇"Class",從Procedure組合框中選擇"Terminate";

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

rs.Close

Set rs = Nothing

這就是我們添加的又一段簡單代碼,它只是簡單地關閉數據庫,然后將rs設置為Nothing。這樣,rs就會被有效刪除。

好了,本節就到這里。下一節中,我們將繼續添加代碼用來處理數據中的記錄集。


作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗