0

MS Access 2010 データベースに顧客テーブルがあります。ユーザーが顧客を選択して顧客の詳細を確認できるようにする 2 つのサブフォームを含むフォームを作成したいと考えています。

顧客テーブルは次のようになります。

CustomerID  
FullName  
Address  
City  
StateProvince  
Other fields  

CustomerListForm と CustomerDetailForm を MainForm にドラッグして、デザイン ビューで作成した mainForm。

CustomerListForm is on left side and lets users filter customers from long list  
  Contains the following controls:  
    txtFilter textbox with embedded macro where = [LastName] Like [Forms]![CustomerListForm]![txtFilter] & "*"  
    FullName textbox and hidden CustomerID textbox which are bound to CustomersTable  
CustomerDeatilForm located on right, with contents changing based on selection from CustomerListForm  
    If no customer selected from CustomerListForm, show default message  
    Else:  
        Show FullName, address, city, and stateprovince of customer selected from CustomerListForm  
        txtFullName set =[CustomersTable]![FullName], and so on for other fields

CustomerListForm を個別に実行すると、ユーザーは名前を入力して顧客レコードをフィルター処理できます。しかし、CustomerListForm を mainForm に埋め込むと、そのフィルタリング機能はなくなります。また、CustomerListForm でフィルタリングされた結果には、どのような種類のリンクも含まれていません。つまり、CustomerDetailForm は、データを出力する必要がある顧客を識別できないようです。

誰かがこれを設定する方法を教えてもらえますか? これだけ走れば、今やっている他の研究の空白を埋めることができると思います。

編集:

CustomerListForm の FullName テキスト ボックスに OnClick メソッドがあることがわかります。FullName は CustomerListForm で編集できません。CustomerID は、CustomerListForm の各レコードの横にある隠しフィールドです。また、FullName テキスト ボックスのプロパティ シートの [書式] タブに、複数のハイパーリンク設定があることもわかります。FullName テキストボックスの OnClick メソッドを使用して CustomerID を CustomerDetailForm に送信する方法はありますか? おそらくハイパーリンクで?

4

1 に答える 1

1

サブフォームは、おそらく CustomerID によって親フォームにリンクされていますか?

サブフォーム コントロールの LinkMasterID、LinkChildID プロパティからこの値を削除します (サブフォーム自体のフォーム プロパティではなく、親フォーム内)。

マクロを削除し、txtFilter の AfterUpdate イベントを作成します。これにより、関連するデータが検索され、CustomerListForm に表示されます。この手順にある他のコードに加えて、

Dim CustID as Long: CustID = [get customerID from wherever it is]

... [your other code]

Me.Parent.LockCustomer CustID

外側のフォームでは、これを vba に追加します。

Public Sub LockCustomer(CustID as Long)
    CustomerDetailForm.Form.RecordSource = _
        "SELECT * FROM Customer WHERE CustomerID = " & CustID
End Sub

サブフォームに加えてメイン フォームに何らかの種類の顧客の詳細があり、CustomerDetailForm.Form を設定する代わりに、メイン フォームと詳細サブフォームの両方のリストフォームに選択した顧客の詳細を表示する場合。 RecordSource、Me.RecordSource を設定し、詳細サブフォーム コントロールの LinkMasterID、LinkChildID プロパティが CustomerID に設定されていることを確認します。

于 2013-09-17T00:07:50.683 に答える