2012-08-29 66 views
0

在我的Access數據庫中,我試圖執行搜索並找到相當複雜的例程。基本上,我有四個標準來查找這四個表格:日期,服務,代碼和功能。如何在Access中搜索和查找並篩選vba

有了這些信息,我會進入一個表格,並在一個字段和一個標準中進行搜索。在找到與4個標準之一相對應的行之後,我保存所有匹配正確的行的相鄰字段的值。在此之後,我想將所有相鄰字段的值保存爲一個數組。然後重複這些步驟,我將把所有4個搜索保存爲4個單獨的數組。是

我的表之間的關係如下:

Table Relationships

我收到「Demande」,這是一個請求,在該請求是四個標準:日期,服務,代碼和功能。

在表「Services_YES」中,我尋找對應於需求的服務

在表「Pool_Personnel」中,我尋找對應於需求的功能

在表中「Days_Available」我找兩個日期代碼(稱爲Code_Horaire),其對應的需求。

從那裏開始,我希望爲所有找到的結果記錄每個Code_Personal,然後在所有3個表中找到哪個Code_Personal匹配。


所以我的問題:

我如何做一個搜索,找到它爲所有的代碼的對應標準的行創建一個數組的功能?

我已經創建的僞代碼,以幫助解釋了,櫃面有人能翻譯這爲真正的VBA:

While demandeTable.functionField.Value = poolpersonnelTable.Fonction1Field.Value 
    get all poolpersonnelTable.codepersonalField.Value for all rows that match 
    save fonctionArray = codepersonalField.Values 
Loop 

我如何完成這個「過濾」非常卡住,並會極力讚賞所有的幫助。

+0

出於好奇,你爲什麼不有,所有表都留下了查詢加入到Demande表中,然後查看該查詢中是否有來自每個表的Code_Personnel相等的結果? – APrough

+0

我被綁定到VBA,因爲查詢是基本的,我需要做的事情。我正在製作一個能夠經常收到Outlook電子郵件需求的數據庫,而且我認爲能夠快速找到正確代碼的宏將效果最佳。這個過程也變得非常複雜。 關於我上面的僞代碼的任何想法? –

+0

@HansUp我發佈了另一個[問題](http://stackoverflow.com/questions/12183879/how-to-search-a-field-in-a-table-in-access),並將刪除這一個,如果它被很好地回答 –

回答

0

使用VBA不是答案。

我結束了創建一個查詢,使用用戶inputed文本填寫查詢的可變部分組成:

comboService = Chr(34) & Me.Combo8.Value & Chr(34) 
txtDate = Chr(34) & Me.Text15.Value & Chr(34) 
comboCodeHoraire = Chr(34) & Me.Combo17.Value & Chr(34) 

"SELECT tblPoolPersonnel.LName, tblPoolPersonnel.FName, tblPoolPersonnel.[Tel Natel], tblPoolPersonnel.[Tel Home], tblPoolPersonnel.Email" & vbCrLf 
"FROM ((tblPoolPersonnel INNER JOIN tblFonction ON tblPoolPersonnel.Code_Personal = tblFonction.Code_Personel) INNER JOIN tblDayAvailable ON tblPoolPersonnel.Code_Personal = tblDayAvailable.Code_Personal) INNER JOIN tblServiceYES ON tblPoolPersonnel.Code_Personal = tblServiceYES.Code_Personal" & vbCrLf 
"WHERE (((tblServiceYES.Service)=" & comboService & ") AND " + _ 
       "((tblDayAvailable.Availability)=True) AND " + _ 
       "((tblDayAvailable.Date)=" & txtDate & ") AND " + _ 
       "((tblDayAvailable.CodeHoraire1)=" & comboCodeHoraire & "))"