2012-09-26 4 views
1

데이터가 InvoiceShipments 인 테이블이 있습니다. 송장에 실린 각 제품에 대해 행이 계속됩니다. 각 제품은 제품 범주에 속하며 쿼리 할 수 ​​있습니다. 제품 중 일부는 Bill of Material으로 완성 된 좋은 제품입니다. 여기에서 Bill of Materials (BOM)은 완제품을 만들기 위해 결합 된 부품 목록입니다.Crystal Report XI - 조건부 합계

InvoiceShipments 테이블에는 완제품이 가격이 붙지 만 비용이 없습니다. 그런 다음 완성 된 제품의 부품 (BOM)이 이어지며 비용은 있지만 가격은 없습니다. 나는 모든 구성 요소 항목을 나열하고 완제품이가는 별도의 테이블을 가지고 있습니다. 구성 품목은 하나 이상의 BOM에 속할 수 있습니다.

현재 제품 범주 (조인에서 다른 테이블로)를 기준으로 원하는 제품으로 InvoiceShipments을 필터링 할 수 있습니다. 내가 원하는 것은 좋은 번호를 완성하고 해당 BOM을 구성하는 모든 부품 번호 목록을 가져온 다음 InvoiceShipments로 돌아가서 해당 구성 요소 번호와 일치하는 모든 행의 비용을 합산하는 것입니다. 송장#. 하지만, 공식과 함께 할 것을 명령 테이블과는 어떤 쿼리 수준에서 어떻게 해야할지 충분히 긴 크리스탈을 사용하여에 등

Sample Screenshots:

톱 테이블 없었다 갤러리는 BOM 테이블이고 두 ​​번째 테이블은 InvoiceShipments이고 세 번째 테이블은 원하는 결과입니다.

도움을 주시면 감사하겠습니다.

답변

0

귀하가 수집 한 정보에서 인보이스 번호를 결합하고 완제품 정보를 사용하고자합니다. 나는 비슷한 것을했는데, 해결책은 조금 이상하지만 작동한다. 당신은 주문 ID, SKU 및 제품 이름

가격 < IF> 0 AND THEN 비용 = 0 에 대한 송장 번호

  • 수식을 작성하여 InvoiceShipments 테이블

    1. 그룹이 필요 Orider ID '< - 화학식 (SKU, 제품명) ELSE ""에 따라 변경이

    2. 삽입 -> 최대 같은 식의 각각에 요약 및 t에 배치 그는 인보이스 라인을 그룹화했습니다.

    3. 수량이 일정하기 때문에 해당 필드를 그룹화 된 송장 행에 입력 할 수 있습니다.
    4. SUM을 사용하여 가격 -> 가격에 대한 요약을 삽입하고 그룹화 된 송장 행에 배치하십시오.
    5. 세부 정보 숨기기.

    이렇게하면 필요한 결과를 얻을 수 있습니다. 귀하의 수식이 완성품 정보 만 인쇄하고 다른 항목은 비어 있기 때문에 상황이 발생합니다. 따라서 MAXIMUM을 사용하면 비어 있지 않은 항목이 인쇄됩니다.

    희망이 도움이됩니다.


    새로운 솔루션

    나는이 솔루션을 테스트 할 수 없습니다 그래서 나는 설정은 데이터처럼 어떤 테이블이나 뷰가없는, 그러나 희망 당신은 좋은 솔루션을 공식화 수있는 충분한 정보가있다

    BillofMaterials에서 완제품 식별을 위해 InvoiceShip에서 자료를 사용할 수 없습니다. 자료는 반복됩니다. 완성품을 사용하여 식별해야합니다. 테이블을 추가 할 때 InvoiceShipments1을

    1. InvoiceShipments에 추가하고 이름을 변경 (오른쪽 창을 마우스 오른쪽 테이블을 클릭하고 이름을 바꿉니다.
    2. 선택 전문가를 사용하여 완성 된 제품을 격리 할 것. (가격 <> 0과 비용을 = 0)
    3. 데이터베이스 -...> 데이터베이스 전문가 당신의 BillofMaterials 테이블에 링크 추가 SKU를 productSku를에 왼쪽 외부 이제 재료가 송장 번호와 연관된

    에 참여, 우리는 시도의 또 다른 사본을 연결할 수 있습니다 BOM에 대한 INvoiceShipments. 이것은 까다 롭습니다.

    1. 데이터베이스 -> 데이터베이스 전문가. InvoiceShip 테이블 이름을 InvoiceShipments2로 변경하십시오. InvoiceShipments2.invoice #를 InvoiceShipments1.Invoice #에 연결하고 InvoiceShipments2.SKU를 Material #에 연결하십시오. 열을 InvoiceShipments1 및 InvoiceShipments2 번갈아 수식을 만들기 왼쪽 외부
    2. 가입 사용에 OrderID, SKU 및 제품 이름

      IF ISNULL ({InvoiceShipments1.OrderID}) THEN {InvoiceShipments2.OrderID} ELSE {InvoiceShipments1 .OrderID}

    3. , 송장이 완제품이 포함 된 경우 (이전 단계에서 공식으로 InvoiceShipments2.invoice 번호 및 SKU (SKU 공식 버전)

    4. 그룹을 결합 난을 수식을 만들기 하나의 인보이스에 대해 2 줄을 생성합니다. GF에 넣어 InvoiceShipments2.invoice에 #
    5. , OrderID를 (식 버전), SKU (화학식 버전) ProductNmae (화학식 버전) InvoiceShipments2.quantity, Summerize (InvoiceShipments2.price) Summerize (InvoiceShipments2.cost)
    6. GH 숨기기

    희망!

  • +0

    죄송합니다. 동일한 인보이스에 2 개의 완제품이있는 경우 내 생각에는 문제가 아니라 내 인스턴스에서 제대로 작동하지만 마음에 들지 않습니다. 내가 뭔가를 생각해 내면 내가 너에게 알려줄거야. –

    +0

    감사합니다. 나는 다른 선택권이있다. productCategory라는 새 필드를 추가하고 있습니다. 완성품에 대한 ProductCategory는 하나의 이름을 가지며, 구성품에 대한 ProductCategory는 다른 것입니다. 그래서 각 행을 점검하여 완성 된 카테고리에 있는지 확인한 다음 다음 행을 반복하고 productCategory가 구성 품목 인 모든 원가를 합산하여 원본에 합계를 반환합니다. 좋은 행을 마쳤습니다. Crystal에서 구문 론적으로 어떻게 할 지 모르겠습니다. – user1700538