Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Braulio Holtz

Problema no select com DAO

Recommended Posts

Gente, estou com um problema que não estou conseguindo resolver, vou postar o código

 

public DataTable FindByData(double data, Usuario usu)
		{
			string query = Statements.SELECT_CLIENTE;

			SqlParameter data_inicial = new SqlParameter("data_inicial", DateTime.Now.Date.AddDays(-data).ToString());
			SqlParameter data_final = new SqlParameter("data_final", DateTime.Now.Date.ToString());

			query += " WHERE data_inicio between CAST('@data_inicial' AS datetime) and CAST('@data_final' AS datetime)";

			if (usu.Type == UserType.representante)
			{
				Representante rep = RepresentanteDAO.GetInstance().FindByIDUser(usu.ID);
				query += " AND representante = " + rep.ID;
			}


			//query += "ORDER BY CAST(data_inicio AS datetime) DESC";

				return SqlHelper.ExecuteDataset(Base.Config.getConnection(),
												CommandType.Text,
												query, data_inicial, data_final).Tables[0];
		}

Acontece que tentei de tudo que é jeito e quando comento a linha do Where funciona listando todos, mas eu não entendo porque eu tinha mandado pra escrever minha query com esse where e dai coloquei numa query sql pra eu testar e funcionou filtrando certinho e aparecendo os três.

Porque assim não está mostrando nenhum registro? Acho estranho porque esse mesmo código converti pra public string e dei um return pro query e apareceu a query neste formato SELECT ...... FROM ....... WHERE data_inicio between CAST('24/5/2009 00:00:00' AS datetime) and CAST('23/6/2009 00:00:00' AS datetime) e dai eu coloco pra testar esse mesmo código que recebo no software que faz conexão com o banco e aparece alguns registros.

 

[update]Por incrivel que pareça meu erro está no tal do between, eu ainda não consegui uma solução pra isso, pois na aplicação com between não exibe nada e no software que eu uso pra conectar no mesmo banco coloco o mesmo código com between e recebe a galerinha. Tem alguma diferença nisso? como será que resolvo?

[/update] :(

 

[update]O problema está no CAST, mas tem lógica só na aplicação dar erro?

[/update]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente usar DateParty ao invés de between ou então já que ele só da erro na aplicação tente fazer com store procedure assim o comando sql roda no banco e no código você só chama a store procedure passando os parâmetros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.