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

@ミンティ私は、 'pc.Valueを選択しようとしました.p pmdb.Project_Permitからの許可を受け取りました。 pc.Id = pp.Permit でpmdb.PicklistChild pcに参加しました。Project = Forms![DATASHEET-CAF2]![Project_Permit] .Form!Permits .ProjectとProjectType = Forms![DATASHEET-CAF2]![Project_Permit] .Form!Permits.Project_Typeと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ケースです。

あなたはおそらく、あなたがサブフォームにコードを置くことができるならば、それはSQLに関しては

Me!Permits.RowSource = "..." 

に簡素化し、それが実際に無効な構文です

Forms![DATASHEET - CAF2]![Project_Permit].Form!Permits.RowSource = "..." 

を必要としています。

各列を修飾し、列をコンマで区切ります(例:

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

関連する問題