2013-04-04 122 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