none
datatable RRS feed

  • Pergunta

  • Bom Dia Gente,

    tipo preciso criar uma tabela virtual, que exista enquanto a aplicação estiver em execução...

    Fiz o seguinte:

    Code Snippet

    Bom Dia Gente,

    tipo preciso criar uma tabela virtual, que exista enquanto a aplicação estiver em execução...

    Fiz o seguinte:

    Dim dtTesteTabela As DataTable = New DataTable("fila_impressao")

    Dim dcColuna As DataColumn
    Dim drLinha As DataRow

    dcColuna = New DataColumn()
    dcColuna.DataType = System.Type.GetType("System.Int32")
    dcColuna.ColumnName = "L_ID"
    dcColuna.ReadOnly = True
    dcColuna.Unique = True
    dtTesteTabela.Columns.Add(dcColuna)

    dcColuna = New DataColumn()
    dcColuna.DataType = System.Type.GetType("System.Int32")
    dcColuna.ColumnName = "F_ID"
    dcColuna.ReadOnly = False
    dcColuna.Unique = False
    dtTesteTabela.Columns.Add(dcColuna)

    Ok, até ai tudo bem, mas como faço para INSERIR, LER, EXCLUIR um registro desta tabela temporaria?




    Ok, até ai tudo bem, mas como faço para INSERIR, LER, EXCLUIR um registro desta tabela temporaria?
    sexta-feira, 12 de setembro de 2008 14:56

Respostas

  •  

    Olá Charles.

     

    Bom, vamos lá método a método.

     

    1 - Inserir

     

    Code Snippet

    Private Sub Inserir(ByVal lid As Int32, ByVal fid As Int32)

       Dim drLinha As DataRow = dtTesteTabela.NewRow()

       drLinha("L_ID") = lid

       drLinha("F_ID") = fid

       dtTesteTabela.Rows.Add(drLinha)

    End Sub

     

     

    2 - Selecionar

     

    Code Snippet

    Private Sub Selecionar(ByVal lid As Int32)

       Dim drLinhas() As DataRow = dtTesteTabela.Select("L_ID = " & lid)

       For Each row As DataRow In drLinhas

          MessageBox.Show("F_ID selecionado: " & row("F_ID").ToString())

       Next

    End Sub

     

     

     

    3 - Remover

     

    Code Snippet

    Private Sub Remover(ByVal lid As Int32)

       Dim drLinhas() As DataRow = dtTesteTabela.Select("L_ID = " & lid)

       For Each row As DataRow In drLinhas

          dtTesteTabela.Rows.Remove(row)

       Next

    End Sub

     

     

    Aqui está o código do evento Load que usei para executar estes métodos:

     

    Code Snippet

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

       Dim dcColuna As DataColumn

     

       dcColuna = New DataColumn()

       dcColuna.DataType = System.Type.GetType("System.Int32")

       dcColuna.ColumnName = "L_ID"

       dcColuna.ReadOnly = True

       dcColuna.Unique = True

       dtTesteTabela.Columns.Add(dcColuna)

       dcColuna = New DataColumn()

       dcColuna.DataType = System.Type.GetType("System.Int32")

       dcColuna.ColumnName = "F_ID"

       dcColuna.ReadOnly = False

       dcColuna.Unique = False

       dtTesteTabela.Columns.Add(dcColuna)

       Me.Inserir(1, 11)

       Me.Inserir(2, 22)

       Me.Inserir(3, 33)

       For Each row As DataRow In dtTesteTabela.Rows

          MessageBox.Show("Row Inserida: " & row("L_ID").ToString())

       Next

       Me.Selecionar(1)

       Me.Selecionar(2)

       Me.Remover(1)

       Me.Remover(2)

       For Each row As DataRow In dtTesteTabela.Rows

          MessageBox.Show("Row não removida: " & row("L_ID"))

       Next

    End Sub

     

     

     

    Eu não declarei e nem instanciei o DataTable em nenhum método. Você precisa deixá-lo fora dos métodos para que o mesmo seja um membro da classe e todos os métodos possam acessá-lo.

     

    Code Snippet

    Private dtTesteTabela As DataTable = New DataTable("fila_impressao")

     

     

    Bom, é isso.

     

    Abraço

    sexta-feira, 12 de setembro de 2008 17:02