none
Pegar ultimo registro numa DataTable - VB Net em Access RRS feed

  • Pergunta

  • Bom dia. Eu gostaria de pegar ultimo registro numa tabela do Access e estou usando a Function:

        Public Function ProcurarEstq(ByVal codigo As Integer) As Movimentos
            Dim mEstq As New Movimentos
            Try
                cn = getConexaoDB()
                Dim da As New OleDb.OleDbDataAdapter("SELECT * FROM MOVIMENTOS WHERE codProd = " & codigo, cn)
                Dim dt As New DataTable
                da.Fill(dt)
                If dt.Rows.Count > 0 Then
                    MovimentarRegistro(eRegistro.Ultimo)
                    mEstq.Codigo = dt.Rows(posicao).Item("codigo")
                    mEstq.SaldoAnterior = dt.Rows(posicao).Item("SaldoAnterior")
                    mEstq.Entrada = dt.Rows(posicao).Item("Entrada")
                    mEstq.DEntr = dt.Rows(posicao).Item("DEntr")
                    mEstq.Saida = dt.Rows(posicao).Item("Saida")
                    mEstq.DSaid = dt.Rows(posicao).Item("DSaid")
                    mEstq.SAtual = dt.Rows(posicao).Item("SaldoAtual")
                Else
                    mEstq = Nothing
                End If
            Catch ex As Exception
                Throw ex
            Finally
                closeConexaoDB(cn)
            End Try
            Return mEstq
        End Function
        Private Sub MovimentarRegistro(ByVal e As eRegistro)
            Select Case e
                Case eRegistro.Ultimo
                    posicao = Dt.Rows.Count - 1
            End Select
        End Sub

    -----------

    Na tabela há 100 registros e quando faço o Select ele me traz 2 registros e eu gostaria de pegar o ultimo.... 

    Só que não é bem isto que está acontecendo, no Dt.Rows.Count está me trazendo a quantidade total de registros, ou seja os 100 registros e não os 02 do Select e por isso não está me trazendo o registro específico.

    Alguém poderia me ajudar a identificar onde está o erro?????


    helio Passos

    quarta-feira, 26 de abril de 2017 12:52

Respostas

  • Alterei o SQL para:

     Dim da As New OleDb.OleDbDataAdapter("SELECT Codigo, CodProd, SaldoAnterior, Entrada, DEntr, Saida, DSaid, SaldoAtual, AtualizadaPor FROM MOVIMENTOS" & " WHERE codProd = " & codigo, cn)

    E deu certo. Estava utilizando o * "Asterisco" para trazer todas as colunas ( SELECT * FROM...)  e não estava funcionando, estava trazendo todos os registros DA TABELA e não era o que eu estava precisando, mas ao passar as literais passou a funcionar (estranho não?), outra coisa, tirei a rotina MovimentarRegistro:

     If dt.Rows.Count > 0 Then
                    'MovimentarRegistro(eRegistro.Ultimo)
                    posicao = dt.Rows.Count - 1
                    '  mEstq.Codigo = dt.Rows(0).Item("codigo .....

    Mesmo só mudando a rotina MovimentarRegistro, não funcionou, só funcionou quando alterei o sql do Select...

    Está me trazendo realmente o último registro da seleção da tabela.

    Bom, aqui ficará como uma dica, se alguém precisar no futuro.

    Obrigado.


    helio Passos

    • Marcado como Resposta HelioPassos quarta-feira, 26 de abril de 2017 15:01
    quarta-feira, 26 de abril de 2017 14:54