Sql server 如何从Access中的SQL查询填充列表框?
我在Access DB中有一个子窗体作为主窗体的一部分。所有数据都位于链接到SQL Server数据库的链接表中。我无法根据对其中一个链接表的查询来正确填充列表框。我以为我让它工作了却发现我没有。我不确定我的代码是否在正确的位置,或者我的代码是否正确。以下是我所拥有的:Sql server 如何从Access中的SQL查询填充列表框?,sql-server,ms-access,vba,ms-access-2010,Sql Server,Ms Access,Vba,Ms Access 2010,我在Access DB中有一个子窗体作为主窗体的一部分。所有数据都位于链接到SQL Server数据库的链接表中。我无法根据对其中一个链接表的查询来正确填充列表框。我以为我让它工作了却发现我没有。我不确定我的代码是否在正确的位置,或者我的代码是否正确。以下是我所拥有的: Forms![DATASHEET - CAF2]![Project_Permit]!Permits!RowSource = "select pc.Value Permit from pmdb.Project_Permit pp"
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 & "';"
这在主窗体的窗体\u Load()
子窗体中
这应该在子窗体中吗
还是我的代码错了
还是两者都有?
这是表单!主窗体!子表单1.表单!ControlName.Enabled
大小写
你可能需要
Forms![DATASHEET - CAF2]![Project_Permit].Form!Permits.RowSource = "..."
如果您可以将代码放入子表单中,它将简化为
Me!Permits.RowSource = "..."
至于SQL,这确实是无效的语法
限定每列,并用逗号分隔列,例如
select pc.Value, pp.Permit from ...
要调试SQL,请参阅:为什么不直接将listbox行源设置为查询?您可以在查询中包括父窗体和子窗体引用。@Minty我尝试了
从pmdb.Project\u Permit pp左加入pmdb.PicklistChild pc上的pc.Id=pp.Permit where Project=Forms![数据表-CAF2]![项目许可证]。表格!许可证。项目和项目类型=表格![数据表-CAF2]![项目许可证]。表格!permissions.Project_Type和GroupId=表单![数据表-CAF2]![项目许可证]。表格!permissions.GroupID
,它不起作用。我是否错误地引用了表单和子表单?请尝试在查询生成器中生成查询,并使用表达式生成器为您选择表单名称,以获得正确的语法。@Andre提供的链接也会有帮助。我试过了。它没有填充列表框。对于主窗体或子窗体,这应该在窗体\u Load
中吗?我得到一个错误:查询表达式“pc.Value-Permit”中的语法错误(缺少运算符)。
在这两种窗体中都是。Value是保留字,理想情况下需要重命名它或至少将它括在方括号中。@Minty我无法重命名它。我试着用[]
围绕它。尽管它也不起作用。@Mike请明确说明您在做什么,因为如果您使用的是已分配给其他列的列的名称,而该名称在联接中使用(left join pmdb.PicklistChild pc on pc.Id=pp.Permit
)。请从最小值开始(例如,从pmdb.Project_Permit
中选择许可),然后添加到该值上,直到找到错误为止。如果SQL不能正常工作,可以单独问一个问题,因为您在这里做了一些奇怪的事情。