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對象來處理了。下面將圍繞相應的記錄集而展開:
在我們的類中添加下列代碼:
這是一個用于訪問數據庫的記錄集對象。
當然,當其他開始使用該類時,我們希望記錄集對象能和數據庫建立連接,而當類使用結束后,與數據庫的連接能斷開。基于這種思想,其代碼如下:
在代碼窗口中,將Object組合框中當前的"(General)"項改為"Class";
在右邊的組合框中,確保當前項為"Initialize";
代碼窗口中將出現:
當類剛開始時,所有這里面的代碼都會被執行,類似于表單中的Form_Load事件。
在"Initialize"事件中鍵入下列代碼:
這里不需要任何與該類相關的代碼,它只是使用Visual Basic通用的ADO數據庫處理代碼,該類中的代碼是用來如何與數據庫建立連接的。
需要說明的是,如果Northwind數據庫Nwind.mdb不在C:Program FilesMicrosoft Visual StudioVB98文件夾,那么必須將ActiveConnection字符串內容作適當修改!
當類開始時,rs對象負責與數據庫建立連接,但當類對象結束后或程序關閉它時,我們應該使該連接斷開。
編程時,我們使用Terminate事件,它與Form_Unload非常相似的。從名稱來看,它們都有一個"n",但更相似的地方是當相應的對象關閉后,它們都會被激發。
下面來加入數據庫關閉的代碼:
從Object組合框中選擇"Class",從Procedure組合框中選擇"Terminate";
在"Terminate"事件中,添加下列代碼:
這就是我們添加的又一段簡單代碼,它只是簡單地關閉數據庫,然后將rs設置為Nothing。這樣,rs就會被有效刪除。
好了,本節就到這里。下一節中,我們將繼續添加代碼用來處理數據中的記錄集。
具體步驟如下:
我們將看到一個"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就會被有效刪除。
好了,本節就到這里。下一節中,我們將繼續添加代碼用來處理數據中的記錄集。