Descrição:
Como agrupar dados por minuto no relatório?
Solução:
Para isso, primeiro insira uma nova Seção Group Header/Footer no relatório.
Para definir o critério de agrupamento, configure a propriedade DataField do GroupHeader. Este procedimento pode ser realizado via scripts do relatório.
Para agrupar por minuto, será necessário adicionar um campo ao relatório que receberá a atribuição de todos os minutos existentes no campo que contém a data (ex.: E3TimeStamp), para posteriormente ser associado a propriedade DataField do GroupHeader.
Exemplo de script:
Sub ActiveReport_ReportStart 'Esse script é necessário para o correto funcionamento de controles E3Chart 'Caso deseje acessar dados da aplicação, é possível utilizar o objeto 'Application' criado abaixo dim Application = Activator.CreateInstance(Type.GetTypeFromProgID("Reports.E3ApplicationLink")) Application.LinkWithApplication(rpt) Me.GroupHeader1.DataField = "Minute" End Sub Sub ActiveReport_DataInitialize rpt.Fields.Add("Minute") End Sub Function ActiveReport_FetchData(ByVal EOF as Boolean) as Boolean 'msgbox(Minute(rpt.Fields.Item("E3Timestamp").Value)) rpt.Fields.Item("Minute").Value = Minute(rpt.Fields.Item("E3Timestamp").Value) ActiveReport_FetchData = EOF End Function
No GroupFooter, insira os Campos da Consulta a serem visualizados. Depois, configure as seguintes propriedades nos campos a terem sua média calculada:
SummaryFunc = 1 – ddSFAvg
SummaryGroup = GroupHeader1
SummaryRunning = 1 – ddSRGroup
SummaryType = 3 – ddSMSubTotal
A propriedade SummaryFunc define o cálculo a ser realizado. Caso deseje calcular a soma ou os valores mínimo e máximo ao invés da média, basta usar outra função.
Veja mais detalhes sobre as propriedades mencionadas no Manual de Referências de Scripts do E3.
A aplicação exemplo em anexo foi desenvolvida no E3 versão 6.6 Build 292.
Como eu poderia fazer para agrupar a cada 5 minutos ao invés de 1 minuto neste mesmo caso?