MS Access - 取决于变量文本列表的 SQL 值

MS Access - SQL value depending of a variable text list

提问人:JCBq 提问时间:7/1/2023 最后编辑:Dale KJCBq 更新时间:7/2/2023 访问量:66

问:

我有一个表,其中一列允许多个选定值(取决于另一个表)

例如:

A列 B列
值 1 A、B
值 2 A、B、C

我想做一个级联组合框:如果选择“值 1”,那么第二个组合框允许值“A”、“B”

我根据表/查询创建第二个组合框值 当我手动输入条件 In(“A”;”B“) 它有效,但不适用于我的变量 我试图通过VBA更改SQL,它仅适用于一个值,不适用于多个值

Me.Expectedvalueslist 为“A”;”B"

sqlresult = "SELECT [Table 2].Type, [Table 2].Description FROM [Nomenclature documentaire] WHERE ((([Table 2].Type) In (" & Me.Expectedvalueslist & "))); "
Expectedvalueslist.Caption = sqlresult
Me.DocumentSelect.RowSource = sqlresult

我创建的用于检查字符串结果的“sqlresult”标签准确地显示了我键入的内容,但组合框没有更新(我尝试了重新查询,但什么也没显示)

提前致谢

SQL 服务器 VBA MS-Access

评论

2赞 Thom A 7/1/2023
你真的需要在这里规范你的设计,然后你会更容易。
1赞 Thom A 7/1/2023
您还需要参数化您的陈述;您正在注入值,这是一个重大的安全漏洞。
0赞 Dale K 7/1/2023
为什么要标记 SQL Server 和 ms access?它们是两个截然不同的数据库引擎
0赞 Thom A 7/1/2023
据猜测,@DaleK,OP 使用 MS Access 作为前端,使用 SQL Server 作为后端。¯\⁠_⁠(⁠ツ⁠)⁠_⁠/⁠¯
0赞 Olivier Jacot-Descombes 7/1/2023
ComboBox 的 必须是 。然后,您可以分配一个值,例如 。根据安装中的区域性设置,还可以使用逗号而不是分号。My Access 实际上允许我手动插入,并且该值会自动更改为 .Row Source TypeValue ListA;B;CA, B; CA;B;C

答:

0赞 June7 7/2/2023 #1

如果您希望组合框显示如下列表:

A
B
C

无法将 RowSource 设置为返回带有字符串的字段的 SQL 语句。A,B,C

第一个组合框可以具有以下 RowSource:
SELECT ColumnA, ColumnB FROM Table2;

然后,第二个组合框可以通过 VBA 设置 RowSource,并具有: 设置此组合框属性:
ValueList 的 RowSourceType 和 1 的 ColumnCount
= Me.combobox1.Column(1)