會(huì)員登錄 - 用戶注冊(cè) - 網(wǎng)站地圖 Office中國(guó)(office-cn.net),專(zhuān)業(yè)Office論壇
當(dāng)前位置:主頁(yè) > 技巧 > Excel技巧 > 編程 > 正文

在EXCEL2000中用直接從數(shù)據(jù)庫(kù)取數(shù)據(jù)的方法二種

時(shí)間:2004-09-25 15:40 來(lái)源:本站原創(chuàng) 作者:tanjh 閱讀:

一些EXCEL愛(ài)好者喜歡引用ADO或DAO庫(kù)去訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),這就需要EXCEL使用者具備一定的VBA常識(shí)與數(shù)據(jù)庫(kù)基礎(chǔ),F(xiàn)與不喜歡編程的EXCEL高級(jí)用戶分享兩種不用編程從數(shù)據(jù)庫(kù)取數(shù)的方法:

一、加載ODBC宏(OFFICE2000光盤(pán)有提供)后您就可以使用該函數(shù)了。語(yǔ)法及示例詳參《OFFICE2000幫助文檔》,全篇如下:

連接到外部數(shù)據(jù)源并運(yùn)行工作表中的查詢。然后,函數(shù) SQL.REQUEST 以數(shù)組形式返回結(jié)果,而不必運(yùn)行宏。如果該函數(shù)不存在,就必須安裝 Microsoft Excel 的 QDBC 加載宏(XLODBC.XLA)。

語(yǔ)法

SQL.REQUEST(connection_string,output_ref,driver_prompt,query_text,col_names_logical)

Connection_string   提供信息,如數(shù)據(jù)源名稱(chēng)、用戶標(biāo)識(shí)和口令等。這些信息對(duì)于連接數(shù)據(jù)源的驅(qū)動(dòng)程序是必需的,同時(shí)它們必須滿足驅(qū)動(dòng)程序的格式要求。下表給出用于 3 個(gè)不同驅(qū)動(dòng)程序的 3 個(gè)連接串的示例。

驅(qū)動(dòng)器 連接串
dBASE DSN=NWind;PWD=test
SQL Server DSN=MyServer;UID=dbayer; PWD=123;Database=Pubs
ORACLE DNS=My Oracle Data Source;DBQ=MYSER VER;UID=JohnS;PWD=Sesame

  • 在試圖連接到數(shù)據(jù)源之前,必須定義在 connection_string 中使用的數(shù)據(jù)源名稱(chēng)(DSN)。

  • 可以以數(shù)組或字符串的形式輸入 connection_string。但如果 connection_string 超過(guò) 250 個(gè)字符,必須按數(shù)組的形式輸入。

  • 如果函數(shù) SQL.REQUEST 不能使用 connection_string 訪問(wèn)數(shù)據(jù)源,則返回錯(cuò)誤值 #N/A。

Output_ref   對(duì)用于存放完整的連接字符串的單元格的引用。如果在工作表中輸入函數(shù) SQL.REQUEST,可以忽略 output_ref。

  • 當(dāng)需要函數(shù) SQL.REQUEST 返回完整的連接串時(shí),可以使用 output_ref(此種情況下,必須在宏表中輸入函數(shù) SQL.REQUEST)。

  • 如果省略 output_ref,函數(shù) SQL.REQUEST 不能返回完整的連接串。

Driver_prompt   指定驅(qū)動(dòng)程序?qū)υ捒虻娘@示時(shí)機(jī)以及可用的選項(xiàng)?梢允褂孟卤碇兴枋龅臄(shù)字來(lái)描述 driver_prompt。如果省略 driver_prompt,函數(shù) SQL.REQUEST 默認(rèn)為 2 。

Driver_prompt 說(shuō)明
1 一直顯示驅(qū)動(dòng)程序?qū)υ捒颉?/TD>
2 只有在連接串和數(shù)據(jù)源說(shuō)明提供的信息不夠充分,以致不能完成連接時(shí),才顯示驅(qū)動(dòng)程序?qū)υ捒。所有?duì)話框選項(xiàng)都可使用。
3 只有在連接串和數(shù)據(jù)源說(shuō)明提供的信息不夠充分,以致不能完成連接時(shí),才顯示驅(qū)動(dòng)程序?qū)υ捒。如果未指明?duì)話框選項(xiàng)是必需的,這些選項(xiàng)是暗的,不能使用。
4 不顯示對(duì)話框。如果連接不成功,則返回錯(cuò)誤值。

