2013-04-04 95 views
3

我一直在使用微軟的查詢提到here創建參數查詢。但是,當我想傳遞參數給臨時變量和創建表變量和編輯他們得到的不是做10〜15連接和where子句中提到的參數我得到的錯誤參數傳遞給在MS查詢的臨時變量SQL Server上從Excel

[微軟] [期望的結果ODBC SQL Server驅動程序]無效的參數號

[微軟] [ODBC SQL Server驅動程序]無效的描述符索引

我的代碼看起來像這樣它與許多臨時表和臨時變量

BEGIN 
    SET NOCOUNT ON 

    DECLARE @sDate DATETIME, @eDate DATETIME; --used in many places to manipulate temp table 

    SET @sdate = ? 
    SET @edate = ? 

    DECLARE @Temptable TABLE (Variable1 INT ,...... VariableN DECIMAL(18,4)); 

    Manipulate @temptable 

    Select * from @Temptable 
END 

方式複雜,這怎麼可能將參數傳遞給臨時變量在Excel 2007中的SQL Server 2005數據庫?我沒有權限在數據庫中創建存儲過程,並將它們作爲參數傳遞給它。

UPDATE

我想通通過VBA的方式通過David Vandenbos的建議。我仍然很想知道這是否可以在沒有VBA的幫助下完成。

+2

+1,大的問題。不幸的是,我不認爲這可以通過MS Query在Excel中完成。查詢僅限於在可以「以圖形方式顯示」的查詢中傳遞參數,儘管您可以通過其他所有方法。你有權限在數據庫上創建視圖嗎?您可以創建一個視圖,然後使用參數將它們返回給Excel。否則,我認爲你可能需要VBA。 – dav 2013-04-05 12:43:49

+0

@DavidVandenbos我發現了一種通過VBA的方式。謝謝 – Ram 2013-04-09 21:11:30

回答

0

您可以在聲明變量之前添加SET NOCOUNT ON。我完全在Excel 2010中的Microsoft查詢和SQL Server 2005

SET NOCOUNT ON 
DECLARE @VAR1 VARCHAR(4) 
SET @VAR1 = '1234' 
SELECT @VAR1 

https://social.msdn.microsoft.com/Forums/office/en-US/d8003854-d11a-44f7-960c-a042347736d7/microsoft-query-cannot-run-sql-code-with-a-tsql-variables-in-it?forum=exceldev

+0

我已經在上面的問題的代碼中看到了'SET NOCOUNT ON'。它在Excel 2007中不起作用。 – Ram 2015-04-15 18:34:40