Tag: ms query

如何使Excel从工作表的查询表中可靠地执行sp_executesql?

在MS Excel中,如果使用Microsoft Query创build一个QueryTable,并且您的SQL查询不能通过Microsoft Query进行可视化呈现,则不允许为该查询提供参数。 这是一个耻辱,所以有这个令人敬畏的技术 ,无论如何允许参数: {CALL sp_executesql (N'select top (@a) * from mytable', N'@a int', ?)} 您在ODBC CALL窗体中提供查询,并且它可以使用参数。 除非没有。 在某些计算机上,它完美地工作,在其他计算机上Excel尝试刷新查询表时引发错误: 对于SQL Native Client 10: Invalid parameter number 对于SQL Native Client 11: Procedure or function sp_executesql has too many arguments specified. 使用一个分析器,我可以看到Excel(实际上,当被Excel戳时,本地客户端)在执行sp_executesql之前执行此操作: exec sp_describe_undeclared_parameters N' EXEC sp_executesql N''<actual query>;'',N''<declared parameters>'',@P1 ' 这里@p1是稍后应该转到sp_executesql的参数占位符,这就是sp_describe_undeclared_parameters失败的地方。 它不指望sp_executesql任何自定义参数 – 只有两个固有参数, […]

MS查询与各种多个值参数

我有以下问题: 我在Excel中有5个多select列表框。 每个列表框的选定内容都写在一个单元格中,用逗号分隔。 例如在单元格A1中,所有选中的名字:Tim,Miranda,Laura 这些单元格是访问查询(where子句)的标准。 我打开MS Query并将下面的where子句添加到查询并定义参数: Where (Instr(?, [name])>0 And Instr(?, [number])>0 And Instr(?, [city])>0 And Instr(?, [phone])>0 And Instr(?, [email])>0) 它工作得很好,但是如果其中一个参数字段是空的 (例如用户没有select任何城市), 则查询将返回所有的行 ,其中城市是空的,而不是在这种情况下忽略该子句。 你可以帮我吗? 我不知道如何解决这个问题…也许有另一种解决scheme使用VBA和dynamicSQL。 不幸的是,我不知道如何实现这个… 注意:我必须使用Excel作为列表框而不是访问公式,因为工具也应该被没有访问数据库的人使用。 非常感谢! 伊丽莎白

在Excel 2010中使用MS Query从SQL Server获取数据使用参数 – 在两个date之间使用复杂查询

我尝试使用Excel中提到的解决scheme:使用单元格值作为SQL查询的参数,以及如何将参数添加到Excel中无法以graphics方式显示的外部数据查询? 。 但是,我无法获得任何解决scheme。 以下是我遇到的问题。 查询中有多个表。 我在“连接属性”窗口的“定义”选项卡的“命令”文本中粘贴了SQL。 当我input下面的date时,我没有任何问题。 但是,当我用问号replacedate时,我收到有关从string中转换date和/或时间的消息。 如果我这样做,并排除引号,我得到一个关于无效的参数号码的消息。 我想我应该尝试编程更新连接文件,因为我无法弄清楚如何达到我想要的任何其他方式。 AND CAST(EXITED_FROM_ACTIVITY_DATE AS DATE) BETWEEN '2014-12-01' AND '2014-12-01'

Excel 2007 / MS Query使用1个表来过滤另一个部分匹配

