2017-09-11 76 views
0

我有一个子窗体作为我的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()子为主窗体。

这应该在子表单中吗?

或者是我的代码错了?

还是两者兼有?

+2

为什么不直接设置列表框行来源直接查询?您可以在查询中包含父表单和子表单引用。 – Minty

+0

@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

+1

尝试在查询构建器中构建查询,并使用表达式构建器为您选择表单名称以获取正确的语法。 @Andre提供的链接也将有所帮助。 – Minty

回答

1

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

+0

我试过了。它没有填充列表框。这应该在主窗体或子窗体的Form_Load中吗? – Mike

+0

我收到一个错误:在两种形式的查询表达式'pc.Value Permit'.'中出现语法错误(缺少运算符)。 – Mike

+0

@Mike:查看编辑。 – Andre