none
SQL SERVER e C# - SELECT com condição de parâmetros RRS feed

  • Pergunta

  • Olá pessoal, boa tarde!

    Sou iniciante e ainda tenho muitas dúvidas hehe...

    É o seguinte, tenho uma tabela chamada tbl_VendasEquipamentos e preciso selecioná-la de acordo com filtros utilizados no Form (no caso seriam 2 comboBoxs: 1- cboCodTPagamento, 2- cboCodContato).

    Tenho que dar o SELECT dos campos que tenham a data entre @data01 e @data02 e filtros com os parâmetros @codTPagamento e @codContato.

    Preciso passar o parâmetro com uma opção "Todos" e as outras opções com o valor do código da coluna através das comboBoxs.

    Obs: Fiz o projeto em Camada (View, DTO, BLL e DAL), segue código da Camada DAL:

    public List<VendaEquipamentosDTO> FiltraVendaEquipamentos(VendaEquipamentosDTO vendaEquipamentos) { SqlConnection conn = new SqlConnection(); SqlDataReader reader = null; List<VendaEquipamentosDTO> colecaoVendaEquipamentos = new List<VendaEquipamentosDTO>(); try { conn.ConnectionString = strConexao; SqlCommand command = new SqlCommand(); command.Connection = conn; command.CommandType = CommandType.Text; command.CommandText = "aqui vem o SELECT que não sei como fazer hehe!"; SqlParameter pdata01 = new SqlParameter("@data01", SqlDbType.Date); /*pdata01 de Parametro Data01 xD*/ pdata01.Value = vendaEquipamentos.Data01; command.Parameters.Add(pdata01); SqlParameter pdata02 = new SqlParameter("@data01", SqlDbType.Date); pdata02.Value = vendaEquipamentos.Data02; command.Parameters.Add(pdata02); SqlParameter pcodTPagamento = new SqlParameter("@codTPagamento", SqlDbType.Int); pcodTPagamento.Value = vendaEquipamentos.CodTPagamento; command.Parameters.Add(pcodTPagamento); SqlParameter pcodContato = new SqlParameter("@codContato", SqlDbType.Int); pcodContato.Value = vendaEquipamentos.CodContato; command.Parameters.Add(pcodContato); conn.Open(); reader = command.ExecuteReader(); while (reader.Read()) { VendaEquipamentosDTO vendaEquipamentosDTO = new VendaEquipamentosDTO(); vendaEquipamentosDTO.CodVenda = Convert.ToInt32(reader["codVenda"]); vendaEquipamentosDTO.CodEquipamento = Convert.ToInt32(reader["codEquipamento"]); vendaEquipamentosDTO.CodCliente = Convert.ToInt32(reader["codCliente"]); vendaEquipamentosDTO.EquipamentoPersonalizado = reader["equipamentoPersonalizado"].ToString(); vendaEquipamentosDTO.CodTPagamento = Convert.ToInt32(reader["codTPagamento"]); vendaEquipamentosDTO.CodContato = Convert.ToInt32(reader["codContato"]); vendaEquipamentosDTO.ValorVenda = Convert.ToDecimal(reader["valorVenda"]); vendaEquipamentosDTO.Data = Convert.ToDateTime(reader["data"]); vendaEquipamentosDTO.CodRastreio = reader["codRastreio"].ToString(); vendaEquipamentosDTO.CodRastreio2 = reader["codRastreio2"].ToString();

    /*Essas são as colunas que tenho na tabela*/ colecaoVendaEquipamentos.Add(vendaEquipamentosDTO); } return colecaoVendaEquipamentos; } catch (SqlException ex) { throw new Exception("Erro de SQL: " + ex.Number); } finally { reader.Close(); reader.Dispose(); conn.Close(); conn.Dispose(); SqlConnection.ClearAllPools(); } }



    • Editado RamonMDS terça-feira, 3 de maio de 2016 18:36
    terça-feira, 3 de maio de 2016 18:34

Respostas

  • Boa tarde,

    Acho que seu select deve ser assim:



    select * FROM tbl_VendasEquipamentos WHERE data Between '"& @data01&"' And '"& @data02&" AND codTPagamento='@codTPagamento' and codContato='@codContato'



    Obs.: talvez a sintaxe não seja a adequadra, mas a lógica acredito que esteja certa.  
    • Marcado como Resposta RamonMDS quarta-feira, 4 de maio de 2016 15:02
    terça-feira, 3 de maio de 2016 18:53