2016-10-15 3 views
0

현재 레코드 세트를 사용하여 작성한 쿼리의 결과를 가져옵니다. 거기에서 레코드 세트의 결과와 보고서 값을 비교하여 레코드 세트 및 보고서와 일치하는 값을 강조 표시해야합니다.if 문에서 레코드 세트를 가져 오는 데 문제가 발생했습니다.

lngRed = RGB(255, 0, 0) 
lngBlack = RGB(0, 0, 0) 
lngYellow = RGB(255, 255, 0) 
lngWhite = RGB(255, 255, 255) 
    Dim db As Database 
    Dim rs As DAO.Recordset 
    Dim strQuery As String 

    strQuery = "SELECT qry_Revision_History_Conversions_MaxR.Step_Int " _ 
    & "FROM qry_Revision_History_Conversions_MaxR " _ 
    & "Where (((qry_Revision_History_Conversions_MaxR.Step_Int) Is Not Null));" 



    If strQuery = Reports![rpt_WI_BOOK]![qry_Select_Step_Filter_Task].Report![Step] Then 
[Reports]![rpt_WI_BOOK]![qry_Select_Step_Filter_Task].Report![Step].BackColor = lngYellow 
Else 
[Reports]![rpt_WI_BOOK]![qry_Select_Step_Filter_Task].Report![Step].BackColor = lngWhite 

End If 

는 테스트를 위해, 쿼리의 결과는 Step_Int라는 필드가 될 것이며, 그것은 하나 개의 항목 또는 여러 항목을 가질 수 있습니다. 예를 들어 한 프로세스에 대해 보고서를 실행하면 쿼리에 1, 4 및 6의 세 가지 값이 나열되고 보고서에는 13 단계가 표시됩니다. 이 보고서에서 1, 4 및 6 단계는 노란색으로 변경되어야합니다. 이것은 작동하지 않습니다. 레코드 세트를 수행하는 방법인지 아니면 결과를 리포트와 비교하는 데 사용하는지 확실하지 않습니다.

+0

에 대한 추가 정보를 원하시면. SELECT 문자열을 보고서 필드와 비교하면 의미가 없습니다. 아마도 게시 된 코드에서 많은 부분을 제거했을 것입니까? 어떤 경우에이 코드가 실행됩니까? – Andre

답변

0
당신의 strQuery가 만에 선택 쿼리 문자열, 당신은 정말 아무것도과 비교 안하고있다

...

이 링크를 확인하십시오 : http://www.utteraccess.com/wiki/index.php/Recordsets_for_Beginners 그것을 사용하는 방법에 대한 작은 튜토리얼의를 레코드 세트.

Dim strSQL As String 
strSQL = "SELECT [column] FROM [Table]" 

다음 레코드를 만듭니다

는 기본적으로 먼저 쿼리를 구축했습니다.

그러면 레코드 집합을 쿼리 결과에 "바인딩"합니다.

Set rs = CurrentDb.OpenRecordset(strSQL) 

지금이 시점에서, 우리는 쿼리의 결과 'RS'레코드라는 이름의이 (쿼리를 가정하는 것은 정확하고 유효한지의 데이터).

우리는 루프를 통해 결과를 통해 갈 수 있습니다 완료되면, 당신은 당신의 자원을 확보하기 위해 참조의 폐기를 처리하는 것이 좋다

If rs.Recordcount <> 0 Then 
    MsgBox(rs![column] & "") 
End If 

. 최신 버전의 Data Objects (이후 버전의 DAO 및 ADO)에서는 그렇게 할 필요가 없습니다.

rs.Close 
Set rs = Nothing 

* 내가 상단에 준 링크 .. 당신은 심지어 레코드를 열어하지 않을

관련 문제