Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何从Access中的SQL查询填充列表框?_Sql Server_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Sql server 如何从Access中的SQL查询填充列表框?

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"

我在Access DB中有一个子窗体作为主窗体的一部分。所有数据都位于链接到SQL Server数据库的链接表中。我无法根据对其中一个链接表的查询来正确填充列表框。我以为我让它工作了却发现我没有。我不确定我的代码是否在正确的位置,或者我的代码是否正确。以下是我所拥有的:

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不能正常工作,可以单独问一个问题,因为您在这里做了一些奇怪的事情。