2012-08-29 4 views
0

Access 데이터베이스에서 검색을 수행하고 매우 복잡한 루틴을 찾으려고합니다. 기본적으로이 4 가지 표를 찾을 수있는 기준은 날짜, 서비스, 코드 및 기능입니다.Access vba에서 검색 및 필터링하는 방법

이 정보를 사용하여 필자는 테이블에 들어가서 필드 및 하나의 기준으로 검색합니다. 4 개의 기준 중 하나에 해당하는 행을 찾은 후에 올바르게 일치 한 모든 행에 대해 인접 필드의 값을 저장합니다. 이 후, 모든 인접 필드의 값을 배열로 저장하려고했습니다. 이 단계를 반복하면서 4 가지 검색을 모두 4 개의 개별 배열로 저장하려고했습니다. 다음과 같이 내 테이블의

관계는 다음과 같습니다

Table Relationships

내가 요청하는 "Demande"을 받고, 그 요구의 4 개 가지 기준은 다음과 같습니다 날짜, 서비스, 코드 및 기능.

"Services_YES"테이블에서 나는 서비스을 요청합니다.

"Pool_Personnel"테이블에서 나는 Fonction을 찾았습니다. 테이블 "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 & "))" 
관련 문제