 VB 
.NET - Como usar objetos DataSet - II
VB 
.NET - Como usar objetos DataSet - II
Um objeto DataSet é composto por uma coleção de objetos DataTable , cada um dos objetos mapeia uma estrutura de uma tabela com campos e registros. Cada registro de um objeto DataTable é representado por um objeto DataRow , e , uma coleção de objetos DataRow compõe a coleção RowsCollection que é formada pela propriedade Rows.
Como o objeto DataSet não tem conexão com um banco de dados podemos usar suas propriedades para preencher um DataSet via código. Sim isto mesmo , podemos criar objetos de banco de dados como qualquer outro objeto . Vamos mostrar isto no código abaixo :
| Private mDataSet
    As 
    DataSet 
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
 End Sub | 
O código acima mostra como podemos criar um DataSet e preenchê-lo com dados de duas tabelas , tudo isto via código. Abaixo temos o resultado da apresentação da tabela Alunos e da tabela Notas. Basicamente fizemos o seguinte:
criamos um objeto DataSet
a seguir criamos um objeto DataTable e o incluímos na coleção Tables do DataSet usando o método Add
O objeto DataTable expõe uma coleção de objetos DataColumn na coleção Columns . As colunas são incluídas na tabela usando o método Add
Depois que criamos a estrutura das tabelas incluímos os dados em cada uma delas
No caso da tabela Notas criamos um objeto DataRow , a seguir incluímos uma nova linha usando o método NewRow que em seguida e adicionada na tabela via método Add
Então cada elemento é incluído na tabela através da coleção Item
Abaixo o resultado do processamento do código acima , expondo as tabelas e os dados em um componente DataGrid.
|  |  |  | 
Podemos usar os objetos : Tables , DataTable, Columns e Rows para examinar a estrutura de um banco de dados. Vejamos alguns exemplos de como fazer isto usando as propriedades das coleções (lembre-se que toda coleção possui as propriedades Count , item , etc...)
- Percorrendo tabelas em um objeto DataSet - ds.
| Dim dt as DataTable For Each dt in ds.Tables Console.Writeline(dt.TableName) Next | Dim n as integer For n = 0 To dsTables.Count - 1 Console.Writeline(ds.Tables(n).TableName) Next | 
| Percorre o Datable através das tabelas existentes | O mesmo resultado é obtido usando um índice numérico | 
- Percorrendo linhas em um objeto DataTable - dt
| Dim row as DataRow For Each row in dt.rows Console.Writeline(row(0)) Next | Dim n as integer For n = 0 To dt.rows.Count - 1 Console.Writeline(dt.rows(n)(0)) Next | 
| Percorre todas as linhas da tabela dt e exibe a primeira coluna - row(0) | O mesmo resultado é obtido usando um índice numérico | 
Abaixo um exemplo de código para exibir algumas propriedades da tabela Authors que carregamos previamente no DataSet.
| Private
    Sub ExibeEstrutura(ByVal 
    myDataSet As 
    DataSet) Dim dt As DataTable Dim dc As DataColumn Dim pk As DataColumn Dim dr As DataRow 
 For Each dt In myDataSet.Tables Next End Sub | 
A seguir resultado do processamento exibindo as propriedades da tabela Authors carregada no DataSet.
| 
    
     | 
Para localizar linhas especificas em uma tabela a classe DataTable fornece o método Select . O Método Select retorna um array contendo todas as linhjas na tabela ( um array de objetos DataRow) que coincidem com o critério usado para busca. A sintaxe do método Select é :
Public Overloads Function Select (ByVal FilterExpression As String , ByVal sort As String , ByVal recordStates as System.Data.DataViewRowState ) As System.Data.DataRow()
onde os parâmetros são :
- FilterExpression - Informa o critério para selecionar os registros. (Equivalente a string da cláusula SQL WHERE)
- sort - Especifica como as linhas retornadas serão ordenadas. ( Equivalente a cláusula SQL ORDER BY )
- recordStates - define a versão dos registros que serão retornados. O valor informado neste parâmetro pode ser :
CurrentRows - retorna a versão atual de cada linha , desconsiderando se ela é nova, modificada ou inalterada
Deleted - Retorna somente linhas que foram deletas
ModifieCurrent - Retorna somente linhas que foram modificadas. (O valor atual das linhas)
ModifieOriginal - Retorna somente linhas que foram modificadas. (O valor original das linhas)
New - Retorna somente as linhas novas.
None - Não retorna linhas.
OriginalRows - Retorna linhas que estão na tabela antes da modificação.
Unchanged - Retorna somente linhas inalteradas
Nota : Existe um método Select sobrecarregado que usa somente dois parâmetros : FilterExpression e sort.
Ex: Dim rows () As DataRow = dt.Select("Nome = " 'Macoratti'") retorna somente as linhas com nome igual a Macoratti0
Abaixo temos um código que mostra como usar o método Select com uma tabela. Usamos o método duas vezes , uma para exibir os registros com um filtro definido ( id <5 ) , na outra vez não usamos nenhum parâmetro e exibimos todos os registros.
| Private 
    Sub GetRowsByFilter() Dim customerTable As DataTable customerTable = new DataTable( "Customers" ) ' Inclui colunas customerTable.Columns.Add( "id", GetType(Integer) ) customerTable.Columns.Add( "name", GetType(String) ) ' Define a chave Primária customerTable.Columns("id").Unique = true customerTable.PrimaryKey = new DataColumn() { customerTable.Columns("id") } ' inclui 10 linhas Dim id As Integer For id = 1 To 10 customerTable.Rows.Add(new object() { id, string.Format("customer{0}", id) } ) Next id customerTable.AcceptChanges() ' inclui mais 10 linhas For id = 11 To 20 customerTable.Rows.Add( new object() { id, string.Format("customer{0}", id) } ) Next id Dim strExpr As String Dim strSort As String strExpr = "id > 5" ' ordena pelo campo CompanyName     strSort = "name DESC"     
    PrintRows( foundRows, "todos os registros")     
    If rows.Length <= 0 Then     
    Dim r As DataRow     
    For Each r In rows | 
Podemos acessar qualquer registro (linha) de qualquer tabela existente em um DataSet de forma aleatória usando o objeto Rows . Não existem mais os métodos MoveNext , MovePrevious , MoveLast, etc..
Acompanhe a continuação no link:...  
Como usar objetos DataSet III 
 
  
| 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 Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
 
Referências: