2017-03-15 11 views
0

職場で自分のグループのMS Accessカリキュラム管理ツールを構築しました。私は、エンドユーザーが特定のコースのトレーニング教材を追加できるようなフォームを用意しています。フォームのフィールドの1つは、その資料が使用されている特定の病院を要求します。このフォームに入力するには、ユーザーがマルチセレクションできるシステム内のすべての病院のリストを含むフォーム(「sbfrmcoursematerialsite」)を表示するボタンをクリックします。MS Access VBA:サブフォームを正しく参照する

SELECT pklistEntSites.Site FROM pklistEntSites UNION SELECT "   [Enterprise]" FROM pklistEntSites 
ORDER BY pklistEntSites.Site; 

この複数選択がtxtSiteという名前txtBoxの制御源である(病院の略語を連結し、「sbfrmTrainingElements」の「サイト」フィールドに挿入する文字列を作成します。フォームは、このSQLコードを使用して移入されます)。私の問題は、 "sbfrmcoursematerialsite"のOKボタンをクリックすると、この操作を実行できないというエラーが表示されることです。 "sbfrmcoursematerialsite"フォームに含まれる私のVBAコードは以下の通りです。連結機能は動作していますが、コード内の太字の行にエラーが発生します。データを追加したいサブフォームを適切に参照していませんか?

Private Sub cmdOk_Click() 
Dim teID As Integer 
Me.Refresh 
teID = Me.txtTrainingElementID 'Document Training Element ID 

DoCmd.SetWarnings False 
'Update the Site field in tblTrainingElements for the specific training  element 
'DoCmd.RunSQL "UPDATE tblTrainingElements SET [Site] = '" &  Me.txtSelectedSites & "' WHERE [Training Element ID] = " & teID & ";" 
'Debug.Print Me.txtSite.Value 
Debug.Print [Forms]![frmFullCourseInfo]![sbfrmTrainingElements]! [Site].Value 
**[Forms]![frmFullCourseInfo]![sbfrmTrainingElements]![Site].Value =  Me.txtSelectedSites** 
DoCmd.SetWarnings True 
'Close the site select form 
DoCmd.Close 
End Sub 

Private Sub Form_Load() 
'Show current site selection 
Me.txtSelectedSites = [Forms]![frmFullCourseInfo]! [sbfrmTrainingElements]![Site] 

'Pass the training element ID from the last screen to current form 
Dim i As Integer 
i = CInt(Me.OpenArgs) 
Me.txtTrainingElementID.Value = i 

End Sub 

Private Sub lboAllSites_Click() 
    Dim strSelected As String 
    Dim varItem As Variant 

    With Me.lboAllSites 
     For Each varItem In .ItemsSelected 
      strSelected = strSelected & "," & .ItemData(varItem) 
     Next varItem 
     Me.txtSelectedSites = Mid(strSelected, 2) 
    End With 
End Sub 
+0

'[Forms]![frmFullCourseInfo]![sbfrmTrainingElements] .Form![Site]' – Parfait

+0

@Parfait: 'sbfrmTrainingElements'はサブフォームの名前でなければならないことを強調してくださいフォーム 'frmFullCourseInfo'の_control_ – Gustav

答えて

0

サブフォームコンテナコントロールを参照する必要があります。私はいつもコンテナに、ctrTrainingのようにそれが保持するオブジェクトとは異なる名前を付けます。

[フォーム]![frmFullCourseInfo]![ctrTraining]![サイト]

0

はあなたの助けをいただき、ありがとうございます。私はその問題が何かを知りました。フィールド「サイト」に実際に関連付けられたルックアップがありました(ルックアップは、その後プロジェクトを終了した同僚によって作成されました)。私はルックアップタブの情報を削除するだけで、ルックアップを削除しようとしましたが、これはまだ何らかのルックアップ機能を保持していました。私はこのフィールドを削除し、同じ名前の新しいフィールドを作成しなければなりませんでした。すべてがうまくいきました。再度、感謝します!

関連する問題