Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

返回列表 發(fā)新帖
查看: 16346|回復(fù): 4
打印 上一主題 下一主題

[ADO/DAO] 【新手入門(mén)】之十二:淺談ADO之Connection

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2014-11-12 10:29:39 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
       ADO有五個(gè)子集。分別是Connection(連接)、Command(命令)、Recordset(記錄集)、Record(記錄)和Stream(數(shù)據(jù)流)。
現(xiàn)在,開(kāi)始談?wù)勥B接對(duì)象。
       連接對(duì)象為用戶定義數(shù)據(jù)源的會(huì)話,用于建立起數(shù)據(jù)源與當(dāng)前程序之間的鏈接。這些數(shù)據(jù)源包括多種類(lèi)型,例如SQL Server、Access、Oracle,甚至Excel數(shù)據(jù)表和文本文件等等。
       前期綁定(即引用ADO庫(kù))后,在當(dāng)前數(shù)據(jù)庫(kù)中,我們可以用CurrentProject.Connection來(lái)建立數(shù)據(jù)連接。事實(shí)上,我們常常都是把這一句作為打開(kāi)記錄集的一個(gè)參數(shù)來(lái)用的。例如,Rst.Open strSQL, CurrentProject.Connection,adOpenKeyset,AdLockOptimistic
       但是使用外部數(shù)據(jù)庫(kù)時(shí)就不能使用這個(gè)方法,而必須使用常規(guī)方法了。通?梢酝ㄟ^(guò)下面的方法來(lái)創(chuàng)建一個(gè)連接:
  1. Dim cnn As ADODB.Connection
  2. Set cnn=New ADODB.Connection
復(fù)制代碼
       或者用New關(guān)鍵字來(lái)創(chuàng)建一個(gè)連接:
  1. Dim cnn As New ADODB.Connection
復(fù)制代碼
        雖然不建議后期綁定,這里還是給出所對(duì)應(yīng)的后期綁定語(yǔ)句:

  1. Dim cnn As Object
  2. Set cnn=CreateObject(“ADODB.Connection”)
復(fù)制代碼
       建立好連接之后,還需要為連接指定相應(yīng)屬性:引擎提供者,數(shù)據(jù)源位置,數(shù)據(jù)類(lèi)型,用戶ID和密碼(這一點(diǎn)在安全性更高的SQLServer中最為常用)。例如:
  1. Cnn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=E:\myExcel.xls”
復(fù)制代碼
       上述語(yǔ)句通過(guò)對(duì)一個(gè)2003版本Excel文件建立起數(shù)據(jù)連接。這一點(diǎn)可以用于建立不太規(guī)范的數(shù)據(jù)表!惶(guī)范的意思是說(shuō),與標(biāo)準(zhǔn)表相比,可能會(huì)存在一行“xx公司銷(xiāo)售報(bào)表”之類(lèi)的表頭,而不是說(shuō)字段可以數(shù)值文本混編,更不是說(shuō)字段名可以含有特殊字符。這類(lèi)數(shù)據(jù)表導(dǎo)入或者鏈接都不太方便。Access 2003版本有TransferSpreadsheet宏,可以指定Excel表范圍來(lái)導(dǎo)入或者鏈接表,不過(guò)到了2007版本以上,就只能編程了!凑覜](méi)找到過(guò)。說(shuō)到2007,順便說(shuō)一句,2007版本的Jet引擎已經(jīng)改為Microsoft.ACE..OLEDB.12.0了,對(duì)應(yīng)的2007版本Excel也成為 “Excel 12.0”了。也有人這樣寫(xiě),覺(jué)得這樣似乎更規(guī)整:
  1. Dim cnn As ADODB.Connection
  2. Set cnn = New ADODB.Connection
  3. With cn
  4.     .ConnectionString =”Extended Properties=Excel 8.0;Data Source=E:\myExcel.xls”
  5.   .Provider = " Microsoft.Jet.OLEDB.4.0"
  6. .Open
  7. End With
復(fù)制代碼
       更多連接字符串見(jiàn)下面鏈接:
       建立好連接之后,便可以執(zhí)行命令了。例如,刪除表數(shù)據(jù):Cnn.Excecute “Delete * From MyTable”。從操作上來(lái)說(shuō),跟Docmd.RunSQL幾乎沒(méi)有太大區(qū)別,唯一的不同是,后者只能在Access里使用,而且執(zhí)行前會(huì)彈出警告框(設(shè)置了Setwarning屬性的除外)。
