Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

idanielv8

[Resolvido] array

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.