none
Somar valores recordset é possível? RRS feed

  • Pergunta

  • Bom dia, eu estou com uma dúvida procurei no google e até o presente momento não encontrei uma resposta.

    É possível somar os valores de uma coluna retornada ao DataReader para fazer uma validação?

    Pergunto isto, porque estou utilizando um componente .NET para gerar gráficos dependendo das opções escolhidas pelo usuário, e em uma dela o recordset vem várias linhas com valores Zero, algo como isto:

    Status Total
    Documento A 0
    Documento B 0
    Documento C 0

    E assim por diante, mas como o gráfico precisa de valores positivos, eu preciso validar se todos os campos estão preenchidos com 0, eu não exibo o gráfico. Eu consigo já capturar quais linhas possuem zero e removo do gráfico, agora quando todas vem zeradas, ai que está o problema.

    Espero tersido claro na explicação.

    Desde já agradeço.

    quarta-feira, 23 de agosto de 2006 11:35

Respostas

  • Jair,

    Com DataReader você teria que percorre-lo para saber se alguma coluna tem valor não numérico, como o DataReader é um cursor forward-only, você só pode passar por cada registro uma vez, então voce nao poderia passa-lo para sua rotina de graficos posteriormente pois ele ja foi percorrido. Com um DataTable é possivel. Voce preenche um DataTable através de um DataAdapter e ele passa para a memoria, entao voce pode percorre-lo e altera-lo sempre que necessario.

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    quarta-feira, 23 de agosto de 2006 11:55
    Moderador
  • Compreendo, eu logo imaginei, visto que eu anteriormente usei um DataSet, será que também consigo fazer esta verificação usando um DataSet, ou apenas com o DataTable?

    Obrigado.

     

    Edit: Tentei utilizar o DataTable mas não obtive sucesso, estou desenvolvendo em C# e ao instanciar um novo DataTabel eu não tenho acesso aos métodos BeginLoadData(0 e EndLoadData(), o que eu fiz de errado ou deixei de fazer? Eu vi sua explicação na Thread DataReader vs DataTable.

    Obrigado.

    quarta-feira, 23 de agosto de 2006 12:35
  • Jair,

    Então, um DataSet é uma coleção de DataTables, quando você acessa:

    seuDataSet.Tables("SuaTabela")

    ... você está acessando um DataTable do DataSet. Você poderia, por exemplo, usar o método Compute do DataTable para realizar seu cálculo:

    http://msdn2.microsoft.com/en-us/library/system.data.datatable.compute.aspx

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    quarta-feira, 23 de agosto de 2006 15:51
    Moderador
  • Francisco,

    Tem toda a razão, eu depois de muito patinar (por descuido próprio) vi que o DataSet é que contém inúmeros DataTables.

    Excelente ajuda.

    Obrigado.

    quarta-feira, 23 de agosto de 2006 22:32

Todas as Respostas

  • Jair,

    Com DataReader você teria que percorre-lo para saber se alguma coluna tem valor não numérico, como o DataReader é um cursor forward-only, você só pode passar por cada registro uma vez, então voce nao poderia passa-lo para sua rotina de graficos posteriormente pois ele ja foi percorrido. Com um DataTable é possivel. Voce preenche um DataTable através de um DataAdapter e ele passa para a memoria, entao voce pode percorre-lo e altera-lo sempre que necessario.

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    quarta-feira, 23 de agosto de 2006 11:55
    Moderador
  • Compreendo, eu logo imaginei, visto que eu anteriormente usei um DataSet, será que também consigo fazer esta verificação usando um DataSet, ou apenas com o DataTable?

    Obrigado.

     

    Edit: Tentei utilizar o DataTable mas não obtive sucesso, estou desenvolvendo em C# e ao instanciar um novo DataTabel eu não tenho acesso aos métodos BeginLoadData(0 e EndLoadData(), o que eu fiz de errado ou deixei de fazer? Eu vi sua explicação na Thread DataReader vs DataTable.

    Obrigado.

    quarta-feira, 23 de agosto de 2006 12:35
  • Jair,

    Então, um DataSet é uma coleção de DataTables, quando você acessa:

    seuDataSet.Tables("SuaTabela")

    ... você está acessando um DataTable do DataSet. Você poderia, por exemplo, usar o método Compute do DataTable para realizar seu cálculo:

    http://msdn2.microsoft.com/en-us/library/system.data.datatable.compute.aspx

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    quarta-feira, 23 de agosto de 2006 15:51
    Moderador
  • Francisco,

    Tem toda a razão, eu depois de muito patinar (por descuido próprio) vi que o DataSet é que contém inúmeros DataTables.

    Excelente ajuda.

    Obrigado.

    quarta-feira, 23 de agosto de 2006 22:32