Jump to content


Photo

Problema Com Soma De Valores


  • Faça o login para participar
10 replies to this topic

#1 xursinix

xursinix

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Não informado

Posted 18/01/2005, 15:58

E aí galera esse é o meu primeiro tópico. Estou com problema em uma soma de valores e gostaria que alguém me ajudasse, vamos lá.

Tenho um banco com dois campos (Campo1 e Campo2). O que eu quero fazer é somar 3 linhas do Campo2 mas com a condição do Campo1.
Exemplo:
Campo1 Campo2
1 10
2 15
3 20
4 25

O que eu queria era somar 1, 3 e 4 mas os valores do Campo2 e o resultado seria 55.

Vou colocar o código que estou usando:

strSQLCampo2 = "SELECT COUNT * FROM tabela Campo1=1 AND Campo1=3 AND Campo1=4"

Set rsSQLCampo1=Conexao.Execute(strSQLCampo1)
if not rsSQLCampo1.eof then
v_Campo1=rsSQLCampo1("Campo2")
end if

response.write v_campo1

O que eu quero é que a variável v_Campo1 receba o valor de 55 o IF é para o caso dos valores serem "zero".

Valeu Galera.

Edit: Galera eu queria resolver este problema sem ter que jogar os valores em variáveis para depois somar.

Edição feita por: xursinix, 18/01/2005, 16:17.


#2 felipecm

felipecm

    Expert

  • Usuários
  • 541 posts
  • Sexo:Não informado
  • Localidade:ABC / SP

Posted 18/01/2005, 16:37

E aí galera esse é o meu primeiro tópico. Estou com problema em uma soma de valores e gostaria que alguém me ajudasse, vamos lá.

Tenho um banco com dois campos (Campo1 e Campo2). O que eu quero fazer é somar 3 linhas do Campo2 mas com a condição do Campo1.
Exemplo:
Campo1        Campo2
    1                10
    2                15
    3                20
    4                25

O que eu queria era somar 1, 3 e 4 mas os valores do Campo2 e o resultado seria 55.

Vou colocar o código que estou usando:

strSQLCampo2 = "SELECT COUNT * FROM tabela Campo1=1 AND Campo1=3 AND Campo1=4"

Set rsSQLCampo1=Conexao.Execute(strSQLCampo1)
if not rsSQLCampo1.eof then
v_Campo1=rsSQLCampo1("Campo2")
end if

response.write v_campo1

O que eu quero é que a variável v_Campo1 receba o valor de 55 o IF é para o caso dos valores serem "zero".

Valeu Galera.

Edit: Galera eu queria resolver este problema sem ter que jogar os valores em variáveis para depois somar.

SELECT SUM(Campo2) AS Soma FROM Tabela WHERE Campo1 IN (1, 3, 4)
(y)
MCAD, MCP

#3 xursinix

xursinix

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Não informado

Posted 18/01/2005, 16:46

Fiz as alterações conforme você mencionou e deu este erro:

