Usuário com melhor resposta
Erro ao filtrar dados para relatorio

Pergunta
-
Boa Tarde Galera..
eu tenho o seguinte codigo.
Private Sub imprimeEquipamentoSelecionadoAnalitico() Dim conn As String = My.Settings.SIGIURB_2009ConnectionString() Dim da As New OleDbDataAdapter(" select * from Rel_Analitico_Equipamento where data Between #" & dtpinicio.Value.ToShortDateString & "# and #" & dtpfim.Value.ToShortDateString & "#" + "and contrato='" & cbxcontrato.Text & "'" + "and placa='" & cbxitem.Text & "'", conn) Dim ds As New _SIGIURB_2009DataSet() Dim rpt As New Relatorio_Analitico_Equipamento() Dim frm As New Visualizar_relatorio() Try da.Fill(ds, "Rel_Analitico_Equipamento") rpt.SetDataSource(ds) frm.CrystalReportViewer1.ReportSource = rpt frm.Show() Catch ex As Exception MsgBox(ex.Message) End Try End Sub
Num formulario preencho os seguinte dados para gerar o relatorio
data inicial e data final
o numero do contrato
e o equipamento
o problema que estou tendo é.
Se o intervalo que estou selecionado por exemplo data inicial 18/10/2010 e data final 31/10/2010
ele faz a consulta e gera o relatorio sem problemas,
mas se o intervalo é data inicial 18/10/2010 e datafinal 02/11/2010 ele me traz o relatorio sem gerar erros, mas nao filtra as datas corretamente.
Resumindo quando a data inicial(dia) é menor que a data final(dia) ele nao funciona corretamente.
Alguem pra dar um help..
GRato.algumas informações a mais
uso o vb.net 2005 e o banco access, a data esta no formato short.
Valeu.
Ricardo
Respostas
-
Ricardo,
Utilize parâmetros nos seus comandos ADO.NET ao inves de ficar concatenando os valores no CommandText... Isso evita esse problema que você está tendo e muitos outros:
http://msdn.microsoft.com/pt-br/library/system.data.oledb.oledbparameter.aspx
André Alves de Lima
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 11 de novembro de 2010 22:22
- Marcado como Resposta Levi DomingosModerator terça-feira, 16 de novembro de 2010 22:24
Todas as Respostas
-
Olá Ricardo,
Lembro alguma coisa de que as queries com data no Access precisam ser testadas com cercas ("#"), como já estás fazendo, mas em formato mm/dd/yyyy (mês/dia/ano - fixo). No teu exemplo, estás utilizando Value.ToShortDateString, que deve estar assumindo uma configuração do sistema operacional, que provavelmente está como dd/mm/yyyy (dia/mês/ano).
Sds.,
Daniel Ethur Porto Alegre/RS- Editado Daniel Ethur segunda-feira, 8 de novembro de 2010 17:00 Erro de português
-
Ricardo,
Utilize parâmetros nos seus comandos ADO.NET ao inves de ficar concatenando os valores no CommandText... Isso evita esse problema que você está tendo e muitos outros:
http://msdn.microsoft.com/pt-br/library/system.data.oledb.oledbparameter.aspx
André Alves de Lima
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 11 de novembro de 2010 22:22
- Marcado como Resposta Levi DomingosModerator terça-feira, 16 de novembro de 2010 22:24