Consulta por Datas
Boa noite Pessoal...
Estou com problema para fazer consulta por datas, fiz o seguinte metodo porém não está correto...
Data de Parametro do Tipo Datetime: 07/10/2011 - Inicio e Fim
Camada DAL:
Camada BLL:
Camada UI:
pessoal me ajuda por favor
Estou com problema para fazer consulta por datas, fiz o seguinte metodo porém não está correto...
Data de Parametro do Tipo Datetime: 07/10/2011 - Inicio e Fim
Camada DAL:
public SqlDataReader consultaVendas(DateTime Dataini, DateTime Datafim)
{
SqlConnection cn = new SqlConnection();
VendasInformation venda = new VendasInformation();
try
{
cn.ConnectionString = Dados.StringDeConexao;
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = (SELECT * FROM Vendas WHERE DATA >= CONVERT(Varchar(10), @Dataini, 111) AND DATA <= CONVERT(Varchar(10), @Datafim, 111);
cmd.Parameters.AddWithValue(@Dataini, venda.Data);
cmd.Parameters.AddWithValue(@Datafim, venda.Data);
cn.Open();
SqlDataReader Leitor;
Leitor = cmd.ExecuteReader();
while (Leitor.Read())
{
venda.Codigo = Convert.ToInt32(Leitor[CODIGO]);
venda.Data = Convert.ToDateTime(Leitor[DATA]);
venda.Quantidade = Convert.ToInt32(Leitor[QUANTIDADE]);
venda.Faturado = Convert.ToBoolean(Leitor[FATURADO]);
venda.Codigocliente = Convert.ToInt32(Leitor[CODIGOCLIENTE]);
venda.Codigoproduto = Convert.ToInt32(Leitor[CODIGOPRODUTO]);
}
return Leitor;
}
catch (SqlException ERR)
{
throw new Exception(ERRO NA CONEXÃO + ERR.Message);
}
finally
{
cn.Close();
}
}
}
Camada BLL:
Camada BLL
public SqlDataReader consultaVendas(DateTime Dataini, DateTime Datafim)
{
return ObjDAL.consultaVendas(Dataini, Datafim);
}
Camada UI:
VendasInformation venda = new VendasInformation(); DateTime Dataini = DateTime.Parse(TxtDataini.Text, dd/MM/yyyy); DateTime Datafim = DateTime.Parse(TxtDatafim.Text, dd/MM/yyyy); VendasBLL dados = new VendasBLL(); dados.consultaVendas(Dataini, Datafim); TxtCodigo.Text = Convert.ToString(venda.Codigo); TxtQuantidade.Text = Convert.ToString(venda.Quantidade); TxtFaturado.Text = Convert.ToString(venda.Faturado); TxtCocCliente.Text = Convert.ToString(venda.Codigocliente); TxtCodProduto.Text = Convert.ToString(venda.Codigoproduto); TxtData.Text = Convert.ToString(venda.Data);
pessoal me ajuda por favor
Alan Miranda
Curtidas 0
Respostas
Inovação Ltda
23/12/2011
bom dia tente dessa forma.
(SELECT * FROM Vendas WHERE DATA between CONVERT(Varchar(10), @Dataini, 103) AND CONVERT(Varchar(10), @Datafim, 103));
T++
(SELECT * FROM Vendas WHERE DATA between CONVERT(Varchar(10), @Dataini, 103) AND CONVERT(Varchar(10), @Datafim, 103));
T++
GOSTEI 0
Alan Miranda
23/12/2011
Tentei assim também o erro que aparece é Erro: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. O parametro de data deve ser passado como string ou Datetime ?
Att
Att
GOSTEI 0
Inovação Ltda
23/12/2011
Como esta no banco ? Se for datetime, simplesmente use o convert(data,103) ok ?
T++
T++
GOSTEI 0
Inovação Ltda
23/12/2011
Verifique quais datas estão chegando na sql e troque o where por isso.
CONVERT(CHAR(10),Data,103) .
T++
CONVERT(CHAR(10),Data,103) .
T++
GOSTEI 0
Flavia Santos
23/12/2011
Você está passando as datas vazias. Olhe o método SqldataReader da sua camada DAL
public SqlDataReader consultaVendas(DateTime Dataini, DateTime Datafim)
{
SqlConnection cn = new SqlConnection();
VendasInformation venda = new VendasInformation();
try
{
cn.ConnectionString = Dados.StringDeConexao;
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = (SELECT * FROM Vendas WHERE DATA >= CONVERT(Varchar(10), @Dataini, 111) AND DATA <= CONVERT(Varchar(10), @Datafim, 111);
cmd.Parameters.AddWithValue(@Dataini, venda.Data);
cmd.Parameters.AddWithValue(@Datafim, venda.Data);
Troque as duas ultimas linhas a cima por:
cmd.Parameters.AddWithValue(@Dataini, Dataini);
cmd.Parameters.AddWithValue(@Datafim, Datafim);
Você também não precisa instanciar a sua classe venda, então no inicio do metodo SqlDataReader, você pode excluir a linha:
VendasInformation venda = new VendasInformation();
public SqlDataReader consultaVendas(DateTime Dataini, DateTime Datafim)
{
SqlConnection cn = new SqlConnection();
VendasInformation venda = new VendasInformation();
try
{
cn.ConnectionString = Dados.StringDeConexao;
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = (SELECT * FROM Vendas WHERE DATA >= CONVERT(Varchar(10), @Dataini, 111) AND DATA <= CONVERT(Varchar(10), @Datafim, 111);
cmd.Parameters.AddWithValue(@Dataini, venda.Data);
cmd.Parameters.AddWithValue(@Datafim, venda.Data);
Troque as duas ultimas linhas a cima por:
cmd.Parameters.AddWithValue(@Dataini, Dataini);
cmd.Parameters.AddWithValue(@Datafim, Datafim);
Você também não precisa instanciar a sua classe venda, então no inicio do metodo SqlDataReader, você pode excluir a linha:
VendasInformation venda = new VendasInformation();
GOSTEI 0
Flavia Santos
23/12/2011
Acho que assim da para entender melhor...
Você está passando as datas vazias. Olhe o método SqldataReader da sua camada DAL
public SqlDataReader consultaVendas(DateTime Dataini, DateTime Datafim)
{
SqlConnection cn = new SqlConnection();
VendasInformation venda = new VendasInformation();
try
{
cn.ConnectionString = Dados.StringDeConexao;
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = (SELECT * FROM Vendas WHERE DATA >= CONVERT(Varchar(10), @Dataini, 111) AND DATA <= CONVERT(Varchar(10), @Datafim, 111);
cmd.Parameters.AddWithValue(@Dataini, venda.Data);
cmd.Parameters.AddWithValue(@Datafim, venda.Data);
Troque as duas ultimas linhas a cima por:
cmd.Parameters.AddWithValue(@Dataini, Dataini);
cmd.Parameters.AddWithValue(@Datafim, Datafim);
Você também não precisa instanciar a sua classe venda, então no inicio do metodo SqlDataReader, você pode excluir a linha:
VendasInformation venda = new VendasInformation();
Você está passando as datas vazias. Olhe o método SqldataReader da sua camada DAL
public SqlDataReader consultaVendas(DateTime Dataini, DateTime Datafim)
{
SqlConnection cn = new SqlConnection();
VendasInformation venda = new VendasInformation();
try
{
cn.ConnectionString = Dados.StringDeConexao;
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = (SELECT * FROM Vendas WHERE DATA >= CONVERT(Varchar(10), @Dataini, 111) AND DATA <= CONVERT(Varchar(10), @Datafim, 111);
cmd.Parameters.AddWithValue(@Dataini, venda.Data);
cmd.Parameters.AddWithValue(@Datafim, venda.Data);
Troque as duas ultimas linhas a cima por:
cmd.Parameters.AddWithValue(@Dataini, Dataini);
cmd.Parameters.AddWithValue(@Datafim, Datafim);
Você também não precisa instanciar a sua classe venda, então no inicio do metodo SqlDataReader, você pode excluir a linha:
VendasInformation venda = new VendasInformation();
GOSTEI 0
Alan Miranda
23/12/2011
Então alterei a Camada DAL e agora está trazendo as informações tudo com zero...Creio que seja a Query que passo para o Banco de Dados:
Tenho somente três informações no banco SQL:
2011-11-07 19:54:09.657
2011-11-10 22:30:23.493
2011-11-10 22:32:26.430
Estou passado o parametro de Data assim DD/MM/YYYY - 07/11/2011 - Dataini e Datafim
Me ajudem por favor pessoal.
Vlw pela ajuda
public SqlDataReader consultaVendas(DateTime Dataini, DateTime Datafim)
{
SqlConnection cn = new SqlConnection();
VendasInformation venda = new VendasInformation();
venda.Data = Dataini;
venda.Data = Datafim;
try
{
cn.ConnectionString = Dados.StringDeConexao;
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = (SELECT * FROM Vendas WHERE DATA between CONVERT(Varchar(10), @Dataini, 103) AND CONVERT(Varchar(10), @Datafim, 103));
cmd.Parameters.AddWithValue(@Dataini, venda.Data);
cmd.Parameters.AddWithValue(@Datafim, venda.Data);
cn.Open();
SqlDataReader Leitor;
Leitor = cmd.ExecuteReader();
while (Leitor.Read())
{
venda.Codigo = Convert.ToInt32(Leitor[CODIGO]);
venda.Data = Convert.ToDateTime(Leitor[DATA]);
venda.Quantidade = Convert.ToInt32(Leitor[QUANTIDADE]);
venda.Faturado = Convert.ToBoolean(Leitor[FATURADO]);
venda.Codigocliente = Convert.ToInt32(Leitor[CODIGOCLIENTE]);
venda.Codigoproduto = Convert.ToInt32(Leitor[CODIGOPRODUTO]);
}
return Leitor;
}
catch (SqlException ERR)
{
throw new Exception(ERRO NA CONEXÃO + ERR.Message);
}
finally
{
cn.Close();
}
}
Tenho somente três informações no banco SQL:
2011-11-07 19:54:09.657
2011-11-10 22:30:23.493
2011-11-10 22:32:26.430
Estou passado o parametro de Data assim DD/MM/YYYY - 07/11/2011 - Dataini e Datafim
Me ajudem por favor pessoal.
Vlw pela ajuda
GOSTEI 0
Alan Miranda
23/12/2011
Alguém ?
GOSTEI 0