我目前正在尝试在表单名称[Text161]
上使用未绑定的文本框[DCM_Gap_Servers]
来通过表对信息进行排序。我希望我创建的查询能够将来自[DCM_Gap_Servers]![Text161]
的用户输入作为从表名'Server'排序的字段。
这是我现在在查询中使用的SQL:
SELECT * FROM Servers WHERE "Forms![DCM_Gap_Servers]![Text161]" IS NULL
**我已经尝试过:
"Forms![DCM_Gap_Servers]![Text161]" ; (Forms![DCM_Gap_Servers]![Text161]); Forms.[DCM_Gap_Servers]![Text161]
如果我用我正在使用的实际字段名称替换文本框引用,这将随时工作,但由于有数百种字段组合,我需要引用才能工作。
我看了一遍,似乎无法找到正确的答案。如果需要,我愿意在VBA中这样做,无论如何正确地完成过滤。
谢谢。
答案 0 :(得分:0)
是:
SELECT * FROM Servers WHERE Forms.[DCM_Gap_Servers].[Text161] IS NULL
但只要文本框为空,就会选择所有记录。
所以它恰好是:
SELECT * FROM Servers WHERE SomeField = Forms.[DCM_Gap_Servers].[Text161]
要将表单值用作字段名称,必须使用连续SQL:
strSQL = "SELECT * FROM Servers WHERE " & Forms![DCM_Gap_Servers]![Text161].Value & " IS NULL"
这可能会传递给现有查询对象的SQL属性:
MyQueryDef.SQL = strSQL
或者:
Constant SQL As String = "SELECT * FROM Servers WHERE {0} IS NULL"
FieldName = Forms![DCM_Gap_Servers]![Text161].Value
MyQueryDef.SQL = Replace(strSQL, "{0}", FieldName)
当然,请注意字段名称不是零长度字符串。