2017-09-11 81 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