|
使用數(shù)據(jù)庫的優(yōu)勢與好處就不多講了。我們如何利用EXCEL的VBA代碼,有效地與SQL SERVER數(shù)據(jù)庫結合起來,實現(xiàn)菜鳥水平也可以達到高效利用數(shù)據(jù)庫呢?這關鍵的第一步就是,如果使EXCEL的VBA代碼,順利訪問SQL SERVER數(shù)據(jù)庫,然后就可以用普通的SQL語句讀寫數(shù)據(jù)庫中的數(shù)據(jù)了?,F(xiàn)在就我的編寫調試的實踐經(jīng)驗,談談我的個人體會。當然由于水平關系,存在表述錯誤也是在所難免的。 在連接數(shù)據(jù)庫前,首先要在菜單中“工程”—“引用”中選擇Microsoft ActiveX Data Objects 2.6 Library 和Microsoft ActiveX Data Objects Recordset 2.6 Library這兩個組件。 運用ADO對象模型的主要元素:Connection(連接)中的ConnectionString屬性進行連接, ConnectionString為可讀寫string類型,指定一個連接字符串,告訴ADO 如何連接數(shù)據(jù)庫。關于ADO的前期綁定和后期綁定,我這里就不多說了(以下舉例皆以cnn為連接對像表述)。 以下我們就以ConnectionString的寫法總結下可以很快掌握的連接方法: 第一種數(shù)據(jù)庫引擎表達式的寫法: cnn.ConnectionString = 'Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用戶名;Password =密碼;Data Source=服務器名或IP地址;Initial Catalog=數(shù)據(jù)庫名;Connection Timeout=5;' 上面的中文描述就是需要修改的地方,一般SQL SERVER的用戶名是sa,密碼就是在數(shù)據(jù)庫安裝時以sql server身份驗證時所設置的密碼,服務器名稱就是數(shù)據(jù)庫名稱,可以是ip地址,本機可以用127.0.0.1表示,局域網(wǎng)其他計算機可以用其ip地址填寫,然后改好數(shù)據(jù)庫的名稱,最后的Connection Timeout表示等待時間。一般只要端口號正常,局域網(wǎng)內計算機,應該在零點幾秒內就順利連接上了。 如果上面這種方法連接不上,很可能你的服務器端口號設置不正常,除了修改服務器的端口號設置以外,我們還有第二種方法: cnn.ConnectionString = 'Provider=SQL server native client 10.0;Server=服務器名或IP地址;Uid=用戶名;Pwd=密碼;Database=數(shù)據(jù)庫名;Connection Timeout=5;' 這中間的文字描述就不重復了,參數(shù)的表達式略有區(qū)別,最大的區(qū)別就在于使用了不同的連接引擎Provider=SQL server native client 10.0,經(jīng)過測試,就算檢查不到端口號,也能連上服務器中的數(shù)據(jù)庫。 現(xiàn)在說說第三種方法,建立無源數(shù)據(jù)庫連接: conn.ConnectionString='driver={sql server};server=服務器名或IP地址;uid=用戶名;pwd=密碼;Database=數(shù)據(jù)庫名' conn.ConnectionTimeout = 50 這其中的唯一不同的地方也是數(shù)據(jù)庫引擎的改變driver={sql server},其他參數(shù)的引用與第二種方法相似。也是經(jīng)過測試能正常使用的字符串表達式。無源數(shù)據(jù)庫連接則不用配置ODBC環(huán)境,可以省去手工設置DSN的麻煩,這種方法所編寫的軟件適應性廣,又符合專業(yè)軟件的要求。 當然,網(wǎng)上還有一種與此不同的方法,有源數(shù)據(jù)庫連接。有源連接就需要配置ODBC環(huán)境又要設置DSN,所以我也沒有哪個時間去測試了。好方法,有效的方法只要有一個就夠了。你說是不?做一個窗體,試著編寫一段代碼,就能順利測試了,附一段測試連接數(shù)據(jù)庫的代碼: Public Sub ServerTest() Dim cnn As Object On Error GoTo Err1 '建立與SQL Server數(shù)據(jù)庫服務器的連接 Set cnn = CreateObject('ADODB.Connection') '建立無源數(shù)據(jù)庫連接 cnn.ConnectionString = 'driver={sql server};server=127.0.0.1;uid=sa;pwd=6799;Database=管理系統(tǒng)2018' cnn.ConnectionTimeout = 50 cnn.Open '判斷數(shù)據(jù)庫服務器連接是否成功 If cnn.State = 1 Then MsgBox '連接ok啦……' Err1: Set cnn = Nothing End Sub 最后我補充二個關于ADO連接ACCESS數(shù)據(jù)庫的連接引擎寫法: cnn.provider='Microsoft.Jet.OLEDB.4.0' '訪問2003版的用這個驅動 cnn.provider='Microsoft.ACE.OLEDB.12.0' '訪問2007版以上的用這個驅動 cnn.open ';Data Source=C:\test.mdb;Jet OLEDB:Database Password=' 這其中的哪些應改為什么,哪些是參數(shù),相信你一看就能明白吧?如有表述不當?shù)牡胤?,也請高抬貴手海涵。 |
|
|