Nicolas Tarzia

.Net developer!

My Links

Blog Stats

News

Desenvolvedor .Net

Archives

Post Categories

Image Galleries

Blogs

Link's

Pessoal

Profissional

Login

Wednesday, September 05, 2007

Somarizando por grupos no dataset

Bom pessoal ultimamente não tenho postado muito, mas vou tentar colocar umas dicas e sugestões aqui também e se tiver novidades coloco também...

Ultimamente tive um sério problema, onde precisava inserir uma linha no dataset em cada grupo, exibindo o total de registros, então todos os campos que forem Numéricos, irei soma-los .... e inserir uma linha a cada grupo ....
então to postando aqui uma função para montar toda esta estrutura no dataset ....

 

   1:  Public Function DataSetFormatado(ByVal dsPrincipal As DataSet) As DataSet
   2:      Dim dsAuxiliar As New DataSet
   3:      Dim iCount As Integer = 0
   4:      Dim iContador As Integer = dsPrincipal.Tables(0).Columns.Count - 1
   5:      Dim strVerifica As String = ""
   6:      Dim iVerifica(iContador) As Integer
   7:      Dim drAuxiliar As DataRow
   8:      Dim strAuxiliar As Object = ""
   9:      Dim iCount2 As Integer = 0
  10:      dsAuxiliar.Tables.Add()
  11:      With dsAuxiliar.Tables(0).Columns
  12:        For iCount2 = 0 To iContador
  13:          .Add(dsPrincipal.Tables(0).Columns(iCount2).ColumnName, dsPrincipal.Tables(0).Columns(iCount2).DataType, dsPrincipal.Tables(0).Columns(iCount2).Expression)
  14:        Next
  15:      End With
  16:   
  17:      iCount2 = 0
  18:      For iCount = 0 To dsPrincipal.Tables(0).Rows.Count - 1
  19:        If strVerifica <> dsPrincipal.Tables(0).Rows(iCount).Item(0) Then
  20:          drAuxiliar = dsPrincipal.Tables(0).NewRow
  21:          iCount2 = 0
  22:          For iCount2 = 0 To iContador
  23:            If iCount2 = 0 Or iCount2 = 1 Then
  24:              If iCount2 = 1 Then
  25:                drAuxiliar(iCount2) = "TOTAL: "
  26:              End If
  27:            Else
  28:              drAuxiliar(iCount2) = iVerifica(iCount2)
  29:            End If
  30:            If IsNumeric(dsPrincipal.Tables(0).Rows(iCount).Item(iCount2)) Then
  31:              iVerifica(iCount2) = dsPrincipal.Tables(0).Rows(iCount).Item(iCount2)
  32:            End If
  33:          Next
  34:          If iCount > 0 Then
  35:            dsAuxiliar.Tables(0).Rows.Add(drAuxiliar.ItemArray)
  36:          End If
  37:          strVerifica = dsPrincipal.Tables(0).Rows(iCount).Item(0)
  38:        Else
  39:          For iCount2 = 0 To iContador
  40:            If IsNumeric(dsPrincipal.Tables(0).Rows(iCount).Item(iCount2)) Then
  41:              iVerifica(iCount2) += dsPrincipal.Tables(0).Rows(iCount).Item(iCount2)
  42:            End If
  43:          Next
  44:        End If
  45:       dsAuxiliar.Tables(0).Rows.Add(dsPrincipal.Tables(0).Rows(iCount).ItemArray)
  46:      Next
  47:      Return dsAuxiliar
  48:    End Function

posted @ 2:55 AM | Feedback (0)