簡體   English   中英

來自ODBC的SQL查詢中的Excel參數“錯誤-使用問號“ WHERE XXX =?”時,沒有為一個或多個必需參數提供值

[英]Excel parameters from SQL Query from ODBC "Error - No Value given for one or more required parameters when using question mark `WHERE XXX = ?`

我有一個Excel文件,該文件具有與MS SQL服務器的SQLOLEDB連接,

當我通過Oracle鏈接執行此操作時,我可以簡單地將WHERE XXX = ? 在我的查詢中提示輸入Excel中的值,但是使用MSSQL時出現以下錯誤:

沒有為一個或多個必需參數給出值

嘗試將基本的Excel查詢從值參數化為?

如果我使用這樣的值,我會得到結果:

SELECT * 
FROM srv.stats
WHERE srv.stats.[year] = '2016'
AND srv.stats.[quarter] = '1'

當我添加參數時? 我收到上述錯誤。

SELECT * 
FROM srv.stats
WHERE srv.stats.[year] = ?
AND srv.stats.[quarter] = ?

我希望不使用VB就能做到這一點。

由於來自ODBC連接的MS SQL源在本質上不允許您使用WHERE xxx = ? SQL查詢中的代碼(與Oracle連接不同),您需要欺騙Excel以通過構建Microsoft Query然后覆蓋它來允許MS SQL數據源中的參數。

打開一個新的Excel文件,然后轉到“ Data標簽,選擇“ From Other Sources下拉菜單,然后選擇“ From Microsoft Query

在此處輸入圖片說明

將出現“ Choose Data Source窗口。 選擇一個現有數據源或通過選擇<New Data Source>來建立與服務器的新連接,然后單擊OK。

在此處輸入圖片說明

完成后,您將看到打開了查詢向導窗口以選擇表和列,因為稍后將要添加自己的SQL查詢時,只需選擇查詢中的一個表並將其添加到查詢中的Columns in your query:使用>按鈕。 對於接下來的2個窗口,只需單擊“ Next ,然后最后單擊Next Finish

在此處輸入圖片說明

然后,系統將提示您選擇要如何在“ Import Data窗口中查看數據,首先單擊“ Properties...按鈕。

在此處輸入圖片說明

然后,在“ Command text:框中的“ Definition選項卡上,您將具有一個SELECT語句,在此下方,您需要為實際查詢中的金額添加WHERE子句。 這些必須以以下格式添加:

WHERE 1 = ?
AND 2 = ?
AND 3 = ?

在此處輸入圖片說明

完成此操作后,單擊“確定”返回“導入數據”窗口並選擇您的輸出類型。 表,數據透視表報表或數據透視圖和數據透視表報表,取決於您要如何顯示數據。

然后將提示您為每個參數輸入一個值。 如果要從“單元格”中獲取這些值,請按照輸入實際參數的順序選擇它們的位置。 輸入參數源后,請返回“數據”選項卡,單擊“連接”,然后單擊“定義”選項卡。

現在,在“ Command text:框中,在您的實際SQL查詢中粘貼您的參數,並在WHERE子句= ?參數= ? 並以與您定義源相同的順序,然后單擊“確定”,您的數據現在應該像通常使用的參數那樣填充。

無法像在Access中一樣以直接的方式在SQL Server中直接提示輸入。 您可以像這樣將值傳遞給查詢。

DECLARE @year SMALLINT
SET @year = 2016

DECLARE @quarter TINYINT
SET @quarter = 1

SELECT * 
FROM srv.stats
WHERE srv.stats.[year] = @year
  AND srv.stats.[quarter] = @quarter;

然后,您只需要找到一種適合您的解決方案的方法(Excel?)即可通過這些方法。 例如,這可能采用存儲過程的形式。

CREATE PROCEDURE testProcedure @year SMALLINT, @quarter TINYINT
AS
    SELECT * 
    FROM srv.stats
    WHERE srv.stats.[year] = @year
      AND srv.stats.[quarter] = @quarter
GO;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM