【问题标题】:How to fill a List box from a SQL query in Access?如何从 Access 中的 SQL 查询中填充列表框?
【发布时间】:2018-02-19 18:40:59
【问题描述】:

我的 Access DB 中有一个子表单作为我的主表单的一部分。所有数据都在链接到 SQL Server DB 的链接表中。我无法弄清楚如何根据对其中一个链接表的查询正确填充列表框。我以为我有它的工作只是发现我没有。我不确定我的代码是否在正确的位置,或者我的代码是否正确。这是我所拥有的:

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() 子窗体中。

这应该在子表单中吗?

还是我的代码错了?

或两者兼而有之?

【问题讨论】:

  • 为什么不直接将列表框行源设置为查询?您可以在查询中包含父表单和子表单引用。
  • @Minty 我试过select pc.Value Permit from pmdb.Project_Permit pp left join pmdb.PicklistChild pc on pc.Id = pp.Permit where Project = Forms![DATASHEET - CAF2]![Project_Permit].Form!Permits.Project and ProjectType = Forms![DATASHEET - CAF2]![Project_Permit].Form!Permits.Project_Type and GroupId = Forms![DATASHEET - CAF2]![Project_Permit].Form!Permits.GroupID,但没用。我是否错误地引用了表单和子表单?
  • 尝试在查询构建器中构建查询,并使用表达式构建器为您选择表单名称以获得正确的确切语法。 @Andre 提供的链接也会有所帮助。

标签: sql-server ms-access vba ms-access-2010


【解决方案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

【讨论】:

  • 我试过这个。它没有填充列表框。这应该在主表单还是子表单的Form_Load 中?
  • 我收到一个错误:Syntax error (missing operator) in query expression 'pc.Value Permit'. 两种形式。
  • 值是一个保留字,理想情况下你需要重命名它或者至少用方括号括起来。
  • @Minty 我无法重命名它。我试过用[] 包围它。虽然它也没有工作。
  • @Mike 请明确说明您在做什么,因为如果您使用已分配给不同列的列的名称,那将是一个糟糕的主意,该名称用于连接(@ 987654330@)。请从最低限度开始(例如select Permit from pmdb.Project_Permit),然后添加,直到找到错误。如果你没有让 SQL 工作,请单独提出一个问题,因为你在这里做了一些奇怪的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多