对于任何可能需要的人:
在任何工作表上创建一个包含您的参数的表格,例如tParam
. 分配一个变量:
tParam = Excel.CurrentWorkbook(){[Name="tParam"]}[Content]
如果您使用 AND 逻辑,则将其加入您的数据库表:
tResult = Table.Join(tDatabaseSrc, {"Col1", "Col2"}, tParam, {"ColParameter1", "ColParameter2"}, JoinKind.Inner)
如果您需要对任何比 AND 更复杂的 OR 逻辑,则此技巧将不起作用。然后使用
tResult = Table.SelectRows(tDatabase, each [Col1] = tParam{0}[ColParameter1] or [Col2] = tParam{0}[ColParameter2])
您可以使用更复杂的条件,但您需要先准备一些数据。例如,而不是使用
each [Col1] = tParam{0}[ColParameter1] or [Col1] = tParam{0}[ColParameter2]) [.....] or [Col1] = tParam{0}[ColParameter10])
你可以只用
Table.SelectRows(tDatabaseSrc, each List.Contains(ListOfParameters, [Col1]))
在前面的一些步骤中设置此ListOfParameters
变量。
如果您使用本机查询(确实不是最佳实践),那么您可能会丢失查询折叠。另一方面,您可以将每个参数加载到单个变量中:
tParam = Excel.CurrentWorkbook(){[Name="tParam"]}[Content],
tParam1 = tParam{0}[ColParameter1],
tParam2 = tParam{0}[ColParameter2],
etc etc
,然后只需将它们插入到您的查询中。同样,这并不好,因为它会受到 SQL 注入攻击,但会作为一种快速且非永久性的解决方案。