Query_text   需要在數(shù)據(jù)源中執(zhí)行的 SQL 語(yǔ)句。

  • 如果函數(shù) SQL.REQUEST 不能在指定的數(shù)據(jù)源中執(zhí)行 query_text,則返回錯(cuò)誤值 #N/A 。

  • 可以將引用連接到 query_text 上來(lái)更新查詢。在下面的例子中,每次 $A$3 改變,函數(shù) SQL.REQUEST 使用新的數(shù)值來(lái)更新查詢。

    "SELECT Name FROM Customers WHERE Balance > "&$A$3&"".

    Microsoft Excel 將串長(zhǎng)度限制在 255 個(gè)字符內(nèi)。如果 query_text 超過(guò)此長(zhǎng)度,請(qǐng)?jiān)诖怪眴卧駞^(qū)域中輸入查詢并使用整個(gè)區(qū)域作為 query_text。所有單元格的值連接在一起,形成完整的 SQL 語(yǔ)句。

Column_names_logical   指明是否將列名作為結(jié)果的第一行返回。如果要將列名作為結(jié)果的第一行返回,請(qǐng)將該參數(shù)設(shè)置為 TRUE。如果不需要將列名返回,則用 FALSE。如果省略 column_names_logical,則函數(shù) SQL.REQUEST 不返回列名。

返回值

  • 如果此函數(shù)完成了它的所有功能,則返回查詢結(jié)果數(shù)組或受查詢影響的行數(shù)。

  • 如果函數(shù) SQL.REQUEST 不能使用 connection_string 訪問(wèn)數(shù)據(jù)源,則返回錯(cuò)誤值 #N/A。

說(shuō)明

  • 函數(shù) SQL.REQUEST 可以以數(shù)組的形式輸入。如果以數(shù)組形式輸入函數(shù) SQL.REQUEST,該函數(shù)將返回一個(gè)恰好填充選定區(qū)域的數(shù)組。

  • 如果單元格區(qū)域大于結(jié)果集,函數(shù) SQL.REQUEST 向返回的數(shù)組添加空單元格,直至增加到所需要的大小。

  • 如果結(jié)果集大于以數(shù)組形式選定的輸入?yún)^(qū)域,函數(shù) SQL.REQUEST 返回整個(gè)數(shù)組。

  • 函數(shù) SQL.REQUEST 參數(shù)的次序與 Visual Basic for Application 中函數(shù) SQLRequest 的參數(shù)次序不同。

示例

假設(shè)需要對(duì)名為 DBASE4 的 DBASE 數(shù)據(jù)庫(kù)進(jìn)行查詢。如果在單元格中輸入下列公式,將會(huì)返回查詢結(jié)果數(shù)組,其中第一行是列名:

SQL.REQUEST("DSN=NWind;DBQ=c:\msquery;FIL=dBASE4", c15, 2, 
"Select Custmr_ID, Due_Date from Orders WHERE order_Amt>100", TRUE)
二、用“數(shù)據(jù)”菜單上的“獲取外部數(shù)據(jù)”-“新建數(shù)據(jù)庫(kù)查詢”向?qū)Й@取數(shù)據(jù)庫(kù)數(shù)據(jù)。
用該向?qū)〉脭?shù)據(jù)后,以后該工作表的數(shù)據(jù)以后會(huì)隨數(shù)據(jù)動(dòng)態(tài)更新(在不移動(dòng)數(shù)據(jù)源文件的前提下)。
注意:請(qǐng)仔細(xì)設(shè)置外部數(shù)據(jù)表的屬性,會(huì)有更多收獲。
 

(責(zé)任編輯:admin)

頂一下
(0)
0%
踩一下
(0)
0%
發(fā)表評(píng)論
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
評(píng)價(jià):