Bom dia, precisava de um help pessoal. Estou com o seguinte código: Código: DEFINE VAR pPesoNota AS INT INITIAL 0. FOR EACH sial_embarque WHERE sial_embarque.emp_codigo = 1 AND sial_embarque.emb_status = "F" and sial_embarque.emb_data >= datetime("23/01/2013 00:00:00") AND sial_embarque.emb_data <= datetime("23/01/2013 23:59:59") NO-LOCK BY sial_embarque.emb_codigo : FOR EACH SIAL_EMBARQUE_PRODUTO WHERE SIAL_EMBARQUE_PRODUTO.EMB_CODIGO = SIAL_EMBARQUE.EMB_CODIGO AND SIAL_EMBARQUE_PRODUTO.EMP_CODIGO = SIAL_EMBARQUE.EMP_CODIGO NO-LOCK. FOR EACH SIAL_PRODUTO WHERE SIAL_PRODUTO.PROD_CODIGO = SIAL_EMBARQUE_PRODUTO.PROD_CODIGO NO-LOCK. ASSIGN pPesoNota = (SIAL_EMBARQUE_PRODUTO.EPROD_QUANTIDADE * SIAL_PRODUTO.PROD_PESO). END. DISP sial_embarque.emb_codigo pPesoNota. END. END. Acontece que, quando eu mostro o peso nota na tela ela mostra da seguinte forma: Embarque | Peso nota 1022 233 1022 233 1022 233 1030 360 1030 360 1030 360 Estes campos que são iguais eu preciso somar eles para adicionar ao Relatório, no caso fazer o seguinte: Embarque | Peso nota 1022 699 1030 1080 Quero somar os valores e fazer aparecer só um. Alguém pode me dar uma luz de como faço isso?
Amigo, creio que o código abaixo já resolva seu problema. Código: DEFINE VAR pPesoNota AS INT INITIAL 0. FOR EACH sial_embarque WHERE sial_embarque.emp_codigo = 1 AND sial_embarque.emb_status = "F" and sial_embarque.emb_data >= datetime("23/01/2013 00:00:00") AND sial_embarque.emb_data <= datetime("23/01/2013 23:59:59") NO-LOCK BY sial_embarque.emb_codigo : ASSIGN pPesoNota = 0. FOR EACH SIAL_EMBARQUE_PRODUTO WHERE SIAL_EMBARQUE_PRODUTO.EMB_CODIGO = SIAL_EMBARQUE.EMB_CODIGO AND SIAL_EMBARQUE_PRODUTO.EMP_CODIGO = SIAL_EMBARQUE.EMP_CODIGO NO-LOCK. FOR EACH SIAL_PRODUTO WHERE SIAL_PRODUTO.PROD_CODIGO = SIAL_EMBARQUE_PRODUTO.PROD_CODIGO NO-LOCK. ASSIGN pPesoNota = pPesoNota + (SIAL_EMBARQUE_PRODUTO.EPROD_QUANTIDADE * SIAL_PRODUTO.PROD_PESO). END. END. DISP sial_embarque.emb_codigo pPesoNota. END. Espero ter ajudado. Abraço.
Olá Lima, agradeço sua ajuda, mas não resolve. Na verdade eu preciso fazer um SUM no campo, por exemplo, se meu retorno é assim... Embarque | Peso Nota 100 | 200 100 | 200 100 | 200 100 | 200 Eu preciso que ele fique assim Embarque | Peso Nota 100 | 800
Segue novo código, este tem que funcionar. Código: DEFINE VAR pPesoNota AS INT INITIAL 0. DEFINE TEMP-TABLE tt-peso-embarque NO-UNDO FIELD emb_codigo LIKE SIAL_EMBARQUE.EMB_CODIGO FIELD emp_codigo LIKE SIAL_EMBARQUE.EMP_CODIGO FIELD peso AS DECIMAL. EMPTY TEMP-TABLE tt-peso-embarque. FOR EACH sial_embarque WHERE sial_embarque.emp_codigo = 1 AND sial_embarque.emb_status = "F" and sial_embarque.emb_data >= datetime("23/01/2013 00:00:00") AND sial_embarque.emb_data <= datetime("23/01/2013 23:59:59") NO-LOCK BY sial_embarque.emb_codigo : FOR EACH SIAL_EMBARQUE_PRODUTO WHERE SIAL_EMBARQUE_PRODUTO.EMB_CODIGO = SIAL_EMBARQUE.EMB_CODIGO AND SIAL_EMBARQUE_PRODUTO.EMP_CODIGO = SIAL_EMBARQUE.EMP_CODIGO NO-LOCK. FOR EACH SIAL_PRODUTO WHERE SIAL_PRODUTO.PROD_CODIGO = SIAL_EMBARQUE_PRODUTO.PROD_CODIGO NO-LOCK. ASSIGN pPesoNota = (SIAL_EMBARQUE_PRODUTO.EPROD_QUANTIDADE * SIAL_PRODUTO.PROD_PESO). END. FIND FIRST tt-peso-embarque WHERE tt-peso-embarque.emb_codigo = SIAL_EMBARQUE.EMB_CODIGO AND tt-peso-embarque.emp_codigo = SIAL_EMBARQUE.EMP_CODIGO NO-ERROR. IF NOT AVAIL tt-peso-embarque THEN DO: CREATE tt-peso-embarque. ASSIGN tt-peso-embarque.emb_codigo = SIAL_EMBARQUE.EMB_CODIGO tt-peso-embarque.emp_codigo = SIAL_EMBARQUE.EMP_CODIGO. END. ASSIGN tt-peso-embarque.peso = tt-peso-embarque.peso + pPesoNota. END. END. FOR EACH tt-peso-embarque: DISP tt-peso-embarque.emb_codigo tt-peso-embarque.emp_codigo tt-peso-embarque.peso. END. Favor realizar os testes. Abraços.