Ajuda sobre somatoria de Arrays

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre somatoria de Arrays

Mensagem por Paulo_CPV »

Bom dia!

Pessoal, estou com uma dúvia a respeito de somatórias com Arrays bidimencionais para serem adicionados em uma Grid, espero que alguém do grupo pode me ajude. O meu caso é o seguinte eu preciso fazer uma somatória da seguinte forma:

aSoma:= {}
aSoma[n1,n2] := valor

O layout da Grid é o seguinte:

Data 1 Data 2 Valor 1 Valor 2 Valor 3

Os itens data 1 e data 2 não serão somados, somente os itens valor 1 , valor 2 e valor 3 é adicionado os primieros e os seguintes são somados aos anteriores e adicionados a Grid , tudo isso o usuário esta entrando n vezes e depois da entrada dos dados mostrar o total num Label.

Desde já agradeço a todos que puderem me ajudarem a resolver este problema.

[]'s
Paulo - Jacareí/SP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre somatoria de Arrays

Mensagem por Pablo César »

Paulo_CPV escreveu:somente os itens valor 1 , valor 2 e valor 3 é adicionado os primieros e os seguintes são somados aos anteriores
Não entendi.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre somatoria de Arrays

Mensagem por Paulo_CPV »

Bom dia!

Pablo, me desculpe de novo de não ser objetivo, o que eu queria dizer é o seguinte:

Os itens data 1 e data 2 são adicionados normalmente.
Os itens valor 1 , valor 2 e valor 3, na primeira entrada são adicionados normalmente a partir da segunda entrada tenhoa que somar os valores anteriores com os valores digitados pelo usuário e depois adicionar na Grid.

Espero ter esclarecido. Obrigado pela sua atenção.

Paulo - Jacareí/SP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre somatoria de Arrays

Mensagem por Pablo César »

Bom dia Paulo.
Paulo_CPV escreveu:Os itens data 1 e data 2 são adicionados normalmente.
Os itens valor 1 , valor 2 e valor 3, na primeira entrada são adicionados normalmente
Até ai: Ok, entendi.
Paulo_CPV escreveu:a partir da segunda entrada tenhoa que somar os valores anteriores com os valores digitados pelo usuário e depois adicionar na Grid.
Como na sua primeira mensagem você disse que no grid tem as seguintes colunas: Data1 Data2 Valor1 Valor2 Valor3, ai pergunto de que forma tem que ser somados os valores ?

Valor1+ Valor2 = Valor3

ou

Código: Selecionar todos

                     Valor1 Valor2 Valor3
                     Valor1 Valor2 Valor3
                    ------------------------
Resultado das somas: Valor1 Valor2 Valor3
Tenho impressão que seria como uma espécie de extrato, onde a primeira coluna é o crédito, a segunda o débito e a terceira saldo ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre somatoria de Arrays

Mensagem por Paulo_CPV »

Boa tarde!

Pablo, o que eu quero é o segundo exemplo que você me mostrou.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre somatoria de Arrays

Mensagem por Pablo César »

Paulo_CPV escreveu:Pablo, o que eu quero é o segundo exemplo que você me mostrou.
Ok, então considerando 3 TEXTBOXes como você acostuma fazer e o ultimo registro do grid (colunas: Valor1, Valor2 e Valor3), você precisaria somar ao próximo registro a ser incluso no grid, isto a partir de segundo registro.

Então o que faltaria para você fazer isso ?
Na hora de adicionar o registro no grid, você irá ver antes, quantos registros o seu grid possui e pegar o conteúdo nas três colunas do ultimo registro. Então, lembra a função SomaRegistro que tinha passado do outro tópico seu ? Nessa função tem como você obter a "Tupla" do grid, varrendo todo o array, mas neste caso só irá pegar o ultimo com: nFim:=Form_1.Grid_1.ItemCount, ai é só somar o value de cada TEXTBOX e adicionar ao grid.

Senão conseguir, disponibilize o seu código para poder aplicar correções na sua tentativa.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

Ajuda sobre somatoria de Arrays

Mensagem por luiz antonio da silva »

Olá Paulo !

Completando o que o amigo Pablo falou...

O usuário poderá excluir ou alterar algum registro desse grid ?, se sim para exclusão, após executar o form_1.grid_1.deleteitem(x) você terá que reler o grid desde o início refazendo o cálculo para atualizar o último registro (caso o item excluido não seja o último registro), e se sim para alteração, você terá que de alguma maneira (poderia ser clicando no registro a ser alterado) saber qual saldo anterior pegar para ser somado com o valor do textbox e reler o grid após esse registro para atualizar os dados...blz

Abraço.
Luiz.
HMG 3.4.4 - SQL SERVER - ORACLE
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre somatoria de Arrays

Mensagem por Paulo_CPV »

Bom dia!

Pablo, muito obrigado mais uma vez pela sua ajuda, deu tudo certo, rotina funcionando 100%. Desde já agradeço a sua atenção para me ajudar nas minhas dúvidas e se precisar também estarei a disposição.

[]'s
Paulo - Jacareí/SP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre somatoria de Arrays

Mensagem por Pablo César »

Beleza Paulo, fico contente que tenha conseguido. Só que o colega Luiz complementou um ponto importante sobre a manutenção dos registros no grid que deve levar em conta.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre somatoria de Arrays

Mensagem por Paulo_CPV »

Pablo,

vi o comentario do colega Luiz e já estou pensando no assunto. Mas agora estou com outra dúvida, fiz uma rotina para limpeza da Grid para que o usuário entre com novos dados. Para mim está tudo certo, mas para ficar mais uniforme: Na primeira chamada da função ele me mostra no Grid com as colunas com atributos zerados, eu queria que ele me retornase de novo as colunas zeradas, quando chamo a função NovoCalculo().

Código: Selecionar todos


aRows:={{CTOD(""),CTOD(""),0,0,0}}

DEFINE GRID grid_1
.
.
.
ITENS aRows
.
.
.
END GRID


    / /    //    0    0   0

* Função para limpaza da Grid
Function NovoCalculo()

   Form_1.Grid_1.DeleteAllItems

   Form_1.Text_1.Value  := ""
   Form_1.Text_2.Value  := ""
   Form_1.Label_2.Value := ""

   Form_1.Text_1.SetFocus

RETURN Nil 
Eu queria que ele me mostrase de novo: // // 0 0 0 e não deixar a Grid em branco.

[]'s
Paulo - Jacareí/SP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre somatoria de Arrays

Mensagem por Pablo César »

Na sua função NovoCalculo(), após Form_1.Grid_1.DeleteAllItems, você precisa adicionar ao menos um "registro" no vetor, assim:

Form_1.Grid_1.AddItem({{CTOD(""),CTOD(""),0,0,0}})

A função DeleteAllItems() elimina todos os itens deixando sem conteúdo algum e portanto irá dar erro.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre somatoria de Arrays

Mensagem por Paulo_CPV »

Pablo,

Muito obrigado pela sua ajuda, eu estava pensando nisto que você me passou, agora está funcionando beleza. Mas agora vou penssar no comentário do colega Luiz.

Mais uma vez agradeço sua atenção.

[]'s
Paulo - Jacareí/SP
Responder