Ir para o conteúdo

BindingSources (How To)

Introdução

Por norma, a utilização de BindingSources deve-se à escolha de programação via método Wizard do Visual Studio. Este método simplifica e muito a forma de gestão de dados, pois todos os comandos são auto-gerados pela aplicação.

Wizard vs "Unha-a-Unha"

Apesar de todo o conteúdo gerado pelo método Wizard ser mais simples, existem algumas discordâncias em relação a esta forma de programação. A capacidade de performance não é tão rápida quanto a programação, que eu denomino, unha-a-unha, onde todo o código é criado por nós. Para além da diferença de performance existe a capacidade de interpretação e raciocínio lógico onde a programação unha-a-unha assume uma vantagem de quase 100% para com o método Wizard. Em baixo estão dois exemplos de adição de dados nos dois métodos:

Wizard:

Me.NOMEdaTABELABindingSource.AddNew()

Unha-a-Unha:

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\\BD.mdb")
Dim query As String = "INSERT INTO Clientes([Nome], [Empresa]) VALUES (@Nome, @Empresa)"

Dim command As New OleDbCommand(query, ConnectionString)

command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextbox.Text
command.Parameters.Add("@Empresa", OleDbType.VarChar).Value = EmpresaTextbox.Text  

ConnectionString.Open()

Dim x As Integer = command.ExecuteNonQuery()

If x < 1 Then
     MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
     MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If

ConnectionString.Close()
command = Nothing

Importante: Quero desde já salientar que, seja qual o método de programação escolhido, deve-se seguir com esse método até ao fim e não juntar os dois-em-um, pois problemas futuros podem surgir devido a incompatibilidades.

Wizard (Métodos)

Assumindo que todo o processo envolvente na criação de todos os controlos correspondentes ao Wizard (TableAdapter, BindingSources, DataSet) estão, desde já, feitos, passamos então aos métodos de implementação de funções na nossa aplicação.

Antes de mais, os métodos simples de gestão: Adicionar dados:

Me.NOMEdaTABELABindingSource.AddNew()

Eliminar dados:

If MessageBox.Show("Deseja eliminar o registo corrente?", "Eliminar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then 
Me.NOMEdaTABELABindingSource.RemoveCurrent()
Msgbox("Eliminado com sucesso!")
End If

Cancelar dados:

Me.NOMEdaTABELABindingSource.CancelEdit()

Guardar dados:

If MessageBox.Show("Deseja gravar todas as alterações?", "Gravar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then 
Me.Validate() 
Me.NOMEdaTABELABindingSource.EndEdit()
Me.NOMEdaTABELATableAdapter.Update(Me.NOMEBaseDADOSDataSet.NOMEdaTABELA)
Msgbox("Gravado com sucesso!") 
End If

Actualizar/Carregar dados:

Me.NOMEdaTABELATableAdapter.Fill(Me.NOMEBaseDADOSDataSet.NOMEdaTABELA)

Primeiro Registo:

Me.NOMEdaTABELABindingSource.MoveFirst()

Anterior Registo:

Me.NOMEdaTABELABindingSource.MovePrevious()

Próximo Registo:

Me.NOMEdaTABELABindingSource.MoveNext()

Último Registo:

Me.NOMEdaTABELABindingSource.MoveLast()

Conclusão

Os dois tipos de métodos de programação não podem ser negados, cabe a cada um decidir qual o método que deve escolher.