2014-04-01 2 views
1

직원 정보가있는 테이블을 포함하는 액세스 데이터베이스가 있습니다. 내 문제는 특정 특성이 true 또는 false인지 먼저 확인한 다음 연속 된 형식으로 모든 레코드를 표시하기 위해 다른 테이블을 반복하고 싶습니다. 그것은 사실 인 것뿐만 아니라 모든 레코드를 채 웁니다. 아래 코드를 참조하십시오.VBA 레코드 집합에 액세스

Private Sub RunQuery_Click() 
Dim strSQL As String 
Dim dba As Database 
Dim tbl As Recordset 
Dim Code As String 
Dim status As String 

Set dba = CurrentDb 
strSQL = "SELECT DISTINCT EmployeeName,SSN,Location,SystemAssignedPersonID FROM dbo_tbl_Random " 
strSQL = strSQL & "WHERE MenuUsed = 'Random' ORDER BY Location,EmployeeName" 
Set tbl = dba.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges) 
With tbl 
    .MoveFirst 
    If tbl.EOF Then 
    MsgBox "There are no employees on Random at this time.", , "Oops! Try Again" 
    Else 
    Do Until tbl.EOF 
     status = getEmpStatusID(tbl!SystemAssignedPersonID) 
     If status = "A" Then 
     Set Me.Recordset = tbl 
     .MoveNext 
     Else 
     .MoveNext 
     End If 
    Loop 
    End If 
End With 
Set tbl = Nothing 
Set dba = Nothing 
End Sub 

getEmpStatusID는 문제가되지 않는 별개의 기능입니다. 직원 ID를 조회하여 정보를 얻고 정상적으로 반환합니다.

도움 주셔서 감사합니다.

+0

루프로 처리해야합니까? 왜 레코드 셋을 사용하지 않고 SQL을 통해이 모든 작업을 수행할까요? – Brad

+0

응답을 주셔서 감사합니다. @Brad 나는 복잡한 SQL 문을 VB에 익숙하지 않은 사람입니다. 당신이 약간의 지침을 제공 할 수 있다면 그것은 대단히 감사 할 것입니다. – designspeaks

+0

레코드 집합을 조작하는 것보다 훨씬 간단합니다. 'getEmpStatusID'는 무엇을합니까? – Brad

답변

2

나는 당신이 이미 그 길을 가고 있다고 생각합니다. 무엇 getEmpStatusID에 따라 해당 양식에 대한 행 원본으로이

SELECT DISTINCT EmployeeName,SSN,Location,T.SystemAssignedPersonID 
FROM dbo_tbl_Random R 
Inner JOin Table_Where_Status_Is_Found as T 
    on T.SystemAssignedPersonID = R.SystemAssignedPersonID 
WHERE MenuUsed = 'Random' and T.SystemAssignedPersonID = 'A' 
ORDER BY Location,EmployeeName 

사용과 같은 작업을 수행 할 수 있습니다 않고 VBA를 사용하지 마십시오. 하지만 distinct을 사용했기 때문에 양식을 업데이트 할 수 없습니다. 그게 필요한가요?

+0

필요하지 않습니다. 정말 고마워! – designspeaks

+1

나는 쿼리를 업데이트했다. 이 두 테이블을 공통 열에 함께 결합 할 수 있습니다. 'Primary Key' ('PK')라고 불리는 다른 테이블에 SystemAssignedPersonID의 중복이 없다면. 'dbo_tbl_Random'의'SystemAssignedPersonID' 열의 데이터가 첫 번째 테이블의'SystemAssignedPersonID' 열의 값으로 만 제한되면이 열을 '외래 키'라고합니다. – Brad

+1

이 작업은 쿼리 디자이너에서 수행 할 수 있지만 두 테이블을 입력 한 다음 첫 번째 테이블에서 PK를 클릭 한 다음 다른 테이블의 FK로 끌어다 놓으면됩니다. 이것은 당신을위한 가입을 만들 것입니다. – Brad