쿼리에 group by
과 같은 기능을 사용할 때 집계 함수를 사용하는 데 문제가 있습니다. 전체 집계 함수가 전체 쿼리 레코드 세트에 적용되는 대신 쿼리의 특성에 따라 결정되는 선택 그룹에만 적용됩니다. 예를 들어 :이미 그룹화 된 쿼리에서 "totals"함수 사용
Person Date Able
-----------------------------
A 21/05/13 0
B 21/05/13 -1
C 21/05/13 -1
D 21/05/13 0
(grouped by Person, Date, Able)
집계 함수를 적용 할 때 :
Person Date Able Max(Able) Min(Date)
----------------------------------------------------
A 21/05/13 0 0 21/05/13
B 22/05/13 -1 -1 22/05/13
C 23/05/13 -1 -1 23/05/13
D 24/05/13 0 0 24/05/13
를 데이터가 완전히 그룹 해제 된 경우를 제외하고 집계 함수가 완전히 중복 만들어집니다. 지금까지 나는 이것을 사용하여 주위를 돌아 다니고있다 :
1) 다른 쿼리를 사용하여 초기 쿼리를 참조하고 실제 집계 값을 결정한다. 2) d
기능 (dlookup
, dcount
등) 내 특정 시나리오에서
를 사용하여 양식 호출이 두 번째 쿼리를 가지고, 내가 (특정 순서로 제시 될 필요가 위의 매우 유사한 목록을()가 ID에 따라 순위가 결정됨). 그러나 다른 순위 유형을 정의하기 위해 쿼리에서 식을 사용하고 있습니다. 아이디어는 (조건부 서식을 사용하여)이 새 순위의 첫 번째 레코드를 표시하는 것입니다.
Person Date ID CalculatedRank
--------------------------------------------
A 21/05/13 1 4
B 21/05/13 2 2
C 21/05/13 3 3
D 21/05/13 4 1
아래 그림 이상적 I 용이하여 acheived 될 수있는 한 최초의 판정 다른 열 싶은 :
first: [CalculatedRank] = Min([CalculatedRank])
그러나, 최소()가 저를 제공되지 않는 상술 한 바와 같이 1 , 그것은 줄 단위로 나에게 그것을주고있다. (최소값은 항상 1이 아니므로 임의로 설정할 수는 없다.)
지금 당장이 첫 번째 쿼리를 참조 할 때 별도의 쿼리를 사용하고 계산 된 순위를 기준으로 정렬합니다. 조건부 형식화는 dlookup을 사용하여 두 번째 쿼리에서 첫 번째 여부를 결정할 수 있습니다. 그러나 폼이 새로 고침되거나 쿼리가 호출 될 때마다 모든 단일 행의 조건부 서식이 다른 dlookup을 트리거 한 다음 모든 행에 대해 새 순위를 다시 계산하는 첫 번째 쿼리를 참조합니다.
상상할 수 있듯이 지연 시간이 눈에 띄게 커서 커서가 5 초 이상 유휴 상태가됩니다. 너무 액세스 내부 메커니즘에 대해 확실하지 않지만 inbuilt 디버거를 사용하여 4 행의 레코드 집합에 대한 쿼리는 내 CalculateRank()
함수를 순전히 두 번째 쿼리를 호출하는 조건부 서식을 통해 12 번 호출해야했습니다.
요약하면 필자는 집계 함수를 적절히 사용하기 위해 별도의 쿼리 (따라서 dlookup)가 필요하다는 점을 상당히 좁혔습니다. 모든 쿼리를 하나의 쿼리로 유지할 수 있었다면 조건부 서식은 다른 쿼리에서 dlookup을 사용하여 상태를 결정할 필요가 없습니다.
저는이 문제가있는 유일한 사람이 아니며 모든 누적 쿼리를 피할 수있는 솔루션이 있는지 궁금합니다.
언제나처럼 어떤 도움을 주시면 감사하겠습니다.
Gord, 늦은 답변을 드려 죄송합니다. 나는 당신의 속임수를 사용할 수 있는지, 그리고 이미 그것을 줄이기 위해 이미 가지고있는 것들을 사용할 수 있는지 알기 위해 약간의 시간이 걸리기를 희망했지만 나는 성공적이지 못했습니다. 내가 볼 수있는 일종의 호출 스택이 있었으면 좋겠어요. 그래서 조건부 서식이 언제, 왜 반복적으로 재 쿼리 될지를 판단 할 수있었습니다. 나는 그것이 미래 버전의 접근에서 다루어 져야 할지도 모르는 뭔가라고 생각한다. 노력과 의견을 보내 주셔서 다시 한번 감사드립니다. – rbhalla