KB-35784: Exibindo valores com milissegundos em um Relatório.

Descrição:

Como exibir o valor de um campo com milissegundos em um Relatório?

Solução:

A partir da versão 3.5 b. 174, para formatar uma data/hora com milissegundos, a propriedade DataField do campo do relatório deve ter o seguinte valor:

=E3Globals.E3Format(E3TimeStamp, "dd/MM/yyyy HH:mm:ss.000")

_______________________________________________________________________
Se a versão utilizada for inferior a 3.5 b.174, utilize uma das soluções apresentadas abaixo:

1. Insira o cálculo abaixo na propriedade DataField do objeto Campo de Dados de um Relatório:

 

=Right("0" + CStr(Day(Fix((CDbl(E3TimeStamp) + (1.0 / 172800000.0))*86400.0)/86400.0)),2)+"/"+Right("0" +CStr(Month(Fix((CDbl(E3TimeStamp) + (1.0/172800000.0))*86400.0)/86400.0)),2)+"/"+CStr(Year(Fix((CDbl(E3TimeStamp) + (1.0 / 172800000.0))*86400.0)/86400.0))+" "+Right("0" +CStr(Hour(Fix((CDbl(E3TimeStamp)+(1.0 /172800000.0))*86400.0)/86400.0)),2)+":"+String(2-Len(CStr(Minute(Fix((CDbl(E3TimeStamp)+(1.0 /172800000.0))*86400.0)/86400.0))), "0") & CStr(Minute(Fix((CDbl(E3TimeStamp)+(1.0 /172800000.0))*86400.0)/86400.0))+":"+String(2-Len(CStr(Second(Fix((CDbl(E3TimeStamp) + (1.0 /172800000.0))*86400.0)/86400.0))), "0") & CStr(Second(Fix((CDbl(E3TimeStamp) + (1.0 /172800000.0))*86400.0)/86400.0)) + "." +String(3-Len((Round(((((CDbl(E3TimeStamp)+(1/172800000))*86400.0) -Fix((CDbl(E3TimeStamp) + (1/172800000))*86400.0))*1000),0))), "0") & (Round(((((CDbl(E3TimeStamp) +(1/172800000))*86400.0) - Fix((CDbl(E3TimeStamp)+(1/172800000))*86400.0))*1000),0))

 

2. Outra solução é deixar a propriedade DataField vazia, e colocar o seguinte script na seção Detail:

 

Function FormatDateMs(dtDate)
  DIM dMSec, dSec, dt
 
  ' Primeiro converte a data de Dias para milissegundos
  ' (já arredonda os milissegundos)
  dMSec = Round(CDbl(dtDate) * 86400000)
 
  ' Pega o número de segundos (descarta os milissegundos)
  dSec = Fix(dMSec / 1000)
 
  ' Gera uma data novamente (sem os milissegundos)
  dt = CDate(dSec / 86400)
 
  ' Calcula os milissegundos (0 a 999)
  dMSec = dMSec - (dSec * 1000)
 
  FormatDateMs = Right("0" + CStr(Day(dt)), 2) + "/" + _
                 Right("0" + CStr(Month(dt)), 2) + "/" + _
                 CStr(Year(dt)) + " " + _
                 Right("0" + CStr(Hour(dt)), 2) + ":" + _
                 Right("0" + CStr(Minute(dt)), 2) + ":" + _
                 Right("0" + CStr(Second(dt)), 2) + "." + _
                 Right("00" + CStr(dMSec), 3)
End Function
 
Sub OnFormat
  ' Repetir a linha abaixo para cada campo Data/Hora que você
  ' desejar mostrar os milissegundos, apenas trocando "Field1"
  ' pelo nome do objeto "Field", e "E3TimeStamp" pelo nome do campo.
  Report.Sections("Detail").Controls("Field1").Text = _
                          FormatDateMs(Report.Fields("E3TimeStamp"))
End Sub

NOTA: este exemplo utiliza o campo E3TimeStamp, mas o código pode ser alterado para qualquer outro campo.

Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 0 / 5. Count: 0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *