Caros,
Sempre que eu tinha que totalizar um campo em um datatable, eu aproveitava o looping que eu fazia após carregar o DataGrid, eu já havia pesquisado sobre como totalizar um campo de um DataTable, mas não tive tempo de colocar em prática.
Mistério desvendado, então segue o código:
Dim strSQL as String = “”
Dim tbNotaFiscal as New DataTable
Dim I as int32 = 0
Dim FaturamentoTotal as Double = 0
strSQL = “SELECT NUMERONOTA, VALOR FROM NOTAFISCAL”
With New Conexao.Oracle
tbNotaFiscal = .CarregarDataTable(strSQL, “NOTAFISCAL”)
.Fechar
End With
(Versão Anterior)
For I = 0 to tbNotaFiscal.rows.count -1
FaturamentoTotal += Convert.ToDouble(tbNotaFiscal.Rows(i).Item(“VALOR”))
Next
(Versão com Compute)
FaturamentoTotal = tbNotaFiscal.Compute(“SUM(VALOR)”)
Isso impacta diretamente na performance, pois não é preciso fazer looping em um DataTable para que seja feita a soma, nesse caso a totalização é feita pelo própria função do objeto DataTable.
Outro ponto importante, nunca, mas nunca se esqueça de fechar a conexão com o Banco de Dados após seu uso.
Quando comecei a programar em .NET eu utilizava o VS 2003. Fui a um evento da Microsoft, o PDC 2004, e lá em uma palestra nos passaram uma biblioteca de conexão com banco de dados chamada SQL Helper, eu utilizei a mesma em alguns projetos, mas depois que comecei a utilizar o VS 2005 com o Framework 2.0 essa biblioteca ficou obsoleta, então eu resolvi pergar as funções mais importantes, e resumi em uma biblioteca mais enxuta.
A Biblioteca possui 3 classes, são elas:
- MSSQL – Conexão com SQL Server
- Oracle – Conexão com Oracle
- ODBC – Conexão ODBC genérica
Todas as classes possuem as seguintes funções:
- ExecutarLeitura – Função que retorna um SqlDataReader para leitura.
- ExecutarNonQuery – Função para executar uma query SQL que não precisa retornar nada.
- ExecutarScalar – Função que executa uma query SQL e retorna um valor Long.
- CarregarDataSet – Função que retorna um DataSet com uma DataTable populada de acordo com a query SQL informada.
- CarregarDataTable – Função que retorna somente uma DataTable de acordo com a query SQL informada.
Utilização:
Carregando um DataTable.
With new Conexao
tbUsuario = .CarregarDataTable(“SELECT * FROM USUARIO”)
.Fechar <– não se esqueça de chamar o método para fechar a conexão com o banco.
End With
Executando uma query simples.
With new Conexao
.ExecuteNonQuery(“DELETE FROM USUARIO WHERE ID = 3”)
.Fechar
End With
Para baixar a biblioteca, utilize o link abaixo:
Conexao