Jump to content
aesp

[VB.NET] Problema a navegar em registos da DB

Recommended Posts

aesp

Tal como o título indica, estou com um problema a navegar nos registos da base de dados tenho um simples dialog que mostra os dados da base de dados e dois botões um para ir para o registo seguinte e para o anterior. Para andar para a frente aparentemente está tudo bem mas quando toca a andar para trás nos registos tenho sempre que carregar duas vezes, alguém me pode explicar o porque?

Public Class RemoveClientes
    '// Variáveis Globais
    Private ConnectionString As New MySqlConnection("server=localhost;uid=*;pwd=*;database=rentcar;")
    Private query As String = "Select * From clientes;"
    Private DataAdapter As New MySqlDataAdapter(query, ConnectionString)
    Private MyData As New DataSet
    Dim TotalRows As Integer
    Dim CountRow As Integer


    Private Sub countRecord()
        Dim Total As String = "SELECT COUNT(*) AS 'Total'  From clientes;"
        Dim DataAdapter As New MySqlDataAdapter(Total, ConnectionString)
        Dim MyData As New DataSet

        ConnectionString.Open()

        MyData.Clear()
        DataAdapter.Fill(MyData, "clientes")
        FormClientes.DGVClientes.DataSource = MyData.Tables("clientes")

        TotalRows = (MyData.Tables("clientes").Rows(0).Item("Total"))

        ConnectionString.Close()
    End Sub

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

        MsgBox("Registos lidos: " & TotalRows)

        ConnectionString.Open()

        MyData.Clear()
        DataAdapter.Fill(MyData, "clientes")
        FormAlugueres.DGVAlugueres.DataSource = MyData.Tables("clientes")

        TextBox1Nome.Text = MyData.Tables("clientes").Rows(CountRow).Item("Nome")
        TextBox2Contacto.Text = MyData.Tables("clientes").Rows(CountRow).Item("Contacto")
        DTPNascimento.Value = MyData.Tables("clientes").Rows(CountRow).Item("DataNascimento")
        TextBox3Morada.Text = MyData.Tables("clientes").Rows(CountRow).Item("Morada")
        TextBox4Localidade.Text = MyData.Tables("clientes").Rows(CountRow).Item("Localidade")
        TextBox5Carta.Text = MyData.Tables("clientes").Rows(CountRow).Item("Carta")
        DTPValidadeCarta.Value = MyData.Tables("clientes").Rows(CountRow).Item("ValidadeCarta")

        ConnectionString.Close()

    End Sub

    Private Sub ButtonNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNext.Click
        Try
            CountRow = CountRow + 1
            TextBox1Nome.Text = MyData.Tables("clientes").Rows(CountRow).Item("Nome")
            TextBox2Contacto.Text = MyData.Tables("clientes").Rows(CountRow).Item("Contacto")
            DTPNascimento.Value = MyData.Tables("clientes").Rows(CountRow).Item("DataNascimento")
            TextBox3Morada.Text = MyData.Tables("clientes").Rows(CountRow).Item("Morada")
            TextBox4Localidade.Text = MyData.Tables("clientes").Rows(CountRow).Item("Localidade")
            TextBox5Carta.Text = MyData.Tables("clientes").Rows(CountRow).Item("Carta")
            DTPValidadeCarta.Value = MyData.Tables("clientes").Rows(CountRow).Item("ValidadeCarta")
        Catch ex As Exception
            CountRow = TotalRows
            MsgBox("Não existem mais registos.", MsgBoxStyle.Information, "Sem registos")
        End Try
    End Sub

    Private Sub ButtonAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonAnterior.Click
        Try
            CountRow = CountRow - 1
            TextBox1Nome.Text = MyData.Tables("clientes").Rows(CountRow).Item("Nome")
            TextBox2Contacto.Text = MyData.Tables("clientes").Rows(CountRow).Item("Contacto")
            DTPNascimento.Value = MyData.Tables("clientes").Rows(CountRow).Item("DataNascimento")
            TextBox3Morada.Text = MyData.Tables("clientes").Rows(CountRow).Item("Morada")
            TextBox4Localidade.Text = MyData.Tables("clientes").Rows(CountRow).Item("Localidade")
            TextBox5Carta.Text = MyData.Tables("clientes").Rows(CountRow).Item("Carta")
            DTPValidadeCarta.Value = MyData.Tables("clientes").Rows(CountRow).Item("ValidadeCarta")
        Catch ex As Exception
            CountRow = 0
            MsgBox("Actualmente encontra-se no primeiro registo.", MsgBoxStyle.Information, "Indíce de registos")
        End Try
    End Sub

