如何从Access中的SQL查询填充列表框?
问题描述:
我有一个子窗体作为我的Access数据库中主窗体的一部分。所有数据都在链接到SQL Server数据库的链接表中。我无法弄清楚如何根据其中一个链接表的查询正确填充列表框。我认为我只是在努力才发现我没有。我不确定是否在正确的地方有代码,或者我的代码是否正确。这里是我有:如何从Access中的SQL查询填充列表框?
Forms![DATASHEET - CAF2]![Project_Permit]!Permits!RowSource = "select pc.Value Permit from pmdb.Project_Permit pp" _
& " left join pmdb.PicklistChild pc on pc.Id = pp.Permit " _
& " where Project = '" & ProjectNum & "' and ProjectType = " & ProjectTypenum _
& " and GroupID = '" & GROUPID & "';"
这是在Form_Load()
子为主窗体。
这应该在子表单中吗?
或者是我的代码错了?
还是两者兼有?
答
Refer to Form and Subform properties and controls
这是Forms!Mainform!Subform1.Form!ControlName.Enabled
情况。
你可能需要
Forms![DATASHEET - CAF2]![Project_Permit].Form!Permits.RowSource = "..."
如果你可以把代码放到子窗体,将其简化
Me!Permits.RowSource = "..."
对于SQL,这确实是无效的语法。
限定每列,并用逗号分隔列,例如,
select pc.Value, pp.Permit from ...
要调试SQL,请参阅:How to debug dynamic SQL in VBA
为什么不直接设置列表框行来源直接查询?您可以在查询中包含父表单和子表单引用。 – Minty
@Minty我尝试过'从pmdb.Project_Permit中选择pc.Value许可证pp left join pmdb.PicklistChild pc on pc.Id = pp.Permit where Project = Forms![DATASHEET - CAF2]![Project_Permit] .Form!Permits .Project和ProjectType = Forms![DATASHEET - CAF2]![Project_Permit] .Form!Permits.Project_Type and GroupId = Forms![DATASHEET - CAF2]![Project_Permit] .Form!Permits.GroupID',这不起作用。我是否错误地引用了表单和子表单? – Mike
尝试在查询构建器中构建查询,并使用表达式构建器为您选择表单名称以获取正确的语法。 @Andre提供的链接也将有所帮助。 – Minty