ADO .NET - Consultando dados no SQL Server entre duas datas (C#)


 No artigo de hoje vou mostrar como podemos consultar informações em um banco de dados SQL Server entre duas datas em uma aplicação Windows Forms usando a linguagem C#.

Esse é um artigo para iniciantes que mostra como obter informações entre duas datas usando uma consulta SQL e os recursos da ADO .NET.

Como exemplo eu vou usar o banco de dados Northwind.mdf do SQL Server e as tabelas Orders e Customers que possuem um relacionamento do tipo um-para-muitos:

Vamos retornar as informações do código do pedido, código do cliente, nome de contato, endereço, código postal , cidade , telefone e data do pedido.

Vamos combinar informações dessas duas tabelas por meio de uma condição de junção uasndo as chaves estrangeiras para relacionar as tabelas. Para isso vamos usar as cláusulas WHERE e INNER JOIN.

Assim, o Inner Join tem como objetivo agrupar duas ou mais tabelas mediante atributos comuns que estão presentes nas mesmas, onde para realizarmos esta junção, utilizamos as chaves primárias/estrangeiras.

A sintaxe básica do INNER JOIN é :

SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;

Recursos usados :

Criando o projeto no VS 2015 Community

Abra o VS 2015 Community e clique em New Project;

A seguir selecione Visual C# -> Windows Forms Application;

Informe o nome Cshp_ConsultaDatas e clique no botão OK;

No formulário form1.cs vamos incluir os seguintes controles a partir da ToolBox:

Disponha os controles no formulário conforme o leiaute da figura abaixo:

No formulário Form1.cs defina os seguintes namespaces:

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;

Inclua uma referência no projeto ao namespace System.Configuration clicando no menu Project -> Add Reference e a seguir marque a opção conforme figura abaixo:

A seguir abra o arquivo App.Config e defina a string de conexão com o banco de dados Northwind.mdf :

<connectionStrings>
      <add name="conexaoNorthwind" connectionString="Data Source=.;Initial Catalog=Northwind;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

Definindo o código formulário do projeto

Agora no evento Click do botão de comando  - Realizar Consulta - inclua o código abaixo:

       private void btnConsulta_Click(object sender, EventArgs e)
        {
            string consulta = "select o.OrderID, c.CustomerID, c.ContactName, c.Address, c.PostalCode, c.City, c.Phone, o.OrderDate " +
                                      "from Orders o inner join Customers c on o.CustomerID = c.CustomerID " +
                                      "where o.OrderDate between @inicio and @fim " +
                                      "order by o.OrderDate";
                SqlCommand cmd = new SqlCommand(consulta);
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@inicio", dtpInicio.Value);
                cmd.Parameters.AddWithValue("@fim", dtpFim.Value);

                DataTable dt = GetDados(cmd);
                dgvDados.DataSource = dt;
        }

Aqui definimos a consulta SQL usando as cláusulas SELECT, FROM, Where,  INNER JOIN e ORDER BY. Nesta consulta usamos as chaves primária da tabela Customers e a chave estrangeira da tabela Orders para relacionar as informações e combinando dados das duas tabelas.

Observer que a cláusula between permite consultar informações em um intervalo inicial e final e para isso estamos usando os parâmetros: @inicio e @fim que são as datas inicial e final que serão informadas.

Os valores desses parâmetros tem que ser informados e passados para a consulta usando cmd.Parameters.AddWidhValue.

A seguir chamamos o método GetDados() passando o comando SQL que vai retornar uma tabela (DataTable) com as informações que iremos exibir no DataGridView.

A seguir temos o código do método GetDados() que acessa a string de conexão no arquivo App.Config e realiza a consulta obtendo um DataTable:

        private DataTable GetDados(SqlCommand cmd)
        {
            DataTable dt = new DataTable();
            String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["conexaoNorthwind"].ConnectionString;

            SqlConnection con = new SqlConnection(strConnString);
            SqlDataAdapter sda = new SqlDataAdapter();
            cmd.CommandType = CommandType.Text;
            cmd.Connection = con;
            try
            {
                con.Open();
                sda.SelectCommand = cmd;
                sda.Fill(dt);
                return dt;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
                sda.Dispose();
                con.Dispose();
            }
        }

Neste código estamos usando consultas do tipo texto e preenchendo um DataAdapter com os dados.

Executando o projeto iremos obter o seguinte resultado :

Pegue o projeto completo aqui:   Cshp_ConsultaDatas.zip  

"(Disse Jesus)Eu sou a porta; se alguém entrar por mim, salvar-se-á, e entrará, e sairá, e achará pastagens.
O ladrão não vem senão a roubar, a matar, e a destruir; eu vim para que tenham vida, e a tenham com abundância."

João 10:9,10

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti