idanielv8 0 Denunciar post Postado Dezembro 26, 2012 Caros amigos, tenho um array do tipo Record: //declarando o array do tipo Record type TCst = Record Cst: String; CstVlr: Currency; end; ....... //declarando a variável Var WCst : array of TCst; ....... //configurando o tamanho dinamico do array SetLength(WCst,QryPisCofins.RecordCount); ....... //passando valores WCst.Cst := QryPisCofins.FieldByName('Cst_Pis').AsString; WCst.CstVlr := QryPisCofins.FieldByName('VlrContabil').AsCurrency; i := i + 1; ....... Está funcionando perfeito, agora eu quero somar os valores na qual possuem o mesmo codigo de CST, por exemplo: Registro 1 - cst 70, vlr = 10 Registro 2 - cst 50, vlr = 20 Registro 3 - cst 10, vlr = 45 Registro 4 - cst 70, vlr = 44 quero colocar o resultado em 2 variaveis o codigo cst e sua respectiva soma, ficando assim: codCST = 10, vlrCST = 45 codCST = 50, vlrCST = 20 codCST = 70, vlrCST = 54 <-- observem que aqui tem a soma Nao estou conseguindo ver como fazer isso... hoje nao estou legal na cabeça, me cerebro nao estah processando direito... Já tentei com for, com while, mas nada encaixa como resolver isso... eh aparentemente bem simples... Obrigado desde já... Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Dezembro 26, 2012 Olá amigos! Dependendo como estiver seu SQL, você já poderia fazer isso diretamente na sua Query QryPisCofins e trazer "pronto" para alimentar o seu array de CST. Como exemplo: Select CST, Sum( CSTVlr ) As CSTVlr From Tabela Group By 1 Na hora que você for alimentar seu array, ele já está com os valores agrupados de acordo com o CST. Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
idanielv8 0 Denunciar post Postado Dezembro 26, 2012 Eu tinha pensado nisso tambem amigo... mas acontece que esse relatório já é dividido em 2 partes, dai a primeira estah pronta, entao eu precisava no array, pois a consulta é assim: Declare @Mes int, @Ano int --================== -- INFORME MES/ANO: --================== Set @Mes = 10 Set @Ano = 2012 -- Consulta por CFOP Select it.Cod_Cfo, (Select Descricao from TBCFO Where Codigo = it.COd_Cfo) as Descricao, it.Cst_Pis, VlrContabil = SUM(Round(it.Vlr_LiqItem-it.Vlr_RecSbt,2)), VlrMerc = SUM(Round(it.Prc_Unitar*it.Qtd_Produto*(1-it.Per_Desconto/100),2)), VlrDesp = SUM(it.Vlr_DespRateada), VlrDesc = SUM(it.Vlr_DescRateado), VlrRepasse = SUM(it.Vlr_RepIcms), VlrRessarcimento = SUM(it.Vlr_SbtRes), VlrIpi = SUM(it.Vlr_Ipi), Fill = ' ', VlrTotIte = Round(SUM(it.Vlr_LiqItem-it.Vlr_Ipi-it.Vlr_RecSbt),2), VlrAlqPis = SUM(it.Alq_Pis), VlrAlqCofins = SUM(it.Alq_Cofins), VlrBasPis = SUM(it.Vlr_BasPis), VlrBasCofins = SUM(it.Vlr_BasCofins), VlrPis = Round(SUM(it.Vlr_Pis),2), VlrCofins = Round(SUM(it.Vlr_Cofins),2) From NFSIT it Inner Join NFSCB cb on it.Cod_Estabe = cb.Cod_Estabe and it.Ser_Nota = cb.Ser_Nota and it.Num_Nota = cb.Num_Nota Where YEAR(cb.Dat_Emissao) = @Ano And MONTH(cb.Dat_Emissao) = @Mes And cb.Status = 'F' Group by it.Cod_Cfo, it.Cst_Pis UNION Select it.Cod_Cfo, (Select Descricao from TBCFO Where Codigo = it.COd_Cfo), it.Cst_Pis, VlrContabil = SUM(Round(it.Vlr_LiqIte-it.Vlr_DifTri,2)), VlrMerc = SUM(Round(it.Prc_Unitar*it.Qtd_Pedido*(1-it.Per_DescItem/100),2)), VlrDesp = SUM(it.Vlr_DespRateada), VlrDesc = SUM(it.Vlr_DescRateado), VlrRepasse = 0, VlrRessarcimento = SUM(it.Vlr_SbtRes), VlrIpi = SUM(it.Vlr_Ipi), Fill = ' ', VlrTotIte = Round(SUM(it.Vlr_LiqIte-it.Vlr_Ipi-it.Vlr_DifTri),2), VlrAlqPis = SUM(it.Alq_Pis), VlrAlqCofins = SUM(it.Alq_Cofins), VlrBasPis = SUM(it.Vlr_BasPis), VlrBasCofins = SUM(it.Vlr_BasCofins), VlrPis = SUM(it.Vlr_Pis), VlrCofins = SUM(it.Vlr_Cofins) From NFEIT it Inner Join NFECB cb on it.Protocolo = cb.Protocolo Where YEAR(cb.Dat_Movimento) = @Ano And MONTH(cb.Dat_Movimento) = @Mes And cb.Status = 'F' Group by it.Cod_Cfo, it.Cst_Pis ORDER by it.Cod_Cfo, it.Cst_Pis Compartilhar este post Link para o post Compartilhar em outros sites
idanielv8 0 Denunciar post Postado Dezembro 27, 2012 Cara, como tive urgência, fiz sua dica mesmo do select. Não é o que eu queria mas deu certo!!! Obrigado... agora como faço para remover esse post ou colocar que está solucionado? Compartilhar este post Link para o post Compartilhar em outros sites