我有一张物料清单(物料清单)。 客户发给我一个零件清单,我想让Excel过滤表格以显示那些boms,但是我们的零件编号包含REVs,客户的条目没有。 是否有一种简单的方法来过滤在MS Query中进行部分匹配的表? 例如,我们的bom表中的零件号码如下所示: 02-60745-30 B 02-60785-20 D 02-60785-20 E 客户发给我们: 02-60785-20 没有修改。 在MS Query中做一个简单的连接是行不通的,有没有一个简单的方法来做到这一点,或者我应该通过客户名单,只需添加转速? (1000+部分,需要一段时间)有没有更简单的方法? 以下是Excel文件中的数据库查询: 看起来很奇怪: SELECT `'BOM Query$'`.BKBM_PARENT, `'BOM Query$'`.`BKBM_PROD_LINE^`, `'BOM Query$'`.BKBM_COMPONENT, `'BOM Query$'`.MTIC_PROD_DESC, `'BOM Query$'`.MTIC_PROD_TYPE, `'BOM Query$'`.BKBM_QTY_REQD, `'BOM Query$'`.BKIC_PROD_UM, `'BOM Query$'`.BKIC_PROD_DPTNT, `'BOM Query$'`.MTIC_PROD_SUBST_2, `'BOM Query$'`.MTIC_PROD_SUBST_3, `'BOM Query$'`.MTIC_PROD_SUBST_4, `'BOM Query$'`.MTIC_PROD_SUBST_5, `'Filter List$'`.Column1 FROM `M:\Inventory\BOMCheck\Evo BOM Query.xlsx`.`'BOM Query$'` `'BOM Query$'`, `M:\Inventory\BOMCheck\Evo BOM […]

使用Excel VBA定义的variables作为SQL命令文本的“IN”语句

我试图传递一个variables到我的VBA代码中的SQL查询的命令文本,但仍然运行到“types不匹配”错误。 我在电子表格中编写了一个简单的公式,重新创build了IN语句的语法,我只是想把它放到Query中。 所以,单元格A1包含以下内容: (1, 2, 3) 和我的VBA相关的片段如下: Dim x as String x = Sheets("SheetName").Range("A1") 然后在长时间的代码重新创build我的查询命令文本(我通过“logging”function创build),我试图注入variables如下: "Where table.field in " & x & " and table2.field <> 0" 如果重要的话: 表中的字段存储为(int,not null)。 我已经使用MsgBox(x)来validation它正在适当地存储string 该string不大于255个字符的限制 我曾尝试使用标准的'?' function传递参数与MSQuery,也没有运气 过去我已经习惯了这种伎俩,但只有一个variables。 IN语句中需要写入的内容将不断变化,所以我只是想避免显式地调用每一个,或者必须返回100%的数据,然后将其过滤掉。 任何帮助,将不胜感激! 打开其他方式来完成同样的事情; 只是希望这个工作很容易,因为电子表格已经build立起来了。 更新: 今天再次研究这个问题,我发现我简化了这个例子,我知道string的限制没有被破坏,所以我认为IN子句的长度是可以的。 往往如此,我不应该这样做。 我发现,IN子句的长度是一个因素,即使在255的限制之下。 当单元格A1的最大长度为210个字符时,一切正常; 通过另一个例子: (1, 2, 3, 4, 5, 6, 7, 8, 9 ,10, […]

将excel列/单元格范围传递给MySQL / MS查询作为参数

我有一个MySQL查询,其中我必须通过Excel细胞/列作为参数。 即从雇员select*名称=? 和joined_date =? 上面的查询必须从两个列中的单元格中选取两个参数,名称和来自图纸1的joining_date并填充到图纸2中。 有没有什么办法可以给予更多的一个单元格或整列作为MS查询参数。

MS Query Excel iifexpression式语法错误

我在Excel中使用MS Query来执行以下查询: select iif(egachid <>'GCAJA0', True, False) from fgledg where egcono='1'and egdivi='D30'and egvono=51166554 我有一个tabg,fgledg,里面有一个列,egchid。 对于一个特定的凭证(egvono = 51166554),我得到以下几行: EGCONO EGDIVI EGYEA4 EGVONO EGCHID 1 D30 2015 51166554 GCAJA0 1 D30 2015 51166554 GCAJA0 1 D30 2015 51166554 GCAJA0 1 D30 2015 51166554 GCAJA0 1 D30 2015 51166554 SEBSHHASP 1 D30 2015 51166554 SEBSHHASP 1 D30 2015 […]

Excel查询多个值参数,错误的参数types

我正在使用Office 365。在Excel中,我从Microsoft Query中导入数据。 我的问题是,我想在参数(范围)(如IN条件)中有多个值,我只能从单元格获取参数只有一个值。 示例查询: SELECT * FROM F4211 WHERE SDLNTY = ? AND SDCO IN ? 在上面的查询中,从单元格中select参数对于SDLNTY工作正常,因为它是一个单一的值。 但是对于SDCO可以有多个值,但是不起作用。 错误: 我试过的东西:价值观: 19152,19153,19154 (19152,19153,19154)

Excel 2007 MS Query中出现多部分标识符错误,但不在SQL Server 2008中

我有以下SQL代码 SELECT pd1.Meter, pd1.BasicPool, pd1.RateClass, pd1.Flowdate, (SELECT upOrDownContract FROM PipelineData pd WHERE pd.id = pd1.sibling) AS DnK, match.Volume, (SELECT Name FROM Pipeline P WHERE P.id = ISNULL(pd2.pipelineID, t.PipelineId)) AS Pipeline, (SELECT Name FROM Client C WHERE C.id = t.ClientId) AS CounterParty FROM MatchingHistoryBothSides match LEFT JOIN PipelineData pd1 ON match.type1 = 'PipelineDataVO' AND match.id1 = […]

Excel ACE.OLEDB:查询中的COUNTIF等效项

我在ACE.OLEDB中开发了以下Microsoft Query: SELECT Name, Country (SELECT COUNT(*) FROM Table1 as T1 WHERE Name = T.Name AND Country = T.Country AND Description="Work" GROUP BY Name, Country) / COUNT(*) FROM Table1 as T GROUP BY Name, Country 查询工作正常,但它永远持续在Excel中执行超过90klogging。 是否有可能通过使用COUNTIF等效来优化此查询? 我的形象查询可以优化,如果它像这样工作: SELECT Name, Country, COUNTIF(CASE WHEN Description="Work" THEN 1 ELSE 0 END) / COUNT(*) FROM Table1 as T […]