Jet 访问查询不工作通配符不 select

Jet Access Query not working wildcard not select

我正在使用数据集 sql 查询并尝试填充报告查看器字段,但我运气不佳。它不断填充该字段中的所有内容。所有这些东西对我来说都是新的,所以我什至认为我没有以正确的方式接近它。

我正在尝试 select 来自通配符的数据,该通配符由 vb.net 中的字符串变量表示。如果我在查询生成器中 运行 它在 where 列中使用 Class_Schedule.(blah) 它将起作用。但是,如果我使用查询生成器和 运行,无论我在参数中输入什么,它都会填充整个字段。

SELECT        MemberBase.ID, MemberBase.EntireName, Class_Schedule.MemberID
FROM            (MemberBase INNER JOIN
                         Class_Schedule ON MemberBase.ID = Class_Schedule.MemberID)
WHERE        (true = ?)

感谢任何帮助,对于糟糕的解释深表歉意,我已经用谷歌搜索并尝试了 2 个小时的各种方法,但我一无所获。

编辑:

这是我想要的理想情况,但它不起作用:

SELECT        MemberBase.ID, MemberBase.EntireName, Class_Schedule.MemberID
FROM            (MemberBase INNER JOIN
                     Class_Schedule ON MemberBase.ID = 
Class_Schedule.MemberID)
WHERE        (Class_Schedule.? = true)

查询参数占位符?只能接受要比较的值。如果不能包含列名。如果要比较不同的列,则必须使用字符串连接来构建查询。

sql = "SELECT ... WHERE [" & column_name & "] = true"

或使用新的字符串插值(其中 column_name 是一个 VB 字符串变量):

sql = $"SELECT ... WHERE [{column_name}] = true"

如果您与 true 以外的值进行比较,出于安全原因,您仍应为它们使用参数。参见:SQL injection.

您不能将列名作为参数传递,但您可以使用一个技巧:

SELECT ... WHERE (col1 = true OR 0 = ?) AND (col2 = true OR 0 = ?) AND (col3 = true OR 0 = ?)

然后为要测试的列传递参数 1,为其他列传递参数 0。