使用变量追加字段参数

use*_*778 5 sql parameters ado append

Cross发布在这里:

http://www.vbforums.com/showthread.php?696163-Use-variable-to-append-field-parameter&p=4264077#post4264077

我使用ADO从MS Access检索数据到Excel,我想在我的查询的SELECT部分​​附加一个Iif语句.我的SQL字符串存储在文本文件中,任何参数都通过ADO追加.

我知道如何在WHERE子句中追加参数,甚至可以在SELECT语句中附加参数,如下所示:

SELECT BA, Iif(QA=[@somestring],[@somestring2], [@somestring3])
FROM myData
WHERE BA = 'some person'
Run Code Online (Sandbox Code Playgroud)

但我想要完成的是将占位符[@somestring]转换为可变长度的Iif语句,例如:

SELECT BA, [@somestring]    
Run Code Online (Sandbox Code Playgroud)

占位符转换为我使用函数构建的字符串:

Iif(QA='Jon Doe', 'Jon', Iif(QA='Jane Doe', 'Jane', 'Nobody')).  
Run Code Online (Sandbox Code Playgroud)

现在,我得到的结果是我传递给填充整个字段的参数的文字字符串.因此,Iif语句实际上是为每条记录写出来的,而不是由SQL进行评估.

我正在尝试做什么,或者SQL是否需要在初始命令中预定义的Iif语句的字段?

即,Iif(QA = [@ somestring],[@ sometstring2],[@ somestring3])

Fio*_*ala 0

这是直接从 VBForums 剪切粘贴的内容。这是一个社区维基,只是为了将这个问题从“无答案”中删除。可酌情删除或修改。


来自:http://www.vbforums.com/showthread.php? 696163-Use-variable-to-append-field-parameter&p=4264077#post4264077

作者:si_the_geek

这是不可能的,你只能使用参数来设置值,你不能用它们做其他事情(例如字段/表名称、函数等)。

如果您想更改查询的其他部分,则需要使用其他方法(例如字符串构建)。在文章末尾的示例中,您应该将其添加到查询字符串中,并通过参数添加值。