VB.NET - Localizando linhas em um DataTable
Como localizar uma linha (registro) ou um grupo de linhas (registros) em um DataTable usando um critério determinado ?
Existem 3 formas básicas de você localizar registros em um DataTable :
Vamos criar um projeto no VS.NET para mostrar como usar na prática estas soluções. Inicie um novo projeto no VS.NET com o nome localizaDataTable e no formulário principal inclua os seguintes controles :
O layout do formulário deverá ser idêntico ao da figura abaixo:
Vamos acessar a tabela Orders do banco de dados NorthWind do SQLServer. A estrutura da tabela Orders é a seguinte : Como critério estarei usando o campo ShipCountry A string de conexão para o SQL Server instalado em minha máquina é : server=(local);trusted_connection=true;database=Northwind;_ Você
dever alterar esta string de conexão para o seu caso específico
caso |
Vamos incluir no início do formulário os imports usados :
Imports
System
Imports System.Data
Imports System.Data.SqlClient
e a definição das constantes para a tabela usada e para os campos usados como critério para filtrar os dados:
' constantes para os nomes das tabelas Private TABELA_ORDERS As [String] = "Orders" ' constantes para os nomes dos campos usados |
No evento Load do formulário vamos incluir o código que efetua as seguintes tarefas:
'define as strings de conexao e de instrução SQL Dim strSql As String = "SELECT OrderID, CustomerID, ShipName, ShipCity, ShipCountry FROM " & TABELA_ORDERS Dim strConexao As String = "server=(local);trusted_connection=true;database=Northwind;Integrated Security=SSPI" 'define o dataadapter e o datatable ' preenche a tabela Orders ' vincula a tabela ao datagrid |
Agora no evento Click do botão - Localiza Linhas - inclua o código abaixo:
Private
Sub btnLocalizaLinhas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnLocalizaLinhas.Click ' obtem a tabela vinculada ao datagrid Dim dt As DataTable = CType(dgLocalizaLinhas.DataSource, DataView).Table ' constroi o filtro usando o conteudo do combobox ' localiza os registros usando o método
select do datatable ' percorre a coleção de linhas
filtradas no passo anterior e localiza o item For Each linha In drc txtResultado.Text = txtResultado.Text & "DataTable.Rows.Find retornou " & contador & " registros(s)." & Environment.NewLine ' localiza os registros usando a propriedade
RowFilter do DataView 'executa o filtro no dataview 'vincula o resultado ao dtagrid 'exibe o resultado dos três métodos
usados para retornar os registros com o criterio usado End Sub |
Destacamos a seguir as linhas de código que usam os métodos indicados :
O filtro usado é obtido usando o nome do país selecionado na combobox pelo usuário :
Dim filtro As [String] = CAMPO_SHIPCOUNTRY & " = '" & cboPais.Text & "'"
Executando o projeto e selecionando um país da combobox temos o resultado :
O resultado exibido no TextBox (multiline) é obtido pelas linhas de código : txtResultado.Text = "DataTable.Select retornou " & drc.Length & " registros(s)." & Environment.NewLine txtResultado.Text = txtResultado.Text & "DataTable.Rows.Find retornou " & contador & " registros(s)." & Environment.NewLine txtResultado.Text = txtResultado.Text & "DataView.RowFilter retornou " & dv.Count & " registro(s)." Onde : drc, linha e RegistroLocalizado são do tipo DataRow. Para a acessar os items do array basta usar: linha(itemArray(0)) ou linha(0) -> retorna o primeiro elemento do array.
|
Aguarde mais artigos com VB.NET.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: