MS Access 조건부 서식은 숫자의 첫 번째 숫자만 비교합니다.

MS Access 조건부 서식은 숫자의 첫 번째 숫자만 비교합니다.

저는 작업 프로젝트를 위한 Access 데이터베이스를 가지고 있지만, 안타깝게도 작업의 성격으로 인해 너무 많은 세부 정보를 공유할 수 없습니다. 그러나 기본적으로 수행해야 할 작업 테이블이 있고 각 작업에는 마감일이 있으며 아래 논리를 사용하여 매달 마감되고 완료된 작업 수를 계산하는 테이블이 있습니다.

Group by Month([Due Date])
Count [Due Date]

한 쿼리의 경우 다른 쿼리의 완료된 날짜에 대해서도 동일합니다. 그런 다음 마감 날짜 쿼리, 완료된 날짜 쿼리 및 연도의 월 테이블을 사용하는 최종 쿼리가 있습니다(그렇지 않으면 빈 달은 표시되지 않음). 그래서 나는 다음을 가지고 있습니다 :

Nz(Due Dates Totals.Count,0)
Nz(Completed Dates Totals.Count,0)
Calendar.Month Number
Calendar.Month Name

( Nz위의 '는 보고서에 빈 공간이 없도록 하기 위한 것입니다)

그런 다음 내 보고서는 월 번호를 사용하여 정렬 및 그룹화하고, 월 이름을 사용하여 사용자에게 해당 월을 표시하며, 마감 작업과 총 작업이 포함된 작은 테이블을 사용합니다. 그런 다음 테이블에 조건부 서식을 적용하여 완료된 작업이 예정된 작업보다 적으면 빨간색으로 강조 표시되고, 같으면 녹색으로 강조 표시되며, 예정된 작업보다 완료된 작업이 많으면 '완료됨' 필드가 파란색으로 표시됩니다.

이것은 숫자 중 하나가 두 자리가 아닌 한 잘 작동합니다. 이 경우 각 값의 첫 번째 숫자만 비교합니다.19 < 2

필드의 값을 쿼리 자체의 마감 횟수와 비교하고 보고서의 필드 값과 비교해 보았지만 둘 다 동일한 문제가 있습니다. 내 생각 엔 숫자가 아닌 문자열로 비교하는 것 같지만 쿼리에서 숫자를 숫자로 저장하도록 강제하는 방법을 모르겠습니다.

도움을 주셔서 감사합니다. (그런데 데이터베이스에 더 많은 테이블 등이 있으므로 Excel은 이 작업에 적합한 도구가 아닙니다.)

답변1

MS Access가 숫자 값을 문자열로 해석하는 경우 다음 중 하나를 사용하여 문자열 값을 숫자 데이터 유형으로 강제 변환/캐스트할 수 있습니다.유형 변환 함수, 선택은 분명히 데이터의 성격에 따라 달라집니다.

  • CCur(통화로)
  • CDbl(두 배로)
  • CDec(십진수로)
  • CInt(정수로)
  • CLng(길이에)
  • CSng(싱글에게)

정수로 작업하려고 하므로 CInt값이 32767(2 15 -1) 을 초과할 가능성이 있는 경우 또는 중 하나를 사용하는 것이 좋습니다 CLng.

따라서 코드는 다음과 같을 수 있습니다.

CInt(Nz([Due Dates Totals].Count,0))
CInt(Nz([Completed Dates Totals].Count,0))
Calendar.[Month Number]
Calendar.[Month Name]

답변2

해결책을 찾았고, 문자열이 아닌 숫자가 되도록 Nz()함수를 곱했습니다.1

예를 들어 대신

Nz(Due Dates Totals.Count,0)

나는 사용했다

1 * Nz(Due Dates Totals.Count,0)

관련 정보