• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vasco16

posição de registos

15 mensagens neste tópico

Boas pessoal gostaria de saber se é possivel ir para o registo seguinte e anterior dos registos de uma tabela, sei que atraves do wizard do Visual basic ele usa o objecto bindingnavigator, mas eu queria fazer tudo por código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens que criar um objecto BindingSource depois é só trabalhar com código.

Exemplo

Dim bindNav As New BindingSource

Dim coneccao As New OleDbConnection(frmMain.strConn)
Dim SQL As String = "SELECT * FROM tab_genero"
Dim comando As New OleDbCommand(SQL, coneccao)

Dim dtGeneroAdaptor As New OleDbDataAdapter(comando)
Dim dtGenero As New DataTable

dtGeneroAdaptor.Fill(dtGenero)
bindNav.DataSource = dtGenero

'aqui defines os bindings de todos os objectos que precisas
Me.txtIDGenero.DataBindings.Add("text", Me.bindNav, "ID_Genero", True)
Me.txtGenero.DataBindings.Add("text", Me.bindNav, "Genero", True)

Para moveres para o registo seguinte usas Me.bindNav.MoveNext() e por aí fora. Agora é só brincares um bocado com ele :P

Acho que o código acima está correcto. Pelo menos funciona  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens que criar um objecto BindingSource depois é só trabalhar com código.

Exemplo

Dim bindNav As New BindingSource

Dim coneccao As New OleDbConnection(frmMain.strConn)
Dim SQL As String = "SELECT * FROM tab_genero"
Dim comando As New OleDbCommand(SQL, coneccao)

Dim dtGeneroAdaptor As New OleDbDataAdapter(comando)
Dim dtGenero As New DataTable

dtGeneroAdaptor.Fill(dtGenero)
bindNav.DataSource = dtGenero

'aqui defines os bindings de todos os objectos que precisas
Me.txtIDGenero.DataBindings.Add("text", Me.bindNav, "ID_Genero", True)
Me.txtGenero.DataBindings.Add("text", Me.bindNav, "Genero", True)

Para moveres para o registo seguinte usas Me.bindNav.MoveNext() e por aí fora. Agora é só brincares um bocado com ele :P

Acho que o código acima está correcto. Pelo menos funciona  :)

este codigo é para meter no objecto BindingSource? ou nos botões?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e para meteres no Load ou onde quer que carregues os dados.

tens aqui o exemplo completo lol  :)

Imports System.Data.OleDb
Public Class frmGenero
    Dim bindNav As BindingSource

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

        Dim coneccao As New OleDbConnection(frmMain.strConn)
        Dim SQL As String = "SELECT * FROM tab_genero"
        Dim comando As New OleDbCommand(SQL, coneccao)

        Dim dtGeneroAdaptor As New OleDbDataAdapter(comando)
        Dim dtGenero As New DataTable

        bindNav = New BindingSource

        dtGeneroAdaptor.Fill(dtGenero)
        bindNav.DataSource = dtGenero

        Me.txtIDGenero.DataBindings.Add("text", Me.bindNav, "ID_Genero", True)
        Me.txtGenero.DataBindings.Add("text", Me.bindNav, "Genero", True)
        Me.lblRegActual.Text = Me.bindNav.CurrencyManager.Position + 1 & "/" & Me.bindNav.CurrencyManager.Count

    End Sub

    Private Sub btnRegSeguinte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRegSeguinte.Click
        Me.bindNav.MoveNext()
        Me.lblRegActual.Text = Me.bindNav.CurrencyManager.Position + 1 & "/" & Me.bindNav.CurrencyManager.Count
    End Sub

    Private Sub btnRegAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRegAnterior.Click
        Me.bindNav.MovePrevious()
        Me.lblRegActual.Text = Me.bindNav.CurrencyManager.Position + 1 & "/" & Me.bindNav.CurrencyManager.Count
    End Sub

    Private Sub btnUltimoReg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUltimoReg.Click
        Me.bindNav.MoveLast()
        Me.lblRegActual.Text = Me.bindNav.CurrencyManager.Position + 1 & "/" & Me.bindNav.CurrencyManager.Count
    End Sub

    Private Sub btnPrimeiroReg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrimeiroReg.Click
        Me.bindNav.MoveFirst()
        Me.lblRegActual.Text = Me.bindNav.CurrencyManager.Position + 1 & "/" & Me.bindNav.CurrencyManager.Count
    End Sub
End Class

Espero que te ajude  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho este erro:

Não é possível vincular à propriedade ou coluna ID_PROCESSO na DataSource.

Nome do parâmetro: dataMember

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
    Dim bindNav As New BindingSource
        Dim coneccao As New OleDb.OleDbConnection(Stand.My.Settings.ligacaoBD)


        Dim SQL As String = "SELECT id_processo, matricula FROM compras"
        Dim comando As New OleDbCommand(SQL, coneccao)

        Dim comprasAdaptor As New OleDbDataAdapter(comando)
        Dim compras As New DataTable

        comprasAdaptor.Fill(compras)
        bindNav.DataSource = compras

        'aqui defines os bindings de todos os objectos que precisas
        Me.id_compraTextBox.DataBindings.Add("text", Me.BindingSource1, "ID_PROCESSO", True)
        Me.matriculatextbox.DataBindings.Add("text", Me.BindingSource1, "matricula", True)
        Me.BindingSource1.MoveNext()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tu estas a definir o bindingSource com o nome bindNav depois estás a usar o Me.BindingSource1 muda lá isso a ver se deixa de dar erro ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tu estas a definir o bindingSource com o nome bindNav depois estás a usar o Me.BindingSource1 muda lá isso a ver se deixa de dar erro ;)

erro:

Não é possível vincular à propriedade ou coluna matricula na DataSource.

Nome do parâmetro: dataMember

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já mudas-te de Me.BindingSource1 para bindNav em todo o código?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já mudas-te de Me.BindingSource1 para bindNav em todo o código?

sim, olha nao sei se é de referir mas eu nao tenho a ligação á BD feita pelo wizard, ou seja tenho a ligação no load do form.. com comandos sql que vao buscar os dados á base de dados e assim apresenta-os nas minhas caixas de texto... será disso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu no exemplo que te dei, também crio totalmente as ligações por código, repara bem :)

Mesmo depois de mudares o bindingSource continua a dar aquele erro?

erro:

Não é possível vincular à propriedade ou coluna matricula na DataSource.

Nome do parâmetro: dataMember

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu no exemplo que te dei, também crio totalmente as ligações por código, repara bem :)

Mesmo depois de mudares o bindingSource continua a dar aquele erro?

sim..

Não é possível vincular à propriedade ou coluna ID_PROCESSO na DataSource.

Nome do parâmetro: dataMember

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas, consegui "reproduzir" esse erro, acho eu lol... e só me aconteceu quando mudei o nome da coluna.

Tens a certeza que ID_PROCESSO é o nome do campo/coluna?

por exemplo eu se mudar

Me.txtIDGenero.DataBindings.Add("text", Me.bindNav, "ID_Genero", True)

para

Me.txtIDGenero.DataBindings.Add("text", Me.bindNav, "ID", True)

dá-me o mesmo tipo de erro que a ti.

Certifica-te que tens os nomes escritos correctamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora