Ir para conteúdo
Fórum Script Brasil
  • 0

DataReport com intervalo de datas


Guest --Marco Antonio --

Pergunta

Guest --Marco Antonio --

Boa tarde a todos!

Tenho um projeto em VB6, que, dentre outras funções gera relatórios em intervalos de datas.

Após o cadastro, os registros são gravados em uma tabela do Access. Para imprimir o relatório eu uso um comando SHAPE, onde são escolhidos e relacionados dados de um comando pai e um comando filho de um Data Environment.

O problema é que quando eu coloco datas dentro do mesmo mês, o relatório funciona normalmente. Mas se eu coloco na data inicial por exemplo 25/03/2008 e na data final 02/04/2008, o aparecem apenas os registros do dia 26/03/2008.

Creio que deva ser algum problema de formatação de data, pois o shape funciona bem.

Alguém pode me ajudar na formatação de data para que o programa entenda que entre 26/03/2008 e 02/04/2008 há diferença?

Desde já agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
Guest --Marco Antonio --

Eu sei que devo usar o comando select from between. Mas o problema mesmo deve estar na formatação dos campos de data. Talvez não deva ser o mesmo tipo de formatação em relação aos dados do banco de dados e os dados do Data Picker inicial e final. Algume pode me mostrar upções de formatação para datas?

Desde já obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Marco Antonio --

Pelo que percebo, o datapicker está considerando o dia como mês e o mês como dia. Por Exemplo:

Se eu quero ver um registro com data do dia 02/04/2008 e colocar essa data nos dois data picker (inicial e final) o relatório aparece em branco. Mas se eu coloca a data 04/02/2008 nos dois data picker, o relatório me mostr o registro.

O Data picker está considerando o campo dia e o campo mês ao contrário.

Como faço para formatar isso?

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Marco Antonio --

O banco de dados estpa como data normal.

A impressão que eu tenho é que se o dia for um valor maior que o mês (ex. 27/03/2008), o DataPicker e o banco de dados se comunicam no formato dd/mm/yy. Mas caso o dia seja um valor menor que o mês (ex. 02/04/2008), então ou o DataPicker fica no formato mm/dd/yy, pois para eu visualizar um registro da data 02/04/08, eu tenho que digitar no DataPicker "04/02/08".

Já tentei formatar o campo de data ewm várias opções na propriedade format do Data Picker, mas qualquer opção que eu coloque, ela simplesmente é ignorada e acontece o caso descrito acima.

Existe alguma forma de FORÇAR o Data Picker e/ou o banco de dados (access) a considerar sempre a ordem dd/mm/yy?

Existe algum código ou opção no access pra forçar isso também?

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Marco Antonio --

Estou usando sim.

Eu tenho um formulário (formdata) com dois DataPicker (inicial e final) e um botão pra mostrar o DataReport. No evento Initialize do DataReport eu coloquei o seguinte código:

------------------------------------------------------------------------------------------

Private Sub DataReport_Initialize()

'define as variáveis usadas no projeto

Dim strSQL As String

Dim strAte As String

Dim strInicio As String

Dim oConn As New ADODB.Connection

Dim oRS As New ADODB.Recordset

oConn.CursorLocation = adUseClient

'estou usando a conexão que já foi criada no dataenvironment

oConn.ConnectionString = DataEnvironment1.Connection1

'abre a conexão com o banco de dados

oConn.Open

'pega as datas de inicio e de fim

With formdata

strInicio = .dataini.Value

strAte = .datafin.Value

End With

'define o titulo do relatório

DataReport1.Title = "De: " & strInicio & " Até: " & strAte

'define o comando SHAPE

strSQL = "SHAPE { "

strSQL = strSQL & "SELECT DISTINCT u.* "

strSQL = strSQL & "FROM unidades u INNER JOIN registro r ON u.codunidade = r.codunidade "

strSQL = strSQL & "WHERE r.data "

strSQL = strSQL & "BETWEEN #" & strInicio & "# "

strSQL = strSQL & "AND #" & strAte & "# "

strSQL = strSQL & "ORDER BY u.codunidade "

strSQL = strSQL & "} AS Command1 "

strSQL = strSQL & "APPEND ({ "

strSQL = strSQL & "SELECT registro.* "

strSQL = strSQL & "FROM registro "

strSQL = strSQL & "WHERE data "

strSQL = strSQL & "BETWEEN #" & strInicio & "# "

strSQL = strSQL & "AND #" & strAte & "# "

strSQL = strSQL & "} AS Command2 "

strSQL = strSQL & "RELATE 'codunidade' TO 'codunidade') "

strSQL = strSQL & "AS Command2 "

oRS.Open strSQL, oConn, adOpenForwardOnly

'atribui o recordset gerado ao datareport

Set DataReport1.DataSource = oRS

End Sub

---------------------------------------------------------------------------------------------------

Por esse código deveria funcionar corretamente e funciona de certa forma. O problema é o que eu informei nas respostas anteriores. Se quiser, eu mando o projeto pra você. É so me informar o email.

Desculpe a falta de um CODEBOX. quando eu tento abrir um, não está dando certo aqui.

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Marco Antonio --

Esse código funcionou sim, cara!

Eu estava justamente no fórum para responder esse tópico pois eu tinha achado essa mesma solução. Só que eu formato as strings antes do comando SHAPE. Ex:

strInicio = Format(strInicio, "mm/dd/yy")

strAte = Format(strAte, "mm/dd/yy")

O seu exemplo funcionou perfeitamente também. Sem contar que agora aprendi a formatar dentro do código.

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Boa Tarde, poderiam me ajudar em uma questão muito parecida com intervalo de Datas??

Coloquei as instruções muito simples abaixo no meu formulario de data (frmData):

Private Sub Command1_Click()

Dim DataInicial As String

Dim DataFinal As String

DataInicial = Format(actDataInicial.Value, "dd/mm/yyyy")

DataFinal = Format(actDataFinal.Value, "dd/mm/yyyy")

DataEnvironment1.tblobtren_G DataInicial, DataFinal

Unload Me

dtRelDetMed.Show 1

End Sub

Private Sub frmRelDetMed_Load()

actDataInicial.Value = Date

actDataFinal.Value = Date

End Sub

Até que funciona, mas por exemplo se eu solicitar um intervalo de data 01/07/2008 a 31/07/2008, deveria aparecer todos os registros neste intervalo, certo? Mas não aparece nada...

É um trabalho de faculdade, me ajudem!

Desde já agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...