當(dāng)然,它也可以執(zhí)行選擇查詢。不過(guò),這往往很少單獨(dú)使用,而是與Recordset聯(lián)合起來(lái)使用。因?yàn)橹挥匈x值給記錄集了,我們才可以從中獲取所需信息。例如:
  1. Sub test()
  2. Dim rst As ADODB.Recordset
  3. Set rst = CurrentProject.Connection.Execute("select * from  MyTable")
  4. Debug.Print rst(0)
  5. End Sub
復(fù)制代碼
    據(jù)說(shuō),還可以通過(guò)開(kāi)始事務(wù)(BeginTrans)、提交事務(wù)(CommitTrans)和滾回事務(wù)(RollbackTrans)來(lái)處理記錄,之前在《Access 2007數(shù)據(jù)分析cookbook 中文版》里見(jiàn)過(guò)例子。但遺憾的是,幫助文件里給的例子是在SQL Server里實(shí)現(xiàn)的,而我的目前手頭上沒(méi)有示例,測(cè)試幾次都沒(méi)成功。
【新手入門(mén)】之一:If分支語(yǔ)句
【新手入門(mén)】之二:分支語(yǔ)句總結(jié)
【新手入門(mén)】之三:循環(huán)語(yǔ)句For
【新手入門(mén)】之四:循環(huán)語(yǔ)句Do和死循環(huán)
【新手入門(mén)】之五:公共變量與傳址過(guò)程、傳值過(guò)程
【新手入門(mén)】之六:“悲歡離合總無(wú)情”——淺談Split和Join
【新手入門(mén)】之七:嵌套與并列——再談If流程問(wèn)題
【新手入門(mén)】之八:“連就連”——淺談“&”和“+”連接符的區(qū)別

【新手入門(mén)】之九:從百錢(qián)百雞談起——淺談“規(guī)劃求解”兼答lingjiang問(wèn)
【新手入門(mén)】之十:書(shū)到用時(shí)方恨少——自定義菜單(Access 2003)的制作
【新手入門(mén)】之十一:淺談ADO之序言
【新手入門(mén)】之十二:淺談ADO之Connection
【新手入門(mén)】之十三:淺談ADO之Conmmand(上)
【新手入門(mén)】之十四:淺談ADO之Command(下)
【新手入門(mén)】之十五:淺談ADO之Recordset(上)
【新手入門(mén)】之十六:淺談ADO之Recordset(下)
【新手入門(mén)】之十七:淺談列表框的使用
【新手入門(mén)】之十八:雙擊列表框修改數(shù)據(jù)
【新手入門(mén)】之十九:從“書(shū)與女友恕不外借”談起——淺談“Bookmark”的使用
【新手入門(mén)】之二十:“書(shū)與書(shū)簽”——bookmark屬性答疑
【新手入門(mén)】之二十一:記錄集的“凌遲”——逐條導(dǎo)出記錄集

【新手進(jìn)階】之一:基礎(chǔ)算法(一)
【新手進(jìn)階】之二:基礎(chǔ)算法(二)
【新手進(jìn)階】之三:基礎(chǔ)算法(三)
【新手進(jìn)階】之四:基礎(chǔ)算法(四)
【新手進(jìn)階】之五:排序搜索(一)
【新手進(jìn)階】之六:排序搜索(二)
【新手進(jìn)階】之七:遞歸算法
【新手進(jìn)階】之八:冒泡排序
【新手進(jìn)階】之九:淺談不綁定數(shù)據(jù)源操作記錄
【新手進(jìn)階】之十:工作日的計(jì)算
【新手進(jìn)階】之十一:“庖丁解!焙汀凹o(jì)昌學(xué)射”——淺談表格式文本數(shù)據(jù)的導(dǎo)入
【新手進(jìn)階】之十二:從四腳騰空的奔馬談起——原來(lái)界面可以這樣設(shè)計(jì)
【新手進(jìn)階】之十三:Outlook風(fēng)格導(dǎo)航界面
【新手進(jìn)階】之十四:倉(cāng)庫(kù)管理系統(tǒng)

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖1 訂閱訂閱

點(diǎn)擊這里給我發(fā)消息

5#
發(fā)表于 2015-10-10 17:01:00 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

4#
發(fā)表于 2014-11-19 12:56:19 | 只看該作者
試了下,可以的
3#
 樓主| 發(fā)表于 2014-11-17 14:44:57 | 只看該作者
風(fēng)中漫步 發(fā)表于 2014-11-17 13:48
ACC不支持手工事務(wù)嗎?

沒(méi)測(cè)試成功。下次回家再找找那個(gè)示例測(cè)試下。
2#
發(fā)表于 2014-11-17 13:48:37 | 只看該作者
ACC不支持手工事務(wù)嗎?
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 07:43 , Processed in 0.092821 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表