2014-11-06 148 views
0

背景:我有兩個表格。一個有一個客戶端列表和一些基本的客戶端屬性(tblClient)。第二個有一個產品清單。每個客戶可以有多個產品,所以我在這裏有一對多的關係,其中主鍵(客戶名稱)是產品表中的外鍵。MS Access中的子表格

我正在做的事:我正在尋找創建兩種形式。主窗體將具有客戶端的快照並具有小型嵌套表格以提供所有產品的摘要。這我已成功完成。我還做了第二種形式,其中可以放入與產品相關的所有細節(匹配產品數據表)。我想要做的是在主客戶表單上有一個按鈕,單擊時只打開產品表單到當前客戶使用的產品。如果沒有產品,它會打開一個空白表格,其中包含一些預填充信息(即客戶名稱)。例如,如果我在審覈客戶John Doe並且他目前有產品A,B和C,則我想單擊一個按鈕以獲取John Doe特定的產品詳細信息。如果他沒有產品,我想讓Access爲我打開一個新的入門產品表格,並且已經填入了John Doe的名字以避免混淆。

我很新的訪問,任何幫助將非常感激。

感謝, ž

+0

歡迎來到StackOverflow!不幸的是,你的問題太廣泛了。請做一些研究(有很多在線教程和Access的教​​學視頻)。如果您有特定的編碼問題,我們都會很樂意爲您提供幫助。 – Barranka 2014-11-06 21:36:12

+0

你有沒有考慮子表單 - 推薦?或者,查看DoCmd對象的OpenForm方法。 – Fionnuala 2014-11-07 00:37:53

回答

1

我假設你的第二形式被連接到一個表?如果是這樣,只需在打開它時過濾記錄集。

例如,按鈕的OnClick事件將查看當前的ClientID並根據該ClientID打開表單。

Dim stDocName As String 
Dim stOpenArg As String 

'Make stDocName the name of the form you're going to open 
stDocName = "frmAssignProject" 
'Make stOpenArg your variable to filter on 
stOpenArg = Me.ClientID 

DoCmd.OpenForm stDocName, , , , , , stOpenArg 

然後,在你的第二個形式的onload事件,過濾器根據您的OpenArg:

private sub form_load() 
    Dim rs as DAO.Recordset 

    Me.RecordSource = "Select * From tblProducts Where ClientID = " & OpenArgs & "" 

    Set rs = Me.RecordsetClone 

    'This is where it determines if it should pull in the data from the previous form 
    If rs.RecordCount > 0 Then  
    else 
     Me.ClientID = Forms!frmClients.ClientID 
     Me.ClientName = Forms!frmClients.ClientName 
     etc... 
    end if 

end sub 

以上完全是「空碼」,它可能會需要一些調整,但是其概念聲音。