NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalTutoriaisLanodecastro : Dataview001
Quer receber novidades e e-books gratuitos?

FILTRO DE TUTORIAIS:


Filtrando e organizando dados com DataView

 

Olá pessoal,

 

Temos hoje mais uma novidade no ASP.Net, o objeto DataView. O uso deste objeto é muito simples, e nos trás resultados muito produtivos. Imagine a seguinte situação: “Seu cliente necessita de um relatório de produtos onde  seleciona dados, aplica filtros, e ordena suas pesquisas”.

 

Isto não é uma missão impossível, até porque você tem a sua disposição os comandos SQL que fazem todo este trabalho sem problemas. Mas imagine, se esta empresa possui várias filiais, onde vários gerentes precisam ter acesso a este tipo de negócio.

 

Ir até a fonte de dados todas as vezes em que for necessário ter uma nova visão dos dados não seria a solução mais viável, pois, além da quantidade de dados que vão trafegar durante todo este processo, o próprio servidor do banco de dados estará sofrendo várias requisições com alto tráfego de informações, resumindo, provavelmente depois de um certo momento ele vai cair!”

 

Para resolver este e muitos outros probleminhas iguais a este, nós temos o DataView, que pelo nome já diz “Visão de Dados”.

 

Vou explicar e exemplificar algumas situações em que podemos aplicá-lo.

 

Crie um novo projeto chamado DataView. Neste projeto deve haver um arquivo chamado Relatorio.aspx, que é o arquivo que vamos utilizar para criar o DataView.

 

 

Abra o arquivo Relatório.aspx e insira um DataGrid com o nome dgProdutos. Formate-o como desejar.

 

 

É neste DataGrid que vamos exibir os dados do relatório.

 

Nossa fonte de dados será o Northwind do SQL Server, mas você pode utilizar outro, caso não tenha acesso a este.

 

Vamor criar a rotina que irá buscar os dados no servidor e armazená-los em um DataTable.

 

Primeiramente, você deve criar um DataSet do tipo público, de forma que seu conteúdo possa ser utilizado em várias rotinas da mesma página. Veja:

 

 

Você deve criar a seguinte linha de código:

 

public DataSet dsProdutos=new DataSet();

 

de acordo com a imagem acima.

 

Agora crie a seguinte rotina:

 

private void CarregarDados()

            {

                  ///Cria o objeto de conexão

                  SqlConnection sqlConn=new SqlConnection();

                  ///Indica o banco de dados a ser utilizado, o servidor, e os dados do usuário

                  ///Não esqueça de configurar esta linha de acordo com sua aplicação.

                  sqlConn.ConnectionString="Initial Catalog=Northwind;Data source=Master;User id=Lano;pwd=1234";

                  ///Cria o Adaptador de dados, selecionando todos os registros da tabela Produtos.

                  SqlDataAdapter sqlAdp=new SqlDataAdapter("Select * From Products",sqlConn);

                  ///Armazena os dados obtidos em uma tabela virtual chamado Produtos

                  sqlAdp.Fill(dsProdutos,"Produtos");

                  ///Transfere os dados do DataSet para a seção, a fim de utilizar os dados em outras rotinas.

                  Session["dsProdutos"]=dsProdutos;

            }

 

Bem, temos apenas uma novidade no seguinte trecho:

 

Session["dsProdutos"]=dsProdutos;

 

Com este trecho, utilizamos o objeto Session para manter o objeto DataSet com toda a sua estrutura e dados em seção, a fim de que possamos utilizá-lo em outras rotinas sem precisar carregar os dados a partir da fonte original.

 

Crie agora a seguinte rotina:

 

      private void GerarVisao()

            {

                  ///Cria o Dataview

                  System.Data.DataView dv=new System.Data.DataView(dsProdutos.Tables["Produtos"],"UnitPrice<10","UnitPrice",
DataViewRowState.CurrentRows);

                  ///anexa a visão criada ao DataGrid

                  dgProdutos.DataSource=dv;

                  ///exibe os dados no DataGrid

                  dgProdutos.DataBind();

            }

 

Acho que já deu pra perceber o quanto foi simples. Criamos o DataView passando os seguintes argumentos:

 

new System.Data.DataView(Tabela do DataSet a ser utilizada,Filtro a ser aplicado,Coluna que ordenará, RowState da fonte de dados);

 

No exemplo acima, estamos criando uma visão de todos os produtos com preço menor que 10 dólares, e ordenando pelo próprio preço dos produtos, utilizando os registros correntes (CurrentRows).

 