End Class

Obrigado,  :thumbsup:

Share this post


Link to post
Share on other sites
aesp

Entretanto resolvi o problema, com a ajuda de um tutorial, aqui fica o código para quem precisar.  :thumbsup:

Public Class RemoveClientes
    '// Variáveis Globais
    Private ConnectionString As New MySqlConnection("server=localhost;uid=*;pwd=*;database=rentcar;")
    Private query As String = "Select * From clientes;"
    Private DataAdapter As New MySqlDataAdapter(query, ConnectionString)
    Private MyData As New DataSet
    Dim T As Integer
    Dim i As Integer = 0

    ' // Carregamentos do formulário
    Private Sub MostraDados()
        TextBox1Nome.Text = MyData.Tables(0).Rows(i)("Nome").ToString()
        TextBox2Contacto.Text = MyData.Tables(0).Rows(i)("Contacto").ToString()
        DTPNascimento.Value = MyData.Tables(0).Rows(i)("DataNascimento").ToString()
        TextBox3Morada.Text = MyData.Tables(0).Rows(i)("Morada").ToString()
        TextBox4Localidade.Text = MyData.Tables(0).Rows(i)("Localidade").ToString()
        TextBox5Carta.Text = MyData.Tables(0).Rows(i)("Carta").ToString()
        DTPValidadeCarta.Value = MyData.Tables(0).Rows(i)("ValidadeCarta").ToString
    End Sub
    Private Sub CountRecord()
        Dim Total As String = "SELECT COUNT(*) AS 'Total'  From clientes;"
        Dim DataAdapter As New MySqlDataAdapter(Total, ConnectionString)

        ConnectionString.Open()

        DataAdapter.Fill(MyData, "clientes")
        FormClientes.DGVClientes.DataSource = MyData.Tables("clientes")
        T = (MyData.Tables("clientes").Rows(0).Item("Total"))
        T = T - 1

        ConnectionString.Close()
    End Sub
    Private Sub RemoveClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call CountRecord()

        ConnectionString.Open()

        MyData.Clear()
        DataAdapter.Fill(MyData, "clientes")
        FormClientes.DGVClientes.DataSource = MyData.Tables("clientes")
        Call MostraDados()

        ConnectionString.Close()
    End Sub
    '-----------------------------------------------------------

    ' // Código referente aos botões de navegação
    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
        If MyData.Tables(0).Rows.Count > 0 Then
            i = 0
            Call MostraDados()
            LabelReg.Text = i & " / " & T
        End If
    End Sub
    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        If i < MyData.Tables(0).Rows.Count - 1 Then
            i += 1
            Call MostraDados()
            LabelReg.Text = i & " / " & T
        End If
    End Sub
    Private Sub btnBefore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBefore.Click
        If i = MyData.Tables(0).Rows.Count - 1 OrElse i <> 0 Then
            i -= 1
            Call MostraDados()
            LabelReg.Text = i & " / " & T
        Else
            MsgBox("Actualmente encontra-se no primeiro registo.", MsgBoxStyle.Information, "Informação acerca dos registos")
        End If
    End Sub
    Private Sub btnLas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
        If MyData.Tables(0).Rows.Count > 0 Then
            i = MyData.Tables(0).Rows.Count - 1
            Call MostraDados()
            LabelReg.Text = i & " / " & T
        End If
    End Sub
    '-----------------------------------------------------------

End Class

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.