Descrição:
Como agrupar dados por minuto no relatório da seção no Elipse E3?
Solução:
Para isso, primeiro insira uma nova seção Group Header/Footer no relatório da seção.
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 dados por minuto, será necessário adicionar um campo ao relatório da seção que receberá a atribuição de todos os minutos existentes no campo que contém a data (ex.: E3TimeStamp), para posteriormente associá-lo 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 para visualização. 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.
A aplicação exemplo em anexo foi desenvolvida no Elipse E3 versão 6.6 Build 292.
Anexos:
Como eu poderia fazer para agrupar a cada 5 minutos ao invés de 1 minuto neste mesmo caso?