Ir para conteúdo
  • Cadastre-se

Pesquisar na Comunidade

Showing results for tags 'aggregate'.

  • Search By Tags

    Digite tags separadas por vírgulas
  • Search By Author

Tipo de Conteúdo


Fóruns

  • Fórum Aberto - ACBr
    • Notícias do ACBr
    • Equipamentos testados
    • Base de Conhecimento
    • Dúvidas Gerais sobre o ACBr
    • ACBrSerial
    • ACBrSAT
    • ACBrNFe
    • ACBrDFe
    • Dúvidas sobre TEF
    • Dúvidas sobre PIX
    • ACBrMonitor PLUS
    • ACBrTXT
    • ACBrBoleto
    • ACBrDiversos
    • ACBrTCP
    • ACBrFramework
    • ACBrLIB
  • ACBr Pro
    • Dúvidas gerais
    • Duvidas Privadas
    • ACBrMonitorPLUS
    • NFe/NFCe - Nota Fiscal Eletrônica
    • DFe - Documentos Fiscais Eletrônicos
    • SAT / MFE
    • TEF
    • Boleto
    • ACBrSPED
    • ACBrTXT
    • Paf-ECF
    • Requisitos Fiscais por UF
    • ACBrLIB
  • Outros Assuntos
    • Boteco do ACBr
    • Legislação Fiscal e Tributária
    • Object Pascal - Delphi & Lazarus
    • Banco de Dados
    • Classificados
    • Dúvidas não relacionadas ao ACBr

Categorias

  • ACBr Pro
    • ACBrLib - PRO
    • ACBrMonitorPLUS - PRO
    • Utilitários - PRO
    • Dia do ACBr 1a edição
    • Dia do ACBr 2a edição
    • ACBrLib Android - Pro
  • Download Livre
    • ACBrLib - DEMO
    • ACBrMonitorPLUS - DEMO
    • Demos / Testes / Utilitários
    • Apresentações - Palestras
    • ACBrLib Android - Demo

Calendários

  • Eventos - Palestras - Webinars
  • Prazos SEFAZ
  • Calendário da Comunidade
  • ACBr Papo Pro
  • Feriados Nacionais

Find results in...

Find results that contain...


Data de Criação

  • Início

    End


Data de Atualização

  • Início

    End


Filter by number of...

Data de Registro

  • Início

    End


Grupo


Website URL

Encontrado 2 registros

  1. Boa tarde gente, tudo bem? Me falta um pouco de conhecimento sobre o ClientDataSet, procurei em tudo quanto é lugar e não encontrei a solução, espero que alguém possa me dar uma luz. Seguinte, tenho um ClientDataSet com um campo como Float, fkInternalCalc e com a mascara #,##0.00. Nesse campo os valores estão sendo arredondados, mas no Aggregate Field a soma (usei SUM no exp) é feito sem o arredondamento. Exemplo: Tenho 2 item com valor de 35.9450 No meu DbGrid aparece 35.95, a soma daria 71.90, mas no Aggregate aparece 71.89... Eu vi em um post que > 5 arredonda para cima = 5 mantem < 5 arredonda para baixo Mas no meu caso, eu só coloquei a mascara #,##0.00 no DisplatFormat e ele está arredondando sozinho dessa forma. Tentei usar o Currency = True para ambos, também tentei mudar o campo de Float para Currency e deu na mesma. Então, pelo o que eu li no forum não deveria arredondar o valor para 35.95, mas ele está fazendo isso... Com apenas dois itens a diferença é pouca, mas quando são tipo uns 56 itens a diferença fica grande. Alguém poderia me dar uma luz?
  2. Compartilhando essa classe que achei no site do Marcos Salles, pra quem gosta de usar campos aggregate no DataSet, essa função é uma mão na roda pois não precisamos mais cria-los, só chamar a função e passar o campo que queremos totalizar. -- unit UTypeAggregate; //https://marcosalles.wordpress.com/2011/01/30/criacao-de-campos-aggregates-rumtime-clientdataset/ interface uses DBClient, SysUtils; Type TypeAggregateERROR = class(Exception); TAggregateRetorne = (ftSomar,ftMaxima,ftContar,FtMedia); TOperacoes =class class function Retornar(ClientDataSet:TClientDataSet; Const cField:String; Tipo:TAggregateRetorne):String; end; implementation { TOperacoes } class function TOperacoes.Retornar(ClientDataSet: TClientDataSet; const cField: String; Tipo: TAggregateRetorne): String; begin try //ATENÇÃO: NÃO DEIXE O CAMPO TRAZER VALORES NULO NA PESQUISA DO SQL, ERRO NO CALCULO with ClientDataSet do begin case Tipo of ftSomar: begin AggregatesActive := False; if Aggregates.Find('SOMAR_'+ cField) = nil then with Aggregates.Add do begin Expression := 'Sum('+cField+')'; AggregateName := 'SOMAR_'+ cField; Active := True; end; AggregatesActive := True; Result := Aggregates.Find('SOMAR_'+ cField).Value; end; ftMaxima: begin AggregatesActive := False; if Aggregates.Find('MAXIMA_'+ cField) = nil then with Aggregates.Add do begin Expression := 'Max('+cField+')'; AggregateName := 'MAXIMA_'+ cField; Active := True; end; AggregatesActive := True; Result := Aggregates.Find('MAXIMA_'+ cField).Value; end; ftContar: begin AggregatesActive := False; if Aggregates.Find('CONTAR_'+ cField) = nil then with Aggregates.Add do begin Expression := 'Count('+cField+')'; AggregateName := 'CONTAR_'+ cField; Active := True; end; AggregatesActive := True; Result := Aggregates.Find('CONTAR_'+ cField).Value; end; ftMedia: begin AggregatesActive := False; if Aggregates.Find('MEDIA_'+ cField) = nil then with Aggregates.Add do begin Expression := 'Avg('+cField+')'; AggregateName := 'MEDIA_'+ cField; Active := True; end; AggregatesActive := True; Result := Aggregates.Find('MEDIA_'+ cField).Value; end; end; end; except on e:Exception do raise TypeAggregateERROR.Create('Erro na Totalização.'+sLineBreak+ 'Verifique se o campo contém valores NULO ou se o DataSet esta inativo'+ sLineBreak+ E.Message); end; end; end. Ex: FSUB_TOTAL_A := StrToFloatDef(TOperacoes.Retornar(cdsItensRateio, cdsItensRateioVALOR_TOTAL_A.FieldName, ftSomar), 0); FSUB_TOTAL_B := StrToFloatDef(TOperacoes.Retornar(cdsItensRateio, cdsItensRateioVALOR_TOTAL_B.FieldName, ftSomar), 0);
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...