vasco16 Posted April 28, 2009 at 07:52 AM Report #259641 Posted April 28, 2009 at 07:52 AM 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.
Soulsick Posted April 28, 2009 at 04:02 PM Report #259731 Posted April 28, 2009 at 04:02 PM 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 😛 Acho que o código acima está correcto. Pelo menos funciona 🙂
vasco16 Posted April 28, 2009 at 04:27 PM Author Report #259736 Posted April 28, 2009 at 04:27 PM 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 😛 Acho que o código acima está correcto. Pelo menos funciona 🙂 este codigo é para meter no objecto BindingSource? ou nos botões?
Soulsick Posted April 28, 2009 at 06:02 PM Report #259751 Posted April 28, 2009 at 06:02 PM 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 😛
vasco16 Posted April 28, 2009 at 08:32 PM Author Report #259789 Posted April 28, 2009 at 08:32 PM tenho este erro: Não é possível vincular à propriedade ou coluna ID_PROCESSO na DataSource. Nome do parâmetro: dataMember
Soulsick Posted April 28, 2009 at 11:29 PM Report #259858 Posted April 28, 2009 at 11:29 PM mostra o código... assim é difícil 😉
vasco16 Posted April 29, 2009 at 08:17 AM Author Report #259883 Posted April 29, 2009 at 08:17 AM 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()
Soulsick Posted April 29, 2009 at 11:16 AM Report #259919 Posted April 29, 2009 at 11:16 AM 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 😉
vasco16 Posted April 29, 2009 at 06:28 PM Author Report #260025 Posted April 29, 2009 at 06:28 PM 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
Soulsick Posted April 29, 2009 at 07:03 PM Report #260036 Posted April 29, 2009 at 07:03 PM já mudas-te de Me.BindingSource1 para bindNav em todo o código?
vasco16 Posted April 29, 2009 at 07:28 PM Author Report #260043 Posted April 29, 2009 at 07:28 PM 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?
vasco16 Posted April 29, 2009 at 09:29 PM Author Report #260083 Posted April 29, 2009 at 09:29 PM alguem pode ajudar?:S
Soulsick Posted April 29, 2009 at 10:51 PM Report #260123 Posted April 29, 2009 at 10:51 PM 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
vasco16 Posted April 30, 2009 at 09:13 AM Author Report #260188 Posted April 30, 2009 at 09:13 AM 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
Soulsick Posted April 30, 2009 at 05:31 PM Report #260324 Posted April 30, 2009 at 05:31 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now