O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado. :(

Edit: Esqueci de colocar "AS Soma", obrigado deu certo agora. :D

Edição feita por: xursinix, 18/01/2005, 16:50.


#4 xursinix

xursinix

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Não informado

Posted 19/01/2005, 09:59

Consegui fazer funcionar mas agora está dando problema na formatação de alguns valores.

O Campo1 é variável então quando eu faço uma soma em que o valor das variáveis não existem quando eu peço para visualizar o resultado na tela (que deveria ser "zero" ou ele retorna nulo, nesse caso como eu faço para resolver) ele mostra a mensagem Tipos incompatíveis: 'FormatCurrency'.

Usando o mesmo exemplo abaixo:
Campo1 Campo2
1 10
2 15
3 20
4 25

Se eu pedir para Somar Campo1 IN (5, 10, 14) acredito que retorna o valor "zero"
quando eu colocar:

response.write FormatCurrency(v_campo1,2) deveria aparecer 0,00.

Quando os valores de Campo1 existem ele funciona.

Edição feita por: xursinix, 19/01/2005, 11:00.


#5 felipecm

felipecm

    Expert

  • Usuários
  • 541 posts
  • Sexo:Não informado
  • Localidade:ABC / SP

Posted 19/01/2005, 11:48

Consegui fazer funcionar mas agora está dando problema na formatação de alguns valores.

O Campo1 é variável então quando eu faço uma soma em que o valor das variáveis não existem quando eu peço para visualizar o resultado na tela (que deveria ser "zero" ou ele retorna nulo, nesse caso como eu faço para resolver) ele mostra a mensagem Tipos incompatíveis: 'FormatCurrency'.

Usando o mesmo exemplo abaixo:
Campo1        Campo2
    1                10
    2                15
    3                20
    4                25

Se eu pedir para Somar Campo1 IN (5, 10, 14) acredito que retorna o valor "zero"
quando eu colocar:

response.write FormatCurrency(v_campo1,2) deveria aparecer 0,00.

Quando os valores de Campo1 existem ele funciona.

Faz o tratamento do nulo e converte para CCur/CDbl:

If  IsNull(rsSQLCampo("Soma")) Then 
  ValorFinal = 0
Else
  ValorFinal = CDbl(rsSQLCampo("Soma"))
End If

Response.Write FormatCurrency(ValorFinal, 2)

Sempre que seu code apresentar problemas de tipo incompativel é pq ele está tentando utiilizar uma variavel com tipo diferente do necessario (por exemplo uma string (teste) convertendo para Currency).

Nesses casos trate SEMPRE o valor nulo vindo da base e converta o retorno do Recordset no formato especifico, para não haver problemas com Tipos.
MCAD, MCP

#6 xursinix

xursinix

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Não informado

Posted 19/01/2005, 18:39

:D Deu certo e obrigado mais uma vez o único problema é que eu tive que alterar o código :( pois tem mais de 100 variáveis.

#7 xursinix

xursinix

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Não informado

Posted 20/01/2005, 09:55

Tenho outra dúvida sobre soma agora, no exemplo que você deu:

SELECT SUM(Campo2) AS Soma FROM Tabela WHERE Campo1 IN (1, 3, 4)


Estou somando 3 valores de linhas, mas e se no lugar das linhas agora eu queira somar valores de 3 colunas, como fica a função??

Se eu colocar

SELECT SUM(Var1,Var2,Var3) AS Soma FROM Tabela Where Linha1

Será que funciona?

#8 felipecm

felipecm

    Expert

  • Usuários
  • 541 posts
  • Sexo:Não informado
  • Localidade:ABC / SP

Posted 20/01/2005, 10:36

Tenho outra dúvida sobre soma agora, no exemplo que você deu:

SELECT SUM(Campo2) AS Soma FROM Tabela WHERE Campo1 IN (1, 3, 4)


Estou somando 3 valores de linhas, mas e se no lugar das linhas agora eu queira somar valores de 3 colunas, como fica a função??

Se eu colocar

SELECT SUM(Var1,Var2,Var3) AS Soma FROM Tabela Where Linha1

Será que funciona?

Dai seria algo assim:

SELECT (Campo1+Campo2+Campo3) AS Soma FROM Tabela

MCAD, MCP

#9 xursinix

xursinix

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Não informado

Posted 20/01/2005, 14:41

Cara obrigado pela ajuda que você está dando mas o comando não está funcionando.

SELECT (Campo1+Campo2+Campo3) AS Soma FROM Tabela

Campo1, Campo2 e Campo3 são variáveis e a resposta para todas as bucas que estou fazendo está dando:
Campo1Campo2Campo3.

Ou seja está concatenando em vez de atribuir o conteúdo da variável como Coluna.

Edit: E se eu coloco os valores da coluna ele assume como valor e não como coluna e soma esses valores em vez de somar o conteúdo da coluna.

Edição feita por: xursinix, 20/01/2005, 14:46.


#10 felipecm

felipecm

    Expert

  • Usuários
  • 541 posts
  • Sexo:Não informado
  • Localidade:ABC / SP

Posted 20/01/2005, 14:47

Cara obrigado pela ajuda que você está dando mas o comando não está funcionando.

SELECT (Campo1+Campo2+Campo3) AS Soma FROM Tabela

Campo1, Campo2 e Campo3 são variáveis e a resposta para todas as bucas que estou fazendo está dando:
Campo1Campo2Campo3.

Ou seja está concatenando em vez de atribuir o conteúdo da variável como Coluna.

SELECT Convert(decimal, Campo1)+Convert(decimal, Campo2)+Convert(decimal, Campo3) AS Soma FROM Tabela
(y)

Talvez funcione com Convert(), entao vc adapte o tipo q vc quer que converta (int, float, decimal, etc).
MCAD, MCP

#11 xursinix

xursinix

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Não informado

Posted 20/01/2005, 14:58

Ele não está concatenando o counteúdo do Campo, ele está concatenando o campo. Deixa eu te dar um exemplo para ficar mais fácil de entender.


1991 1992 1993 1994 1995
1 0 7 8 9

Eu precisa fazer o seguinte, os números que começam com 199 são os nomes da coluna que são jogados em 3 variáveis, Campo1, Campo2 e Campo3.

Eu queria somar estas columas conforme os valores entre 1991 a 1995.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq