2013-06-03 3 views
0

수업 견적을위한 잘 정의 된 모델을 지원하는 학교를 지원하기 위해 db (MS access 2010)를 개발 중입니다. 견적서마다 제품 목록이 모아진 다음 다양한 할인이 적용됩니다. 할인은 백분율 또는 절대 금액 일 수 있습니다. 지금까지 그렇게 쉽게. 문제는 비즈니스 로직에 다음이 필요하다는 것입니다.MS 액세스 보고서의 누적 합계 누적 사용

  1. 할인 수에 제한이 없습니다.
  2. 정의 된 순서로 적용 할 특정 할인 ("할인 서수"열, 값 1 (처음 적용)에서 100 적용 (마지막 적용))
  3. 할인의 순차적 적용은 견적의 누계 예 : 총 제품 1000 달러 할인 : 50 % 가치 : 500 달러 소계 500 달러 소계 : 500 달러 할인 : 25 달러 가치 : 25 달러 소계 : 475 달러 소계 : 475 달러 할인 : $ 10 % 가치 : $ 47.50 소계 : $ 427.50

이것은 "이전 행의 필드 값 얻기" t는 "필드의 값"이 실제로 누적 계산이라는 추가 된 비틀기와 함께 나타납니다. 그것은 재귀의 풍미가 있습니다 : 할인은 남아 있지만, 소계 (이전 소계).

위에서 언급 한 계산이 자체 참조이기 때문에 보고서에이를 구현하는 방법이 명확하지 않습니다. 나는 여기에 코드를 찾고 있지 않다. 문제에 대한 일반적인 접근법 (즉, VBA를 사용하는 어떤 종류의 전역 변수)을 찾지 않는다. 어떤 경우에 VBA에서 쿼리와 " 보고서가 될 것입니다 - 또는 계산 된 필드를 사용하는 트릭이긴하지만 많은 시간을 들여 하나를 계산하려고했습니다.) 이견있는 사람?

+0

이전 변수 'i = i + 1'을 사용하여 변수를 지정해야하는 것처럼 들리므로'value (v) = $ 1000, v = v * 0.5, v = v * 0.9' 다른 변수는 d라고 말하면서 : v = v * d' –

답변

1

그런 종류의 상황에서 필자는 항상 보고서를 열 때 채워질 새 테이블을 만들고 원래 테이블이 아닌 해당 테이블에 보고서를 기반으로합니다. 그렇게하면 필자가 필요로하는 모든 계산을 수행 할 수 있습니다. 그러면 보고서는 단순히 테이블의 "덤프"입니다. 복합 합계는 추가 열일 수 있으며 총계 섹션에만 표시됩니다.

0

자판 자체가 각 할인 단계를 연결하지 않으므로 정수를 사용하여 각 구매를 연결하는 구매 내역 테이블을 가질 수 있습니다. 할인이 (d)를 적용 (docmd.runsql를 사용하여) 당신이 테이블에 쓸 수있는 각각의 단계에서

v = Starting Value 
i = 1 

Do Until i = Last Discount 
    d = ws.Cells(i, 9).Value 
    v = v * (1 - d) 
    ws.Range("B2").Value = v 
    i = i + 1 
Loop 

과 값 (V)하지만 수 :

그래서 엑셀에서 I는 다음과 같이 사용합니다 꽤 느립니다. 그런 다음 순차적 할인이 본질적으로 올바르게 주문되므로 구매 ID로 표를 주문한 다음 값으로 내림차순으로 주문할 수 있습니다.