2012-06-16 164 views
2

DealID返回訪問多個項目使用組合框設置,它需要顯示多達3 MID在該領域的下方使用使用DLookup

Private Sub DealID_AfterUpdate() 
Dim strFilter As String 
strFilter = "DealID = " & Me!DealID 
Me!MID = DLookup("MID", "DealContent", strFilter) 
Exit_ProductID_AfterUpdate: 
Exit Sub 
End Sub 

這是我使用的是明顯的限制的代碼僅使用DLookup返回它找到的第一個結果。 這會產生2個問題,但不專心於第一個,它不會顯示多個MID

所以如何才能讓1-3個MID顯示?

我的第二個問題是更深入,但如果有人想幫忙,個人聊天將不勝感激。基本上面的表單是一個子表單,我需要它爲表單中的每個Mount ID保存一個單獨的條目。

如果有人願意幫忙但不理解(我的意見通常如此),我認爲Skype上的屏幕共享是最好的選擇。

+1

DLookup僅用於返回一個值。你有沒有考慮過使用RecordSet? –

+0

關於您的第二個問題:請將其從此問題中刪除,併爲其發佈新問題。在一個問題中提出兩個不同的事情太混亂了。 –

回答

5

正如評論中所述,您不能使用DLookup來返回多個值。

您需要通過他們選擇的前三個MID s轉換爲Recordset,循環和追加他們Me!MID

Dim RS As DAO.Recordset 
Dim SQL As String 

'ordering is only important if you want the FIRST three MIDs. 
'If you don't care, just omit the "order by MID" part. 
SQL = "select top 3 MID from DealContent where DealID = xxx order by MID" 

Set RS = CurrentDb.OpenRecordset(SQL) 
Do While Not RS.EOF 
    Me!MID = Me!MID & RS("mid") & " " 
    RS.MoveNext 
Loop 
RS.Close 
Set RS = Nothing 

注意,這個例子使用DAO,這是默認的(和MS推薦)數據訪問技術在更新的Access版本中。較早版本使用ADO作爲默認值。
DAO在那裏工作,你只需要參考Microsoft DAO x.x Object Library