Tente executar a página para ver os dados, mas antes chame as rotinas da seguinte forma:

 

private void Page_Load(object sender, System.EventArgs e)

            {

                  CarregarDados();

                  GerarVisao();

            }

 

Vejam como funcionou:

 

 

Agora que já sabemos como utilizar, seria uma boa aperfeiçoar este relatório.

 

Insira os controles, conforme a imagem abaixo:

 

 

O primeiro dropDownList chama-se dropCampos, que listará os campos da tabela. O segundo chama-se dropOperadores que indica o operador que será utilizado na consulta. Este dropDownList deve ser preenchido em tempo de criação, utilizando a guia de propriedades na opção Items. Você deve adicionar os valores “=”,”<>”,”<”,”>” para este DropDownList. O textBox ao lado, chama-se txtPesquisa, que informará o valor da chave de pesquisa, e mais um botão que executará o comando de pesquisa.

 

Após realizar as operações acima, vamos ao código que carregará o nome dos campos para o dropCampos. Na verdade, não vamos criar uma rotina nova, vamos apenas adicionar um pequeno trecho de código a rotina CarregarDados() que já existe em nosso projeto. A rotina CarregarDados() agora ficou assim:

 

private void CarregarDados()

            {

                  ///Cria o objeto de conexão

                  SqlConnection sqlConn=new SqlConnection();

                  ///Indica o banco de dados a ser utilizado, o servidor, e os dados do usuário

                  ///Não esqueça de configurar esta linha de acordo com sua aplicação.

                  sqlConn.ConnectionString="Initial Catalog=Northwind;Data source=Master;User id=Lano;pwd=1234";

                  ///Cria o Adaptador de dados, selecionando todos os registros da tabela Produtos.

                  SqlDataAdapter sqlAdp=new SqlDataAdapter("Select * From Products",sqlConn);

                  ///Armazena os dados obtidos em uma tabela virtual chamado Produtos

                  sqlAdp.Fill(dsProdutos,"Produtos");

                  ///Transfere os dados do DataSet para a seção, a fim de utilizar os dados em outras rotinas.

                  Session["dsProdutos"]=dsProdutos;

                  ///Variável contadora para interagir com o DataTable

                  int x;

                  ///Repetição para preencher o dropCampos com o nome das colunas

                  for(x=0;x<dsProdutos.Tables["Produtos"].Columns.Count;x++)

                  {

                        ///adicionando cada coluna, a cada vez que o loop é executado.

 

dropCampos.Items.Add(dsProdutos.Tables["Produtos"].Columns[x].ColumnName);

 

                  }

 

            }

 

Para aproveitar o trabalho que já foi anteriormente, vamos fazer algumas alterações na rotina GerarVisao(), que receberá alguns parâmetros para que possa ser executada adequadamente:

 

private void GerarVisao(string NomeDaColuna,string Operador,object Pesquisa)

            {

                  ///Cria o Dataview

                  System.Data.DataView dv=new System.Data.DataView(dsProdutos.Tables["Produtos"],NomeDaColuna + Operador + Pesquisa,NomeDaColuna,DataViewRowState.CurrentRows);

                  ///anexa a visão criada ao DataGrid

                  dgProdutos.DataSource=dv;

                  ///exibe os dados no DataGrid

                  dgProdutos.DataBind();

            }

 

Para finalizar, falta apenas chamar a rotina GerarVisao() através do evento click do botão que incluímos. Não esqueça de passar os parâmetros:

 

private void Button1_Click(object sender, System.EventArgs e)

            {

 

GerarVisao(dropCampos.SelectedItem.Text,dropOperadores.SelectedItem.Text,
txtPesquisa.Text);

           }

 

Vamos testar nosso projeto:

 

 

Executando a consulta:

 

 

Vejam que o critério foi respeitados, todos os produtos listados, tem o preço maior que 50 dólares, e também estão ordenados do menor preço para o maior.

 

Vamos a mais um teste:

 

 

Como estou consultando um valor do ripo string, coloquei o nome do produto entre aspas simples.

 

Executando a consulta:

 

 

Muito bom, vejam que o produto que eu procurava foi localizado.

 

O último para terminar:

 

 

Neste caso eu posso utilizar tanto True/False ou 1/0.

 

 

Muito bem, aqui termina o nosso tutorial. Espero que tenham gostado da novidade.

 

Mandem sugestões para lanodecastro@hotmail.com

 

Conto com vocês!

Lano de Castro

 

Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2025 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI