SQL.REQUEST 函數

本文將說明 Excel 中 SQL.REQUEST 函數的公式語法及使用方式。

重要: 

  • 從 Excel 2010 開始,「取得及轉換 (Power Query)」體驗為從外部資料來源匯入資料提供了增強功能,並有效地取代了 SQL.REQUEST 函數。

  • SQL.REQUEST 函數在 Microsoft Excel 2007 之後便不受支援。

  • 本主題中有部分內容可能不適用於某些語系。

描述

SQL.REQUEST 函數與外部資料來源連接,並在工作表中執行查詢。它不需巨集,即可將結果以陣列傳回。如果這個函數無法使用,您必須安裝 Microsoft Excel ODBC 增益集 (XLODBC.XLA)。

語法

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

SQL.REQUEST 函數語法具有下列引數:

  • Connection_string     必要。這是提供要用來連接到資料來源之驅動程式所需的資訊,例如資料來源名稱、使用者識別碼及密碼,並且必須遵循驅動程式規定的格式。下表提供三個驅動程式的三個連接字串範例。

驅動程式

Connection_string

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

  • 在嘗試與資料來源連接之前,必須先定義它在 connection_string 中所要使用的名稱 (DSN)。

  • 您可以用陣列或字串方式輸入 connection_string。如果 connection_string 超過 250 個字元,就必須以陣列方式輸入。

  • 如果 SQL.REQUEST 用 connection_string 無法存取到資料來源的話,則傳回錯誤值 #N/A。

  • Output_ref     選用。這是完成的連接字串所要放置的儲存格參照。如果您在工作表中輸入 SQL.REQUEST,則會忽略 output_ref。

    • 如果要 SQL.REQUEST 傳回完成連接字串,請使用 output_ref (在此情形下,SQL.REQUEST 必須是在巨集工作表上)。

    • 如果省略了 output_ref,則 SQL.REQUEST 不會傳回完成的連接字串。

  • Driver_prompt     選用。指定何時顯示驅動程式對話方塊,以及可用的選項有哪些。使用下表中所述的其中一個數值。如果省略 driver_prompt,SQL.REQUEST 會使用 2 做為預設值。

Driver_prompt

描述

1

永遠顯示 [驅動程式] 對話方塊。

2

只有當連接字串所提供的資訊及資料來源的規格仍無法完成連線時,才顯示 [驅動程式] 對話方塊。所有對話方塊選項皆可使用。

3

只有當連接字串所提供的資訊及資料來源的規格仍無法完成連線時,才顯示 [驅動程式] 對話方塊。如果對話方塊選項是不必要的,就會變成灰色而無法使用。

4

不顯示 [驅動程式] 對話方塊。如果連線失敗,它會傳回錯誤。

  • Query_text     選用。這是要對資料來源執行的 SQL 陳述式。

    • 如果 SQL.REQUEST 在指定的資料來源上無法執行 query_text,則傳回錯誤值 #N/A。

    • 您可以將參照串連至 query_text 中,藉以更新查詢。在下列範例中,每當 $A$3 發生變更,SQL.REQUEST 便會使用新值來更新查詢。

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

Microsoft Excel 限制字串長度不能超過 255 個字元。如果 query_text 超過這個長度,可把查詢輸入垂直範圍的儲存格中,然後用整個範圍做為 query_text。儲存格的值會串連起來而形成完整的 SQL 陳述式。

  • Column_names_logical     選用。指出是否要將欄名傳回成結果的第一列。如果希望將欄名傳回成結果的第一列,請將此引數設定為 TRUE。如果不想要傳回欄名,請使用 FALSE。如果省略 column_names_logical,SQL.REQUEST 就不會傳回欄名。

傳回值

  • 此函數完成所有的動作後,會傳回一個陣列的查詢結果,或是被查詢影響到的列號。

  • 如果 SQL.REQUEST 無法使用 connection_string 來存取資料來源,則傳回錯誤值 #N/A。

註解

  • SQL.REQUEST 可以用陣列方式輸入。將 SQL.REQUEST 以陣列輸入時,它會配合該範圍傳回陣列。

  • 如果儲存格範圍比結果大,則 SQL.REQUEST 會在傳回的陣列裏加入空白儲存格,以將範圍擴大到所需的大小。

  • 如果結果比輸入的範圍陣列大,則 SQL.REQUEST 會傳回整個陣列。

  • SQL.REQUEST 引數的次序與 Visual Basic for Applications 的 SQLREQUEST 函數不同。

範例

假設您想查詢名為 DBASE4 的 dBASE 資料庫。若您將下列公式輸入儲存格,會傳回查詢結果的陣列,並且第一列會是欄名:

SQL.REQUEST("DSN=NWind;DBQ=c:\msquery;FIL=dBASE4", c15, 2, "Select Custmr_ID, Due_Date from Orders WHERE order_Amt>100", TRUE)

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×