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?