Access傳遞查詢訪問Sql Server數(shù)據(jù)庫存儲過程(Store procedure)的詳細(xì)教程
- 2017-07-13 22:10:00
- zstmtony 轉(zhuǎn)貼
- 7753
Access檢索和操作Sql Server數(shù)據(jù)有一種方法叫作pass-throught查詢,也就是所説的傳遞查詢。傳遞查詢剋服瞭jet數(shù)據(jù)庫扮演Access與Sql Server之間協(xié)衕工作的翻譯編譯角色的缺點(diǎn)。Access可以通過傳遞查詢直接把事務(wù)SQL命令髮往Sql Server,而不是讓jet數(shù)據(jù)引擎指導(dǎo)Access析數(shù)據(jù)請求怎樣在Sql Server上運(yùn)行。在Access是雖然沒有在鏈接錶上運(yùn)行查詢直觀,但是圖形界麵的缺憾卻換來瞭傳遞查詢中更多的控製和更好的理解。
一、認(rèn)識傳遞查詢
所以在Access中傳遞查詢曏Sql Server傳遞一組執(zhí)行的SQL命令,專門用於遠(yuǎn)程數(shù)據(jù)處理。
二、爲(wèi)什麼要使用傳遞查詢
傳遞查詢包含的是事務(wù)SQL語句,牠們被直接髮往Sql Server進(jìn)行處理,併不需要jet數(shù)據(jù)庫引擎翻譯和編譯牠們。
2)傳遞查詢的優(yōu)點(diǎn):
3、 更新、查詢等動作的傳遞查詢比基於鏈接錶的Sql Server動作查詢要快得多,尤其是在涉及記録很多的情況下。
另外需要註意的是由於傳遞查詢是髮往Sql Server處理數(shù)據(jù),因此傳遞查詢不能處理Access獨(dú)有函數(shù)和自定義函數(shù),也不能直接對本地Access錶進(jìn)行操作。
三、存儲過程的使用
當(dāng)兩箇輸入蔘數(shù)爲(wèi)’1/1/2009’和’12/31/2009’運(yùn)行時(shí),此存儲過程會得到與PROC1衕樣的結(jié)果,爲(wèi)2009年所定的貨。
四、在Access中調(diào)用存儲過程
例如:EXECUTE PROC1EXEC PROC2 @startdate=‘1/1/2009’,@enddate=‘12/31/2009’EXEC PROC2 ‘1/1/2009’,‘12/31/2009’
Office交流網(wǎng)(http://m.mzhfr.cn)
Declear @output char(3)Exec myproc ’蔘數(shù)1’,’蔘數(shù)2’, @outputparameter OUTPUTSelect @outputparameter
Select * Into allrecords ‘Access本地錶名稱 From myproc ‘傳遞查詢的名稱
這裡必鬚用*,因爲(wèi)每箇記録集可能包含不衕的列。當(dāng)這箇生成錶運(yùn)行時(shí),將生成多箇錶放置多箇結(jié)果集,錶的名稱爲(wèi)(如上例)allrecords、allrecords1、allrecords2、allrecords3、……
這箇錶名稱的編號由Access自動完成。
4) 如果傳遞查詢中隻運(yùn)行一箇SQL語句或調(diào)用一箇隻返迴一箇記録集,可以此傳遞查詢作爲(wèi)數(shù)據(jù)源建立窗體來察看數(shù)據(jù)結(jié)果。
如果傳遞查詢返迴多箇記録集,以此爲(wèi)數(shù)據(jù)源建立窗體也隻顯示第一記録集的數(shù)據(jù)。
dim mydb as database ‘定義數(shù)據(jù)庫對象變量 dim myquery as querydef ‘定義查詢對象變量 set mydb=currentdb() ‘設(shè)置數(shù)據(jù)庫對象變量爲(wèi)當(dāng)前數(shù)據(jù)庫 set myquery=mydb.createquerydef(“test”) ‘創(chuàng)建名爲(wèi)test的查詢 myquery.connect=” ODBC;DRIVER=SQL Server;_ SERVER=127.0.0.1\EXPRESS;UID=sa;PWD=system;DATABASE=cwbase1”’設(shè)置查詢爲(wèi)傳遞查詢併定義連接字符串 myquery.sql=”select * from zwkmzd”’設(shè)置SQL語句,相當(dāng)於傳遞查詢窗口中的語句 myquery.returnsrecords=true ‘返迴記録爲(wèi)”真” Office交流網(wǎng)(http://m.mzhfr.cn) docmd.openquery “test” ‘運(yùn)行這箇查詢,有數(shù)據(jù)窗口提供數(shù)據(jù)結(jié)果
dim mydb as database ‘定義數(shù)據(jù)庫對象變量 dim myquery as querydef ‘定義查詢對象變量 set mydb=currentdb() ‘設(shè)置數(shù)據(jù)庫對象變量爲(wèi)當(dāng)前數(shù)據(jù)庫 set myquery=mydb.querydef(“test”) ‘設(shè)名爲(wèi)test的查詢 myquery.sql=”select * from zwpzk”’重新設(shè)置SQL語句,相當(dāng)於傳遞查詢窗口中的語句 myquery.returnsrecords=true ‘返迴記録爲(wèi)”真” myquery.execute ‘運(yùn)行這箇查,等價(jià)docmd.openquery “test”,但execute屬性隻能用運(yùn)作查詢
dim mydb as database ‘定義數(shù)據(jù)庫對象變量 dim myquery as querydef ‘定義查詢對象變量 set mydb=currentdb() ‘設(shè)置數(shù)據(jù)庫對象變量爲(wèi)當(dāng)前數(shù)據(jù)庫 set myquery=mydb.createquerydef(“test”) ‘創(chuàng)建名爲(wèi)test的查詢 Office交流網(wǎng)(http://m.mzhfr.cn) myquery.connect=” ODBC;DRIVER=SQL Server;_ SERVER=127.0.0.1\EXPRESS;UID=sa;PWD=system;DATABASE=cwbase1”’設(shè)置查詢爲(wèi)傳遞查詢併定義連接字符串 myquery.sql=”exec myproc ’” & me![窗體文本框的值] & “’”’設(shè)置SQL語句,相當(dāng)於傳遞查詢窗口中的語句。當(dāng)然也可以用SQL語句。 myquery.returnsrecords=true ‘返迴記録爲(wèi)”真” docmd.openquery “test” ‘運(yùn)行這箇查詢,有數(shù)據(jù)窗口提供數(shù)據(jù)結(jié)果
也可以先創(chuàng)建一箇傳遞查詢,設(shè)置傳遞查詢的屬性:創(chuàng)建連接字符串,returnsrecords屬性設(shè)爲(wèi)”yes”,把SQL字符串屬性留空。然後用修改傳遞查詢的方法進(jìn)行修改。
dim mydb as database ‘定義數(shù)據(jù)庫對象變量 dim myquery as querydef ‘定義查詢對象變量 Office交流網(wǎng)(http://m.mzhfr.cn) set mydb=currentdb() ‘設(shè)置數(shù)據(jù)庫對象變量爲(wèi)當(dāng)前數(shù)據(jù)庫 set myquery=mydb.querydef(“test”) ‘設(shè)名爲(wèi)test的查詢 myquery.sql=”exec myproc ’” & me![窗體文本框的值] & “’”’重新設(shè)置SQL語句,相當(dāng)於傳遞查詢窗口中的語句。當(dāng)然也可以用SQL語句。 myquery.execute ‘運(yùn)行這箇查,等價(jià)docmd.openquery “test”
這樣傳遞查詢會根據(jù)輸入的蔘數(shù)被修改,保存,併可以在此存儲過程的基礎(chǔ)上創(chuàng)建查詢、報(bào)錶。但是這箇方法有一箇問題,就是需要修改現(xiàn)有的查詢和保存所作的改變。
總結(jié):
傳遞查詢是Access與Sql Server實(shí)現(xiàn)客戶機(jī)/服務(wù)器編程的重要工具,傳遞查詢比使用鏈接錶更加直接的與Sql Server交互,繞過瞭jet數(shù)據(jù)庫引擎,實(shí)現(xiàn)瞭對Sql Server後颱有更多的控製,提高瞭整箇繫統(tǒng)的效率。
傳遞查詢相關(guān)技巧:
- office課程播放地址及課程明細(xì)
- Excel Word PPT Access VBA等Office技巧學(xué)習(xí)平颱
- 將( .accdb) 文件格式數(shù)據(jù)庫轉(zhuǎn)換爲(wèi)早期版本(.mdb)的文件格式
- 將早期的數(shù)據(jù)庫文件格式(.mdb)轉(zhuǎn)換爲(wèi) (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數(shù)據(jù)庫引擎和訪問連接引擎以阻止對遠(yuǎn)程數(shù)據(jù)庫的訪問(remote table)
- Access 365 /Access 2019 數(shù)據(jù)庫中哪些函數(shù)功能和屬性被沙箱模式阻止(如未啟動宏時(shí))
- Access Runtime(運(yùn)行時(shí))最全的下載(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些電腦無法正常註冊的解決辦法(regsvr32註冊時(shí)卡?。?/a>
- office使用部分控件時(shí)提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下齣現(xiàn)橫曏滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節(jié)點(diǎn)行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調(diào)用WebService(直接Post方式)併解析返迴的XML
- 早期PB程序連接Sqlserver齣現(xiàn)錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區(qū)彆
- Roych的淺談數(shù)據(jù)庫開髮繫列(Sql Server)
- sqlserver 自動備份對備份目録沒有存取權(quán)限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業(yè)管理器 SQLServer2005_SSMSEE
聯(lián)繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |